o
    hT                     @   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	 d dl
Z
dd Zd	d
 ZG dd dejZG dd dejZdS )    )models)settings)reverse)timezone)ValidationErrorNc                 C   s   d| j j d| j d| S )z*Generate file path for application uploadszapplications//)jobid)instancefilename r   '/var/www/html/ictaz-jobs/jobs/models.pyapplication_file_path	   s   r   c                 C   s.   | j  dstd| jdkrtddS )z$Validate that uploaded file is a PDFz.pdfzFile must be in PDF format.i   zFile size cannot exceed 10MB.N)namelowerendswithr   size)filer   r   r   validate_pdf_file   s
   
r   c                   @   s   e Zd ZdZg dZejddZe Z	e Z
ejddZe ZejejejddZejdedd	Zejd
ddZejdg ddd	Zejdg ddd	ZejddZejddZG dd dZdd Zdd Zedd Zedd ZdS )
JobPostingzJob posting model))draftDraft)	published	Published)closedClosed)archivedArchived   
max_lengthjob_postings	on_deleterelated_name   r   )r    choicesdefaultd   T)r    blank2   ))	full_timez	Full Time)	part_timez	Part Time)contractContract)
internship
Internshipr+   ))entryzEntry Level)midz	Mid Level)seniorzSenior Level)	executive	Executiver2   auto_now_add)auto_nowc                   @   s<   e Zd ZdgZejddgdejdgdejdgdgZdS )zJobPosting.Metaz-created_atstatusapplication_deadlinefields	posted_by
created_atN)__name__
__module____qualname__orderingr   Indexindexesr   r   r   r   MetaK   s    rE   c                 C   s   | j S N)titleselfr   r   r   __str__S   s   zJobPosting.__str__c                 C      t dd| jidS )Nzjobs:job_detailpkkwargsr   rL   rH   r   r   r   get_absolute_urlV      zJobPosting.get_absolute_urlc                 C   s    | j dko| j t  kS )Nr   )r9   r:   dater   nowrH   r   r   r   	is_activeY   s   
zJobPosting.is_activec                 C   s
   | j  S rF   )applicationscountrH   r   r   r   application_count^      
zJobPosting.application_countN)r?   r@   rA   __doc__STATUS_CHOICESr   	CharFieldrG   	TextFielddescriptionrequirementslocationDateTimeFieldr:   
ForeignKeyr   AUTH_USER_MODELCASCADEr=   r9   salary_rangeemployment_typeexperience_levelr>   
updated_atrE   rJ   rP   propertyrT   rW   r   r   r   r   r      sL    

r   c                       s   e Zd ZdZejeejddZej	ddZ
e Zej	ddZej	ddZejejejddZe ZejedZejd	d
egdZejeddZejddZejddZG dd dZdd Zdd Ze dd Z! fddZ"  Z#S )Applicationz:Job application model - simplified without status trackingrU   r"   r   r   r%   r*   )	upload_tozapplications/certificates/z?Upload your ICTAZ membership certificate (PDF format, max 10MB))rj   	help_text
validatorszGUpload additional documents (NRC, Degree Results, etc.) as a single PDF)rj   rk   Tr6   )r)   c                   @   sN   e Zd ZdgZejdgdejdgdejdgdejdgdgZddgZdS )zApplication.Metasubmitted_atr   r;   applicant_emailmembership_numberuserN)r?   r@   rA   rB   r   rC   rD   unique_togetherr   r   r   r   rE      s    rE   c                 C   s   | j  d| jj S )Nz - )applicant_namer   rG   rH   r   r   r   rJ      s   zApplication.__str__c                 C   rK   )Nzjobs:application_detailrL   rM   rO   rH   r   r   r   rP      rQ   zApplication.get_absolute_urlc                 C   s
   t | jS rF   )boolro   rH   r   r   r   	is_member   rX   zApplication.is_memberc                    s   | j rtj| j jrt| j j | jr$tj| jjr$t| jj | jr6tj| jjr6t| jj t j|i | dS )z3Delete associated files when application is deletedN)	resumeospathisfileremoveictaz_certificateadditional_documentssuperdelete)rI   argsrN   	__class__r   r   r}      s   zApplication.delete)$r?   r@   rA   rY   r   ra   r   rc   r   r[   rr   
EmailFieldrn   applicant_phonero   r   rb   rp   r\   cover_letter	FileFieldr   ru   r   rz   r{   r`   rm   admin_notesrE   rJ   rP   rh   rt   r}   __classcell__r   r   r   r   ri   c   sF    

ri   )	django.dbr   django.confr   django.urlsr   django.utilsr   django.core.exceptionsr   rv   r   r   Modelr   ri   r   r   r   r   <module>   s    M