B
    b0                 @   s   d dl Z d dlZ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mZ eejejZdd Zddd	Zdd
dZdddZdd Zdd ZdddZdddZdddZdS )     N)cache)Q)settings)	cache_keyconstc             C   s0   y| j }|rtd|df W n   Y nX d S )NzR-CMDi  )Z
ip_addresssNotifyZsendto)terminalZip r	   ,G:\easytimepro\master/mysite/iclock\utils.py
sendRecCMD   s    r   c             C   s   ddl m} ddlm} |jrh|  dd }|dkr<|n| jd dd }| }|j	j
|d}n,|j	  }|dkr|j	j
|jd	}nd
}|r|d S d
S )z
    here should just use for check company by host when connect with device, not use for other function.
    :param request:
    :return:
    r   )Company)r   .Z127ZHTTP_X_FORWARDED_HOST)name   )idN)Zmysite.cloud.modelsr   Zdjango.confr   CLOUD_VERSIONZget_hostsplitZMETAlowerobjectsfilterallcountZDEFAULT_COMPANY_ID)Zrequestr   r   Z	host_headZcompany_nameZcompanyZcompany_countr	   r	   r
   get_company    s     r   c       	      C   sr  ddl m}m} ddlm} ddlm} | r4|  p6d} | s@dS t	d|  }|r`t
||r`|S |jj	| d}|jjd	d
}x|D ]}|jdkr|jdkrd|_d|_|jpd|_q|jdkr|jpd|_q|jdkr
|jr|jdd dkrd|_|jpd|_q|jdkr.|jr2||j||_q|jdkrL|jr2|j|_q|jdkrj|jr2|j|_q|jdkr|jr2|j|_q|jdkr|jr2|j|_q|jdkr|jpd|_q|jdkr|jr2|j|_q|jdkr|jr2|j|_q|jdkr|j|_q|jrt||jdd|j qW t d|  | t d|  | |dkrnt!d|   |S ) z
    get device info ,dont allow to add  try except for this function. it means device is not exist when exception raised  
    :param sn: sn
    :return:
    r   )TerminalTerminalParameter)get_param_value)zk_get_VerifyStyles NZiclock_)sn)ZPvFunOnFvFunOnZ	FvVersion	PvVersionZCOMKeyAccSupportFunListVerifyStylesz~MIFAREz	~RFCardOnz	~MIFAREIDZCardProtFormatZ
BioDataFunZBioPhotoFunZVisilightFunZFingerFunOnZ	FaceFunOnMaskDetectionFunOnIRTempDetectionFunOnMultiBioPhotoSupportMultiBioDataSupportMultiBioVersionMaxMultiBioCountMultiBioCountUserCardCountZUserPhotoCountZATTPhotoCountZSubcontractingUpgradeFunOnZUserPicURLFunOn)Zparam_name__inr   1r      r    r!         r"   r%   r&   r'   r(   r)   r#   r$   r*   ~Ziclock_old_Z
getrequestzoffline_flag_%s)"mysite.iclock.modelsr   r   Zmysite.base.models.sys_paramr   Zmysite.core.zktoolsr   stripr   get
isinstancer   Zterminalparameter_setr   Z
param_nameZparam_valuer   Z
fv_alg_verZpalm_alg_verZMulCardUserr!   r"   r%   r&   r'   r(   r)   r#   r$   r*   setattrreplacesetdelete)	r   Zpurposer   r   r   r   Zdevobjstr	   r	   r
   	getDevice6   sn    








r:   d   c             C   sn  ddl m} ddlm} ddlm}m} g }t|jt	j
| jf }|rP|j| _|rh| j|j|jfkrjtj }|tjdd }	|jj| |dd}
|
tdd	td
|	dB }
|
dd| }
|
ddd}d}xF|D ]>}||d |d |d pdd t||krP |d7 }qW |rDt|dkr:|j| _n|j| _n&|j| _tj|jt	j
| jf ddd |S )zK
    :param terminal: terminal object
    :return: terminal's commands
    r   )TerminalCommand)r   )r   r   (   )ZsecondsT)r   Zcommit_time__lteZreturn_time__isnull)transfer_time__isnullF)r>   Ztransfer_time__gtr   NcontentZtransfer_timer   )r   r?   Ztransferr   
   i  )timeout)r0   r<   Zmysite.iclock.commr   mysite.iclockr   r   r2   ZTERMINAL_WITHOUT_CMDr   UNITr   ZTERMINAL_NORMALstateZTERMINAL_COMMUNICATIONZTERMINAL_UPLOADdatetimenowZ	timedeltar   r   r   Zorder_byvaluesappendlenr6   )devicesizer<   cr   r   Z
ready_cmdsZno_cmdrF   Zvalid_periodZcmdsZcommandsZ	total_cmdcmdr	   r	   r
   	deviceCmd   s>    

 

rN   c          
   C   s$  ddl m} ddlm} t|}tt| } ttj	t
j| |f }|rL|S y|jj| d}|r|d }|j}|tjtjtjfkr||j}xB| D ],\}	}
t|	t|kr|
dddd}qW n| }W n, tk
r } ztd| W d d }~X Y nX |r ttj	t
j| |f | |S )	Nr   )BioData)loads)r   
r   zgetCacheBioData=)r0   rO   mysite.utilsrP   intstrr   r2   r   ZBIODATA_TEMPLATEr   rC   r   r   bio_typer   ZbioFaceZbioHandZ	bioFaceVLZbio_tmpitemsr5   Ztemp	Exceptionprintr6   )ZpktidrO   rP   tmpr8   objrV   Zd_tmpkver	   r	   r
   getCacheBioData   s.    
r`   c       
   
   C   s   dd l }dd l}ddlm} | }ttdrPd| krB| dd }n| dd }|j|dd	| }|j
|ryRtd	| d
}|| }|  tjd dkr|d}d|t||f }|S  tk
r }	 ztd|	 W d d }	~	X Y nX dS )Nr   )
store_pathr   /_Zbiophotoz{0}.jpgz%srb3zlatin-1z5DATA UPDATE BIOPHOTO PIN=%s	Type=2	Size=%d	Content=%sz	ad photo=r   )base64osrS   ra   hasattrr   r   pathjoinformatisfileopen	b64encodereadclosesysversiondecoderI   rX   rY   )
pinrg   rh   ra   epinfpfZls_fZcmdStrr_   r	   r	   r
   getBiophoto   s*    

ry   c          	   C   s   ddl }ddl}ddlm} ttjj| dd}| }t	t
drfd| krX| dd }n| dd }|s|j|d	d
| }|j|rt|d}| }W dQ R X |r||}	tjd dkr|	d}	d|t|	|	f }
|
S dS )zU
    pin = 6b969e80f3ff11e9afc7acde48001122/123456/001.jpg    when multi-company
    r   N)ra   )ru   r   rb   rc   rd   Zphotoz{0}.jpgre   rf   zlatin-1z.DATA UPDATE USERPIC PIN=%s	Size=%d	Content=%s	r   )rg   rh   rS   ra   r   r2   r   ZUSER_PHOTO_CACHErl   ri   r   r   rj   rk   rm   rn   rp   ro   rr   rs   rt   rI   )ru   rJ   rg   rh   ra   Zimgrv   rw   rx   Z
base64_imgrM   r	   r	   r
   get_personnel_photo   s*    


rz   rc   c             C   sx   ddl m} |sd}|jj| |d}|rR|d }|dkrt|j|krt||_|  n"|dkr^d}|| ||djdd d S )Nr   )TerminalEmployee)emp_codeterminal_snrc   )r|   r}   	privilegeT)Zforce_insert)r0   r{   r   r   r~   Zsave)ru   r   r~   r{   r8   r\   r	   r	   r
   saveEmpInDevice  s    
r   c             C   sd  ddddddddddd	
}| s8ddddddddddd	
}i }|  }x|D ]}|| ||< |d
krt| dr| jdkrd||< | rL|dkrL|| }d| j }d }|rLt|}|d dkrd|d< |d dkrd|d< |d dk rd|d< d|d< d|d< |d dkrDd}	x2|D ]*}
|	dkr6|	dkr6d||	< |	d7 }	qW ddd |D ||< qLW |S )N<      r   z00:00;14:05Z111111111111r   0	   )
Z
ErrorDelayDelayZRealtimeZ
TransTimesZTransInterval	TransTypeZcompwdZEncryptZstring_as_pinZ	pin_widthr   product_type)      r   r   zTransType_%sr      r,   r-   r.      )r,   r-   r.   c             s   s   | ]}d | V  qdS )z%sNr	   ).0xr	   r	   r
   	<genexpr>?  s    z%getoptionsAttParam.<locals>.<genexpr>)keysri   r   r   listrk   )rJ   Z	defvaluesZllr   r]   skeyZtrTypesZtrListjir	   r	   r
   getoptionsAttParam  sD    



 r   )N)N)r;   )N)rc   )N)rr   ZsocketrE   stringZdjango.core.cacher   Zdjango.db.modelsr   mysiter   rB   r   r   ZAF_INETZ
SOCK_DGRAMr   r   r   r:   rN   r`   ry   rz   r   r   r	   r	   r	   r
   <module>   s"   

T
+
 
