o
    Ah                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ ddlm	Z	m
Z
mZmZ ddlmZ ee	G dd	 d	ejZee
G d
d dejZG dd dejZeeG dd dejZeeG dd dejZdS )    )admin)format_html)reverse)F   )	EventTypeEventRegistrationPaymentProof)send_registration_emailc                   @   s   e Zd ZdZdZdZdS )EventTypeAdmin)namedescription
created_at
updated_at)r   r   )r   N)__name__
__module____qualname__list_displaysearch_fieldslist_filter r   r   1/var/www/html/smartRegister/registration/admin.pyr   	   s    r   c                   @   sD   e Zd ZdZdZdZdZdgZdddifd	dd
ifdddiffZdS )
EventAdmin)
r   
event_type
start_dateend_datelocationis_paidamount	is_activeis_archivedr   )r   r   r    r!   r   )r   r   r   r   r   zEvent Informationfields)r   r   r   r    r!   Schedule)r   r   r   Payment)r   r   N)	r   r   r   r   r   r   date_hierarchyautocomplete_fields	fieldsetsr   r   r   r   r      s     r   c                   @   s   e Zd ZeZdZdZdZdS )PaymentProofInliner   uploaded_atFN)r   r   r   r
   modelextrareadonly_fields
can_deleter   r   r   r   r(   %   s
    r(   c                   @   s   e Zd ZdZdZdZdZdZegZ	g dZ
dddifd	dd
ifdddifdddifdddiffZdd Zde_dd Zde_dd Zde_dd Zde_dd Zde_d S )!RegistrationAdmin)	registration_code	full_nameemailorganisation
event_linkstatuspayment_statushas_attendedregistered_at)r5   r6   r7   eventr3   r8   )r0   r1   r2   r3   )r0   r8   r   attendance_timestampr8   )approve_registrationsapprove_paymentsreject_registrationsreject_paymentszParticipant Informationr"   zEvent Details)r9   zStatus Information)r5   r6   zAttendance Information)r7   r:   
Timestamps)r8   r   c                 C   s"   t d|jjgd}td||jjS )Nzadmin:registration_event_change)argsz<a href="{}">{}</a>)r   r9   idr   r   )selfobjurlr   r   r   r4   I   s   zRegistrationAdmin.event_linkr   c                 C   s   t |jddjddd}|jdd tjj|d}|D ]0}zt||jdkd W q tyL } z| j	|d	|j
 d
t| dd W Y d }~qd }~ww | 	||  d|  d d S )Npendingr5   rA   Tflatapprovedid__inpayment_pendingError sending email to : ERRORlevelz? registrations have been approved. Notification emails sent to z participants.)listfiltervalues_listupdater	   objectsr   r6   	Exceptionmessage_userr2   strcount)rB   requestquerysetpending_registrationsnewly_approvedregistrationer   r   r   r;   N   s   .$z'RegistrationAdmin.approve_registrationszApprove selected registrationsc                 C   s&   |j dd | ||  d d S )NrejectedrF   z" registrations have been rejected.)rV   rY   r[   )rB   r\   r]   r   r   r   r=   `   s   z&RegistrationAdmin.reject_registrationszReject selected registrationsc                 C   s   t |jddjddd}|jddjddd tjj|d}|D ]-}zt|d	d
 W q! tyN } z| j|d|j	 dt
| dd W Y d }~q!d }~ww | |t| d d S )NrE   r6   rA   TrG   rI   )r6   r5   rJ   FrL   rN   rO   rP   rQ   zP payments have been approved. Notification emails sent to approved participants.)rS   rT   rU   rV   r	   rW   r   rX   rY   r2   rZ   len)rB   r\   r]   registrations_with_paymentr_   r`   ra   r   r   r   r<   e   s   .z"RegistrationAdmin.approve_paymentsz*Approve payment for selected registrationsc                 C   s2   |j dd}|jdd | ||  d d S )NrE   rc   rb   z payments have been rejected.)rT   rV   rY   r[   )rB   r\   r]   re   r   r   r   r>   w   s   z!RegistrationAdmin.reject_paymentsz)Reject payment for selected registrationsN)r   r   r   r   r   r   r-   r%   r(   inlinesactionsr'   r4   short_descriptionr;   r=   r<   r>   r   r   r   r   r/   ,   sD    
r/   c                   @   s&   e Zd ZdZdZdZdd Zde_dS )PaymentProofAdmin)r`   file_previewr*   )registration__full_nameregistration__emailregistration__registration_coder)   c                 C   s   t d|jjS )Nz3<a href="{}" target="_blank">View Payment Proof</a>)r   filerD   )rB   rC   r   r   r   rj      s   zPaymentProofAdmin.file_previewzPayment ProofN)r   r   r   r   r   r-   rj   rh   r   r   r   r   ri   ~   s    
ri   N)django.contribr   django.utils.htmlr   django.urlsr   django.db.modelsr   modelsr   r   r	   r
   viewsr   register
ModelAdminr   r   StackedInliner(   r/   ri   r   r   r   r   <module>   s    Q