o
    bg$                     @   sz   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mZ ddlmZ d dlmZ G d	d
 d
ejZdS )    )forms)FileExtensionValidator)gettext_lazy)
FormHelper)LayoutFieldsetDivSubmitHTML   )
Membership)timezonec                       s`   e Zd Zg dZejeejddddZG dd dZ fdd	Z	d
d Z
dd Zdd Z  ZS )MembershipForm))fullzFull Member - K600 per year)	associatez Associate Member - K300 per year)studentzStudent Member - K200 per year)honoraryzHonorary Member - K200 per yearTMembership Typez)Select your preferred membership category)choiceswidgetrequiredlabel	help_textc                   @   s   e Zd ZeZg dZddiZg dZededededed	ed
dZ	e
jddide
jdddde
jddide
jddide
jejddZdS )zMembershipForm.Meta)membership_type
first_name	last_nameemailphone_numberdate_of_birthnationality
nrc_numbernrc_fileresidential_addresspostal_address
occupationemployerhighest_qualificationfield_of_studyinstitutiongraduation_yearprofile_picturecvr    z
ID Number*)
usermembership_statusmembership_feemembership_valid_untilpayment_proofpayment_verifiedpayment_verified_atpayment_verified_by
created_at
updated_atz(Enter your NRC number or Passport numberCUpload a scanned copy of your NRC or Passport (PDF, JPG - Max: 5MB)Your current job title or role-Name of your current employer or organizationzA recent passport-sized photoz0Your current curriculum vitae (CV) in PDF format)r    r!   r$   r%   r*   r+   typedate)attrsi  i  )minmaxrows   )r   )r   r)   r"   r#   r&   N)__name__
__module____qualname__r   modelfieldslabelsexclude_
help_textsr   	DateInputNumberInputTextareaSelectQUALIFICATION_CHOICESwidgets rO   rO   %/var/www/html/gwz/membership/forms.pyMeta   s&    	
rQ   c                    s2  t  j|i | | jd jjddi | jd jjddi | jd jjddi | jd jjdd	i | jd
 jjddi | jd jjddi | jd jjddi | jd jjddi | jd jjddi | jd jjddi | jd jjddi | jd jjddi | jd jjddi d| jd _d| jd _d | jd! _| jd jt	g d"d# | jd jt	g d$d# | jd! jt	g d%d# | jD ]}|d&krd'| j| jjd(< qt
 | _d)| j_d*| j_d+| j_d,| j_ttd-d&d.d/td0ttdd1d/tdd1d/d2d/ttdd1d/tdd1d/d2d/ttd3d1d/td
d1d/d2d/dd!ddd.d/	td4ttdd1d/tdd1d/d2d/d.d/td5ttd6d1d/tdd1d/d2d/ttdd1d/tdd1d/d2d/d.d/td7ttdd1d/tdd1d/d2d/d.d/ttd8d9d:d/d;d/| j_d S )<Nr   placeholderzEnter your first namer   zEnter your last namer   zEnter your email addressr   zEnter your phone numberr   zEnter your nationalityr    z!Enter your NRC or Passport numberr"   zEnter your residential addressr#   zEnter your postal addressr$   r7   r%   r8   r'   zYour field of studyr(   zName of your institutionr)   zYear of graduationz:Upload a recent passport-sized photo (JPG, PNG - Max: 5MB)r*   z-Upload your current CV (PDF, DOC - Max: 10MB)r+   r6   r!   )jpgjpegpng)allowed_extensions)pdfdocdocx)rW   rS   rT   rU   r   zform-controlclassTzform-horizontalzcol-lg-3zcol-lg-9r   zmb-4)	css_classzPersonal Informationzcol-md-6rowr   zProfessional InformationzEducational Backgroundr&   zRequired DocumentssubmitzSubmit Applicationzbtn-primary btn-lgzd-grid gap-2)super__init__rD   r   r;   updater   
validatorsappendr   r   helperform_tag
form_classlabel_classfield_classr   r   r   r	   layout)selfargskwargsfield	__class__rO   rP   r_   F   s   








	





	zMembershipForm.__init__c                 C   b   | j d}| jjrtjj|dj| jjd}ntjj|d}| r/|	 j
dkr/td|S )z<Validate that email is unique for non-rejected applications.r   )r   pkrejectedz8A membership application with this email already exists.cleaned_datagetinstancerq   r   objectsfilterrF   existsfirstr-   r   ValidationError)ri   r   existingrO   rO   rP   clean_email      
zMembershipForm.clean_emailc                 C   ro   )zCValidate that NRC/Passport is unique for non-rejected applications.r    )r    rp   rr   zFA membership application with this NRC/Passport number already exists.rs   )ri   nrcr|   rO   rO   rP   clean_nrc_number   r~   zMembershipForm.clean_nrc_numberc                 C   sV   | j d}|r)t  }|j|j |j|jf|j|jfk  }|dk r)t	d|S )z.Validate that member is at least 18 years old.r      z:You must be at least 18 years old to apply for membership.)
rt   ru   r   nowr:   yearmonthdayr   r{   )ri   dobtodayagerO   rO   rP   clean_date_of_birth   s   $
z"MembershipForm.clean_date_of_birth)r@   rA   rB   MEMBERSHIP_CHOICESr   ChoiceFieldRadioSelectr   rQ   r_   r}   r   r   __classcell__rO   rO   rm   rP   r   	   s    -pr   N)djangor   django.core.validatorsr   django.utils.translationr   rG   crispy_forms.helperr   crispy_forms.layoutr   r   r   r	   r
   modelsr   django.utilsr   	ModelFormr   rO   rO   rO   rP   <module>   s    