B
    ÒîbC.  ã               @   s˜   d dl Z d dl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 G d
d„ deƒZG dd„ deƒZdS )é    N)Úsettings)Úgettext_lazyÚactivate)Úserializers)ÚTransaction)ÚBaseTemperatureReportViewSet)ÚBaseTemperatureReportSerializer)ÚPayloadBase)Úresize_by_pixelc               @   s2   e Zd ZejedƒdZdd„ ZG dd„ dƒZdS )Ú!VerificationPhotoReportSerializerZ report_column_verification_photo)Úlabelc             C   sÐ   |j }|j}d}tjj||dd d¡ dd¡}| ¡ rj|d d }x†|D ]}|d dkrJ|d }P qJW nbtjj||dd d¡ dd¡}| ¡ rÌ|d d }x,|D ]$}|d dkr¤|d }td	|ƒ P q¤W |S )
NÚ é   )Úemp_idZpunch_time__dateZpunch_statez-punch_timeZ	mask_flagÚidr   Ú
punch_timeztransaction id)	r   Úatt_dater   ÚobjectsÚfilterZorder_byÚvalues_listÚexistsÚprint)ÚselfÚobjr   r   Ztransaction_idZcheckout_transactionÚiZcheckin_transaction© r   úKG:\easytimepro\master/mysite/att\api\views\view_report_verificationphoto.pyÚget_verification_photo   s*    


z8VerificationPhotoReportSerializer.get_verification_photoc               @   s   e Zd ZeZdZdS )z&VerificationPhotoReportSerializer.Meta)ZuuidÚemp_codeZ
first_nameÚ	last_nameZ	nick_nameZgenderÚ	dept_codeZ	dept_nameZposition_codeZposition_namer   Zclock_inZ	clock_outr   Úverification_photoN)Ú__name__Ú
__module__Ú__qualname__r	   ZmodelZfieldsr   r   r   r   ÚMeta2   s   r%   N)	r"   r#   r$   r   ZSerializerMethodFieldÚ_r!   r   r%   r   r   r   r   r      s   r   c               @   sJ   e Zd ZeedœZddd„Zddd„Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚVerificationPhotoReportViewSet)ÚlistZexportNc             C   sø  xðt |ƒD ]â\}}y| j d¡}W n   d}Y nX |rPd||  d ||< y| j d¡}W n   d}Y nX |r¦|| r¦d|| d  d t|| ƒ d ||< y| j d	¡}W n   d}Y nX |rü|| rüd|| d
  d t|| ƒ d ||< y| j d¡}	W n   d}	Y nX |	r\||	 r\||	 }
|
dkrJd||	< n|
dkr\d||	< y| j d¡}W n   d}Y nX |r¶|| }|  |¡}|r¶|jdd}d |¡||< t|tƒrÔ| 	d|d ¡ qt|ƒ}| 	dd¡ |||< qW |S )z"only use for att report pdf reportr   Nz<span class="att_date">z</span>Úin_tempz<span style="color:Úin_temp_colorz;">Úout_tempÚout_temp_colorÚdisplayed_maskÚYesz(<span style="color: #00CD66;">Yes</span>ÚNoz'<span style="color: #ff0000;">No</span>r!   zUTF-8)Úencodingz$<img src="data:image/jpg;base64,{}">r   r   r   )
Ú	enumerateÚexport_headersÚindexÚstrÚtrans_id_to_base64ÚdecodeÚformatÚ
isinstancer(   Úinsert)r   Údatasr2   Ú
extra_datar   ÚdataÚatt_date_indexÚin_temp_indexÚout_temp_indexÚdisplayed_mask_indexÚstatusÚphoto_indexÚtran_idÚimage_base64r   r   r   Úupdate_data_list@   sZ    

(
(





z/VerificationPhotoReportViewSet.update_data_listc             C   sD  x<|D ]2}x*t |ƒD ]\}}y| j d¡}W n   d}Y nX |rht|tƒrhd||  d ||< y| j d¡}| j d¡}	W n   d }}	Y nX |rÊ|| rÊd||	  d t|| ƒ d ||< y| j d	¡}
| j d
¡}W n   d }
}Y nX |
r0||
 r0d||  d t||
 ƒ d ||
< y| j d¡}W n   d}Y nX |r|| r|| }|dkr~d||< n|dkrd||< y| j d¡}W n   d}Y nX |rê|| }|  |¡}|rê|jdd}d |¡||< |d= |d= |dkrt|tƒr| 	d|d ¡ qt|ƒ}| 	dd¡ |||< qW qW |S )z"only use for att report pdf reportr   Nz<span class="att_date">z</span>r)   r*   z<span style="color:z;">r+   r,   r-   r.   z(<span style="color: #00CD66;">Yes</span>r/   z'<span style="color: #ff0000;">No</span>r!   zUTF-8)r0   z$<img src="data:image/jpg;base64,{}">éÿÿÿÿr    r   r   r   )
r1   r2   r3   r8   r(   r4   r5   r6   r7   r9   )r   r:   Zgroup_by_fieldr;   r<   r   Úvr=   r>   Zin_temp_color_indexr?   Zout_temp_color_indexr@   rA   rB   rC   rD   r   r   r   Úupdate_group_data_listz   sf    
$$





z5VerificationPhotoReportViewSet.update_group_data_listc             C   s   t dƒ tdƒS )NZenz Verification Photo (TD&MD)Report)r   r&   )r   r   r   r   Úget_file_title»   s    z-VerificationPhotoReportViewSet.get_file_titlec          	   C   s
  |sd S t jj|d ddd¡}|r|d \}}}| d¡}d | d¡|¡}d	 ||¡}tj t	j
|¡}tj ||¡}	tj |¡st |¡ tj |	¡sâd
 ||¡}
tj t	j
|
¡}
tj |
|¡}tj |¡sÖd S t||	dƒ t|	dƒ}t | ¡ ¡}|S Q R X d S )N)r   r   Úterminal_snr   r   z%Y%mz{0}-{1}.jpgz%Y%m%d%H%M%Szverification_report/{0}/{1}zupload/{0}/{1}i A  Úrb)r   r   r   r   Ústrftimer7   ÚosÚpathÚjoinr   ÚADDITION_FILE_ROOTr   Úmakedirsr
   ÚopenÚbase64Z	b64encodeÚread)r   rC   Útransr   Úsnr   Úfolder_nameÚ
photo_nameÚdest_file_pathÚdest_whole_pathÚsource_file_pathÚsource_whole_pathÚfZbase64_datar   r   r   r5   ¿   s,    

z1VerificationPhotoReportViewSet.trans_id_to_base64c             C   sè   d }|sd S t jj|d ddd¡}|rä|d \}}}| d¡}d | d¡|¡}d	 ||¡}	tj t	j
|	¡}	tj |	|¡}tj |	¡s’t |	¡ tj |¡säd
 ||¡}
tj t	j
|
¡}
tj |
|¡}tj |¡sØd S t||dƒ |S )N)r   r   rJ   r   r   z%Y%mz{0}-{1}.jpgz%Y%m%d%H%M%Szverification_report/{0}/{1}zupload/{0}/{1}i A  )r   r   r   r   rL   r7   rM   rN   rO   r   rP   r   rQ   r
   )r   rC   rZ   rU   r   rV   r   rW   rX   rY   r[   r\   r   r   r   Útrans_id_to_urlÚ   s*    

z.VerificationPhotoReportViewSet.trans_id_to_urlc             C   s@   || dkr<|   |¡}|r<| || ||¡ | || d¡ dS )z#use for update the data when insertzVerification Photoé_   N)r^   Zinsert_imageZset_row)r   Z	worksheetZtranslated_headersZ	col_indexZ	row_indexZrow_index_temZcol_dataZ
photo_pathr   r   r   Úxls_update_extra_dataò   s
    
z4VerificationPhotoReportViewSet.xls_update_extra_data)N)N)r"   r#   r$   r   Zserializer_dictrE   rH   rI   r5   r^   r`   r   r   r   r   r'   :   s   
:
Ar'   )rS   rM   Zdjango.confr   Zdjango.utils.translationr   r&   r   Zrest_frameworkr   Zmysite.iclock.modelsr   Zmysite.att.api.viewsr   Z0mysite.att.api.views.view_report_basetemperaturer   Zmysite.att.modelsr	   Zmysite.tools.image_utilsr
   r   r'   r   r   r   r   Ú<module>   s   )