B
    b                  @   s   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
Z
d edfdedffZG d	d
 d
ejZG dd deZG dd deZG dd dejZG dd deZdS )    )gettext_lazy)formsZKModelAction)ActionHandleError)constNZboolean_option_no   Zboolean_option_yesc               @   s`   e Zd ZejedejedfejedffejdZ	ejedde
dZejedd	d
ZdS )BioPhotoApproveFormZbioPhoto_field_approvalStateZ%bioPhoto_approvalState_approvalPassedZbioPhoto_approvalState_reject)labelchoicesinitialdataImport_field_overwriter   )r	   r   r
   ZbioPhoto_field_remarkF)r	   requiredN)__name__
__module____qualname__r   ChoiceField_r   APPROVAL_PASSEDZAPPROVAL_REJECTEDstateBOOLEANS	overwriteZ	CharFieldremark r   r   ?G:\easytimepro\master/mysite/iclock\actions\biophoto_actions.pyr      s   

r   c               @   s4   e Zd ZdZedZedZedZeZ	dd Z
dS )BioPhotoApproveTZbiophoto_approvec       !      C   s  dd l }dd l}dd l}ddlm} ddlm} ddlm}	 ddl	m
}
 ddlm} ddlm} | jjtjd}|rttd	|d
}t|}|d}g }|
jj| jjjdj}x,| jD ] }|jj}|jtjtjfkrttdd|i |	jj|jtjtjfd}|rht|tjkrh|s<ttdd|i n,|d}y|   W n t!k
rf   Y nX |j"#|||j$}|j"%|sttdd|i t|tjkrd&|j' |_(|)  |*||j+|j' f qW t|tjkrx|D ]\}}}t,j-.|}|/||j"#||d&| |d}|j"#||d&|}|j"%|s|0|}|j1\}}|dkr|dkr|2d}|)| y|3| W n$ t!k
r }  zW d d } ~ X Y nX qW | jj4||j5 t6|d d S )Nr   )Image)get_or_create_folder)BioPhoto)Company)	getDevice)zk_delete_data)Zapproval_state__gtZapproval_can_not_approve_againZbiophotoregister)idz-photo_of_%(emp_code)s_already_approval_passedemp_code)employeeapproval_state__inz#photo_of_%(emp_code)s_already_existz"photo_of_%(emp_code)s_is_not_foundz{0}.jpgphotoi@     )i@  r'   )approval_stateZapproval_timer   )7osshutildatetimeZPILr   mysite.utilsr   Zmysite.iclock.modelsr   Zmysite.cloud.modelsr   Zmysite.iclock.utilsr   Zmysite.core.zkcmdprocr    objectsfilterr   ZAPPROVAL_PENDINGr   r   intgetrequestusercurrent_companyZhex_idr$   r#   r(   r   ZAPPROVAL_AUTO_APPROVEDdelete	ExceptionpathjoinZregister_photoisfileformatpinZapproval_photoZsaveappend	enroll_snurllibparseZ
quote_pluscopyopensizeZresizeremoveupdateZnowstr)!selfr   r   r   r)   r*   r+   r   r   r   r   r   r    tmpZbiophoto_pathZ
store_path
company_idobjr#   Z
old_photosZrppfnr<   r:   Zencoded_pinZphoto_store_dirZuser_photo_pathZimgZimg_wZimg_hZ	small_imger   r   r   action"   sn    



zBioPhotoApprove.actionN)r   r   r   Zbatch_selectr   verbose_namehelp_txtshort_descriptionr   action_formrL   r   r   r   r   r      s   r   c               @   s,   e Zd ZedZedZedZdd ZdS )BioPhotoQRCodeZbioPhoto_action_qrCodec             O   s   d S )Nr   )rE   argskwargsr   r   r   rL   q   s    zBioPhotoQRCode.actionN)r   r   r   r   rM   rN   rO   rL   r   r   r   r   rQ   l   s   rQ   c               @   sX   e Zd ZejededddZejeddedZ	ejeddedZ
ejdd	Zd
S )ImportBioPhotoFormZdataImport_field_fileZdata_import_fileHelpTxtF)r	   Z	help_textr   r   r   )r	   r   r
   ZdataImport_field_ignoreError)r   N)r   r   r   r   Z	FileFieldr   	bio_photor   r   r   ignore_errorZ	TextFielddelete_filesr   r   r   r   rT   u   s
   rT   c               @   s0   e Zd ZedZedZedZeZdd Z	dS )ImportBioPhotoZ dataImport_action_importBioPhotoZ'dataImport_action_importBioPhotoHelpTxtZ+dataImport_action_importBioPhotoDescriptionc                sB  dd l }ddlm} ddlm} ddlm m} ddlm	} ddl
m} ddlm}	 | jjdkr>| jjd	}
x0|
D ](}|jd
d }|dkrv|	tdqvW | jjd }|r||}t|dd}t|dd}dd |D }g } fdd|
D }x"|D ]}||kr|| qW |jj|| jjjdjddd}t|dkr^|tdt |t t!| }|s|r|tdj"d#|d|d| jjjd}x|
D ]} |jd
dd }||krؐq||kr|jj||| jjjd$ }|r|j%jdd sd}|j|kr||||||d! qW d S )"Nr   )r   )Employee)	devicePIN	formatPIN)save_bio_photo)get_comm_setting)AdminRuntimeWarningPOSTrU   .r   )ZjpgZjpegZpngZbmpZempPhoto_format_errorrW   r   rV   c             S   s   g | ]}| d d qS )r`   r   )split).0Zimager   r   r   
<listcomp>   s    z)ImportBioPhoto.action.<locals>.<listcomp>c                s"   g | ]} |j d dd qS )r`   r   r   )namersplit)rb   r&   )rZ   r   r   rc      s    )Zemp_code__inrG   r#   T)ZflatZ$bioPhotoImport_error_noPhotoSelectedz&bioPhotoImport_error_userNoFound_{pin},)r:   Zimport_policy)rG   )r#   rG   )r      )r%   )r   rV   )&jsonmysite.admin.actionr   Zmysite.personnel.modelsrY   Zmysite.personnel.utilsrZ   r[   r,   r\   Zmysite.iclock.comm.utilsr]   Zmysite.admin.exceptionsr^   r1   methodZFILESZgetlistrd   re   r   r_   loadsr/   r0   rB   r-   r.   r2   r3   Zvalues_listlensetlistr9   r7   firstZbiophoto_set)rE   rR   rS   rh   r   rY   r[   r\   r]   r^   photosr&   Zfile_extensionZdeleted_imagesr   rV   Zdeleted_image_namesZpinsZimagesZexists_pinsZ
extra_pinsr(   r:   Zempr   )rZ   r   rL      sT    






zImportBioPhoto.actionN)
r   r   r   r   rM   rN   rO   rT   rP   rL   r   r   r   r   rX   }   s
   rX   )Zdjango.utils.translationr   r   Zmysite.adminr   r   ri   r   Zmysite.iclockr   r=   r   ZZKActionFormr   r   rQ   rT   rX   r   r   r   r   <module>   s   
	Q	