
    si                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ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mZ d dlmZmZ g dZg dZd Z G d de      Z eeej8                  j:                        d        Z G d de      Zy)    N)date)apps)models)m2m_changed	post_save)receiver)ValidationError)gettext)HorillaCompanyManager)Employee)HorillaModelupload_path))	requested	Requested)approvedApproved)rejectedRejected))anyAny)pdfPDF)txtTXT)docxDOCX)xlsxXLSX)jpgJPG)pngPNG)jpegJPEGc                     | j                   j                         }|D ]]  }t        j                  j	                  || dd| j
                   i      }d| j
                   |d   _        |d   j                          _ y )NtitlezUpload )employee_iddocument_request_iddefaultsr   )r'   allDocumentobjectsget_or_creater&   save)instance	employeesemployeedocuments       </var/www/python-projects/worksol/horilla_documents/models.pydocument_creater4       s    $$((*I ##11  ((89: 2 

 &hnn%56    c                   B   e Zd Z ej                  d ed            Z ej                  e ed            Z	 ej                  e
d ed            Z ej                  d	d	 ed
            Z ej                  d	d	 ed            Z ed      Z G d d      Zd Zy)DocumentRequestd   Title)
max_lengthverbose_name	Employees)r;   
   Format)choicesr:   r;   TzMax size (In MB))blanknullr;   Description+employee_id__employee_work_info__company_idrelated_company_fieldc                   0    e Zd ZdZ ed      Z ed      Zy)DocumentRequest.Meta6
        Meta class to add additional options
        zDocument RequestzDocument RequestsN__name__
__module____qualname____doc___r;   verbose_name_plural r5   r3   MetarG   8   s     	 +, 34r5   rQ   c                     | j                   S Nr&   selfs    r3   __str__zDocumentRequest.__str__@   s    zzr5   N)rJ   rK   rL   r   	CharFieldrN   r&   ManyToManyFieldr   r'   FORMATSformatIntegerFieldmax_size	TextFielddescriptionr   r,   rQ   rW   rP   r5   r3   r7   r7   ,   s    F!G*EE(&((+OKVg"1X;WF"v""A.@,AH #&""DqGWXK#KG5 5r5   r7   )senderc                 H    |dk(  rt        |       y |dk(  rt        |       y y )Npost_addpost_remove)r4   )r`   r/   actionkwargss       r3   document_request_m2m_changedrf   D   s'    !	=	 ! 
!r5   c                       e Zd Z ej                  d      Z ej                  eej                   e	d            Z
 ej                  eej                  d      Z ej                  ed e	d             Z ej                  edd	 e	d
            Z ej$                  ddd e	d            Z ej(                  dd e	d            Z ej(                  dd e	d            Z ej.                  dd e	d            Z ej2                  d e	d            Z ed      Z G d d      ZdefdZ fdZ  fdZ!d  Z" xZ#S )!r+      )r:   r   )	on_deleter;   T)ri   rA   )	upload_torA   r;   r=   r   Status)r?   r:   defaultr;      zReject Reason)r@   rA   r:   r;   z
Issue Date)rA   r@   r;   zExpiry Date   zNotify Before)rl   rA   r;   FzIs Digital Asset)rl   r;   rC   rD   c                   0    e Zd ZdZ ed      Z ed      Zy)Document.MetarH   r+   	DocumentsNrI   rP   r5   r3   rQ   rp   j   s    	 }nr5   rQ   returnc                     | j                    S rS   rT   rU   s    r3   rW   zDocument.__str__r   s    **r5   c                 "   t        |   |i | | j                  }t        | j                        dk  rt        dt        d      i      |r| j                  r| j                  j                  }| j                  j                  }|r+|j                  |dz  dz  kD  rt        dt        d      i      |j                  j                  d      d   j                         }|d	k(  ry ||k7  r%t        dt        d
      j                  |      i      y y y )N   r&   z#Title must be at least 3 charactersi   r2   zFile size exceeds the limit.rn   r   zPlease upload {} file only.)supercleanr2   lenr&   r	   rN   r(   r[   r]   sizenamesplitlower)rV   argsre   filer[   r]   ext	__class__s          r3   rx   zDocument.cleanu   s   t&v&}}tzz?Q!7A.S,T"UVVD,,--44F//88H99x$55)#Q'D%EF  ))//#&q)//1C%#@!A!H!H!PQ   -4r5   c                 x   t        |   |i | | j                  rt        j                  d      rddlm}m} |j                  j                  d      }|j                  j                  | j                  t        j                         |d   dd| j                  | j                  d| j                           y y y )	Nassetr   )AssetAssetCategoryzDigital Asset)asset_category_namezNot-AvailableDIG_ID0)
asset_nameasset_purchase_dateasset_category_idasset_statusasset_purchase_costexpiry_datenotify_beforeasset_tracking_id)rw   r.   is_digital_assetr   is_installedasset.modelsr   r   r,   r-   creater&   r   todayr   r   pk)rV   r~   re   r   r   asset_categoryr   s         r3   r.   zDocument.save   s    d%f%    )=!.!6!6!D!D(7 "E " $$#zz(,

&4Q&7!0() $ 0 0"&"4"4(/y&9 % 	 * !r5   c                     t         j                  j                  | j                        }|j                  d      j	                         }|j	                         |z
  }|S )N)r(    )r2   )r+   r,   filterr(   count)rV   total_requestswithout_documentsr   s       r3   upload_documents_countzDocument.upload_documents_count   s^    !))00 $ 8 8 1 
 +1121>DDF$$&)::r5   )$rJ   rK   rL   r   rX   r&   
ForeignKeyr   PROTECTrN   r'   r7   r(   	FileFieldr   r2   STATUSstatusr^   reject_reason	DateField
issue_dater   r\   r   BooleanFieldr   r   r,   rQ   strrW   rx   r.   r   __classcell__)r   s   @r3   r+   r+   M   sa   F,E#&##FNN:K ,&++6>>  vDq}H V2{8F %F$$#Ao<NM "!!t4aoVJ"&""DqGWXK'F''1_+=M +v**A&8$9 $KG- - 0*r5   r+   ) osdatetimer   django.appsr   	django.dbr   django.db.models.signalsr   r   django.dispatchr   django.formsr	   django.utils.translationr
   rN   base.horilla_company_managerr   employee.modelsr   horilla.modelsr   r   r   rZ   r4   r7   r'   throughrf   r+   rP   r5   r3   <module>r      s{    	    ; $ ( 1 > $ 4

		l 0 
+o99AAB" C"[| [r5   