B
    /DbM                 @   sj   d dl Z d dlmZ d dlmZ d dlmZ dd Zeddd	d
d Zedd Z	dd Z
dddZdS )    N)
connection)periodic_task)cachec                s    fdd}|S )Nc           
      sN    | |}yt   t   W n* tk
rH } zt| W d d }~X Y nX |S )N)r   Zcommitclose	Exceptionprint)argskwargsZrete)func )G:\easytimepro\master/mysite/acc\tasks.pywrapper   s    
z$close_db_connection.<locals>.wrapperr   )r   r   r   )r   r   close_db_connection   s    	r      zacc.tasks.data_sync_gard_circle)Z	run_everynamec              C   sX   ddl m}  ddlm} tdr&d S | j }x|D ]}t|j	d q6W t
d d S )Nr   )Company)settingsis_sync_acc_data)
company_id)Zmysite.cloud.modelsr   Zdjango.confr   r   getobjectsalldata_sync_guardiddelete)r   r   ZcompanyZcomr   r   r   data_sync_gard_circle   s    


r   c       	      C   s   ddl m} ddlm} ddlm} |jj| d}x~|D ]v}yF|j}|	 |j
|j|jfkr||j}tjdddd	 t|| W q8 tk
r } zt| W d d }~X Y q8X q8W d S )
Nr   )const)	getDevice)AccTerminal)r   r      x   )timeout)Zmysite.iclockr   Zmysite.iclock.utilsr   Zmysite.acc.modelsr   r   filterterminalZgetDynStateZTERMINAL_NORMALZTERMINAL_UPLOADZTERMINAL_COMMUNICATIONsnr   set	data_syncr   r   )	r   r   r   r   Zacc_terminalsacc_terminalZdevr$   r
   r   r   r   r   '   s    

r   c             C   s  ddl m} ddlm} tj }| j}| js2d S | js<d S |j	rFdS |j
}|sTdS d}|jj|d}x|D ]}	||	|  d}qlW | jdkr|jj|d}
x|
D ]}|||  d}qW | jdkr|jj|d}x|D ]}|||  d}qW | jdkr6|jj|d}x*|D ]"}| jdkr|||  d}qW |jj||d	}x|D ]}|||  d}qLW |r~||_
|jd
d | jS )Nr   )STATUS_VALID)utils F)update_time__gtT)      )employee__statusr,   )	push_time)Zupdate_fields)mysite.admin.modelsr)   
mysite.accr*   datetimenowarea	lock_func	is_access
is_defaultr0   acctimezone_setr#   send_acc_timezone_to_deviceproduct_typeaccholiday_setsend_acc_holiday_to_deviceaccgroups_setsend_acc_group_to_deviceacccombination_setsend_acc_combination_to_deviceaccprivilege_setsend_acc_privilege_to_deviceZsaver%   )devicer(   r)   r*   ntr5   ZstampZtrigger_synctzstzholidaysholidaygroupsgroupcombinationscombination
privileges	privileger   r   r   r'   8   sT    









r'   c             C   sH  ddl m} ddlm} tj }	| j}
| js2d S | js<d S |
j	rFd S |rn|
j
 }x|D ]}|||  qZW |r| jdkr|
j }x|D ]}|||  qW |r| jdkr|
j }x|D ]}|||  qW |r| jdkr|
j }x"|D ]}| jdkr|||  qW |rB|
jj|d}x|D ]}|||  q,W | jS )Nr   )r)   )r*   )r-   r.   )r/   )r1   r)   r2   r*   r3   r4   r5   r6   r7   r8   r9   r   r:   r;   r<   r=   r>   r?   r@   rA   rB   r#   rC   r%   )rD   r(   Zis_timezoneZ
is_holidayZis_groupZis_combinationZis_privileger)   r*   rE   r5   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   r   r   data_sync_manualyf   sF    












rP   )r   r   r   r   r   )r3   Z	django.dbr   Zcelery.taskr   Zdjango.core.cacher   r   r   r   r'   rP   r   r   r   r   <module>   s   .