B
    g.c#                 @   s4  d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 e	j
dddd	 Zd
d Ze	j
dddd.ddZe	j
ddd/ddZe	j
ddd0ddZe	j
ddddd Ze	j
ddddd Ze	j
ddddd  Ze	j
dd!dd"d# Zeed$d d%d&d'd(d) Zeed*d d%d+d'd,d- ZdS )1    N)settings)periodic_task)crontab)
celery_appT)bindc             C   s*   ddl m} |||||d}||  d S )Nr   )ImportDeptData)
input_name	app_label
model_name)Z'mysite.personnel.admin.department_adminr   run)taskkeyr   r	   r
   r   Z
obj_import r   /G:\easytimepro\master/mysite/personnel\tasks.pydept_data_import   s    r   c             C   s`   ddl m} ddlm}m} ddlm} d| j}|j	j
| d||gd }|||d |S )	zD
    this function only use for area admin display firger count
    r   )cache)STATUS_VALIDSTATUS_RESIGN_PENDING)BioDatazarea_finger_{}   )Zemployee__areaZbio_typeZemployee__status__in<   )Zdjango.core.cacher   mysite.admin.modelsr   r   Zmysite.iclock.modelsr   formatidobjectsfiltercountset)Zarea_objr   r   r   r   Z	cache_keyZfinger_countr   r   r   cal_area_finger   s    
r   zpsnl.tasks.remove_user_photo)r   name c             C   sZ   ddl m} tj|jjd|d|}tj|sBdj||dS t	| dj||dS )Nr   )db_constZphotoz{}.jpgz#{company_id}/{pin} photo not found.)
company_idpinz{company_id}/{pin} photo remove)
mysite.personnelr!   ospathjoinPHOTO_STORAGElocationr   existsremove)r   emp_coder"   r!   Z
store_pathr   r   r   remove_user_photo$   s    
r-   zpsnl.tasks.remove_user_biophoto)r   c             C   sZ   ddl m} tj|jjd|d| }tj|sBdj|| dS t	| dj|| dS )Nr   )r!   Zbiophotoz{}.jpgz'{company_id}/{pin} bio-photo not found.)r"   r#   z#{company_id}/{pin} bio-photo remove)
r$   r!   r%   r&   r'   r(   r)   r   r*   r+   )r,   r"   r!   Zbiophoto_pathr   r   r   remove_user_biophoto.   s    
r.   z psnl.tasks.employee_area_migratec             C   s   dd l }ddlm} ddlm}m} t|t| }|rp|jjddj	|d}	| 
 }
x|	D ]}|||
d q\W |r|j  | _d| _|   d S )	Nr   )Terminal)zk_delete_datazk_set_dataT)area__is_default)Zarea__pk__inuserr    )datetime#mysite.iclock.models.model_terminalr/   mysite.core.zkcmdprocr0   r1   r   r   excluder   r#   nowZupdate_timeZ	enroll_snsave)empZpreZcurZsyncr4   r/   r0   r1   Ztake_outremove_devsr#   devr   r   r   employee_area_migrate8   s    
r=   z$psnl.tasks.remove_employee_form_areac             C   sT   ddl m} ddlm} |jjddj|d}| }x|D ]}|||d q<W d S )Nr   )r/   )r0   T)r2   )Zarea_id__inr3   )r5   r/   r6   r0   r   r7   r   r#   )r   r:   Zarear/   r0   r;   r#   r<   r   r   r   remove_employee_form_areaJ   s    
r>   zpsnl.tasks.backup_user_photoc       	      C   s   ddl m} ddlm} yndjtj|d}tj	|r| }|sDd S |
dd }|r`tj|sdd S tj|dj|d}||| W n$ tk
r   dd l}|  Y nX d S )	Nr   )	copy_file)get_auxiliary_settingz{root}/photo/{pin}.jpg)rootr#   
photo_pathz{file}_bak.jpg)file)Zmysite.personnel.utilsr?   mysite.utilsr@   r   r   ZADDITION_FILE_ROOTr%   r&   isfilegetisdirr'   	Exception	traceback	print_exc)	r   r,   r?   r@   ZsrcfileZauxiliary_settingrB   ZdstfilerI   r   r   r   backup_user_photoT   s     rK   z&personnel.tasks.delivery_exception_smsc             C   s   ddl m} ddlm}m} |d|}	|	s.d S |d p<|d }|df}|df}|d f}
|d	 f}|d
 }|||||
||}|	dd}|||	d |	d |d ||	d d d S )Nr   )get_system_setting)format_exception_textsend_smssms_setting
first_namer,   z%Y-%m-%d %H:%M:%S
late_timesearly_leave_timesabsent_timesuser_idr   Z
sms_apikeyZprovidersmssender)current_userapi_keyZsms_providernumbertextrV   )rD   rL   (mysite.personnel.send_tripartite_messagerM   rN   strftimerF   )r   r:   item
start_dateend_dater"   rL   rM   rN   rO   lateearly_leaveabsentexception_textrW   r   r   r   delivery_exception_smsi   s    


rd   z+personnel.tasks.delivery_exception_whatsappc             C   s   ddl m} ddlm}m} |d|}	|	s.d S |d p<|d }|df}|df}|d f}
|d	 f}|d
 }|||||
||}|	dd}|||	d |d |d d S )Nr   )rL   )rM   sent_whatsappwhatsapp_settingrP   r,   z%Y-%m-%d %H:%M:%SrQ   rR   rS   rT   r   Zwhatsapp_apikeyrU   )rW   rX   rY   rZ   )rD   rL   r[   rM   re   r\   rF   )r   r:   r]   r^   r_   r"   rL   rM   re   rf   r`   ra   rb   rc   rW   r   r   r   delivery_exception_whatsapp|   s    


rg      )ZminuteZhourzpsnl.tasks.resigned_scanner)Z	run_everyr   c           	   C   s*  dd l } ddlm} ddlm} ddlm} ddlm} | j 	 }d }}d}y^|j
j| |d}	xD|	D ]<}
yd|
_|
  |d7 }W qj tk
r   |d7 }Y qjX qjW W n tk
r   d	}Y nX yH|j
jd
d }|s|j
 }dj||d}||d|||d  W n tk
r$   Y nX d S )Nr   )AdminLog)MyUser)Resign)r   )Zresign_date__ltZemployee__statusTr   Zadmin)ZusernamezSuccess: {sc}, Failed: {fc})ZscZfczResigned Scanner)r3   actiondescriptionZaction_statusZop_time)r4   Zmysite.base.modelsri   Zmysite.accounts.modelsrj   mysite.personnel.modelsrk   r   r   r8   r   r   dateZ
disableattr9   rH   firstr   )r4   ri   rj   rk   r   ntZsuccess_countZfailed_countstatusZresignedobjr3   rn   r   r   r   resigned_scanner   s6    



ru   
   z!psnl.tasks.document_expired_alertc        	   	   C   s   ddl } ddlm} ddlm} ddlm} | j  }|jj	ddd
d	d
dddddd}x|D ]}|d rd|d rd|d || j|d d  krdtjr|djdd}n|djdd}dj|d
 |d |d d}||||d g|d d qdW dS )z?
    Scan employee document at 00:10 everyday
    :return:
    r   N)gettext_lazy)send_one_mail)EmployeeCertificationTF)Zemail_alertZemployee__email__isnullZemployeeZemployee__first_nameZemployee__last_nameZemployee__emailZ	expire_onZbeforeZcertification__cert_nameZemployee__company_id)ZdaysZcertification_expired_alertzIntelligent Time)ZsoftwareZEasyTimeProzf
            Dear {user},

                Your {doc} is going expired on {expired_date}

            )r3   docZexpired_date)tor"   )r4   Zdjango.utils.translationrw   Zmysite.admin.services.emailrx   ro   ry   r8   r   r   Zselect_relatedvaluesZ	timedeltarp   r   ZCLOUD_VERSIONr   )	r4   _rx   ry   Zdt_nowZquerysetrt   ZsubjectZbodyr   r   r   document_expired_alert   s"    

r~   )r    )r    )T)r%   ZjsonZdjango.confr   Zcelery.taskr   Zcelery.schedulesr   mysiter   r   r   r   r-   r.   r=   r>   rK   rd   rg   ru   r~   r   r   r   r   <module>   s&   	
	

