B
    b                 @   s   d dl mZ d dlmZmZ d dlm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 G d	d
 d
ejZG dd dejeZdS )    )gettext_lazy)mixinsserializers)QN)NoneSerializer)ReportUtilGenericViewSet)PayloadBase)STATUS_VALIDSTATUS_RESIGN_PENDINGc               @   s&  e Zd ZejedddZejeddddZejedd	dZejed
dddZ	ejeddddZ
ejedddddZejedddddZejedddddZejeddddZejeddddZejedddddZejedddddZejedd dddZG d!d" d"Zd#S )$AppReportSerializerZreport_column_empCodezemp.emp_code)labelsourceZreport_column_firstNamezemp.first_nameT)r   r   
allow_nullZreport_column_attendanceDateZget_att_date_display_mobileZreport_column_clockInTimeZget_clock_in_display_mobileZreport_column_clockOutTimeZget_clock_out_display_mobileZreport_column_breakOutTimeZget_break_out_mobile )r   r   r   defaultZreport_column_breakInTimeZget_break_in_mobileZreport_column_breakTimeDurationZget_break_duration_mobiler   Z!report_column_totalWorkedDurationZget_total_worked_display_mobileZreport_column_leaveDurationZget_leave_display_mobileZreport_column_overtimeLevel1Zget_ot_lv1_mobile_appZreport_column_overtimeLevel2Zget_ot_lv2_mobile_appZreport_column_overtimeLevel3Zget_ot_lv3_mobile_appc               @   s   e Zd ZeZdZdS )zAppReportSerializer.Meta)pinnameatt_datecheck_in	check_out	break_outbreak_in
break_time
total_timeZearly_leaveZabsent
leave_timeot_lv1ot_lv2ot_lv3N)__name__
__module____qualname__r   modelZfields r"   r"   CG:\easytimepro\master/mysite/att\api\views\view_report_appreport.pyMeta)   s   r$   N)r   r   r    r   Z	CharField_r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r"   r"   r"   r#   r      s2   
r   c                   sJ   e Zd ZeZej  ddZ	g Z
deiZdd Z fddZ  ZS )AppReportViewSetZemp_idr   listc             C   s   | j | jtS )N)serializer_dictgetactionr   )selfr"   r"   r#   get_serializer_class9   s    z%AppReportViewSet.get_serializer_classc                s  y| j jj}W n   | j jdd }Y nX tt|  j|d}| j jdd }| j jdd }| j jdd }| j jdd }|r|rt	|}t	|}t
j
|}t
j
|}|j||d}|s|rd|d}	yd	d
 |	D }	W n tk
r   g }	Y nX ddlm}
 |
| t|
|d}|dkrX|ttdtd dB ttdB }|j|	d}|r|d}	ydd
 |	D }	W n tk
r   g }	Y nX |j|	d}|S )N
company_id)Zemp__company_id
start_dateend_dateZ	employeesZdepartments)Zatt_date__gteZatt_date__lte,c             S   s   g | ]}|r|qS r"   r"   ).0ir"   r"   r#   
<listcomp>T   s    z1AppReportViewSet.get_queryset.<locals>.<listcomp>r   )
C_ATT_RULE
resign_emp0)Zemp__status)Z
emp_id__inc             S   s   g | ]}|rt |qS r"   )int)r1   r2   r"   r"   r#   r3   a   s    )Zemp__department_id__in)ZrequestuserZcurrent_companyZquery_paramsr)   superr&   get_querysetfilterfloatdatetimeZfromtimestampsplit
ValueErrorZmysite.att.global_cacher4   Zaction_initstrr   r	   r
   )r+   r-   querysetZstart_stampZ	end_stampZempsZdeptsr.   r/   Zobjsr4   r5   )	__class__r"   r#   r:   =   sL    



 

zAppReportViewSet.get_queryset)r   r   r    r   r!   Zobjectsr:   Zselect_relatedZorder_byrA   Zpermission_classesr   r(   r,   __classcell__r"   r"   )rB   r#   r&   1   s   r&   )Zdjango.utils.translationr   r%   Zrest_frameworkr   r   Zdjango.db.modelsr   r=   Zmysite.att.api.serializersr   Zmysite.att.api.utils_classr   Zmysite.att.modelsr   Zmysite.admin.modelsr	   r
   ZModelSerializerr   ZListModelMixinr&   r"   r"   r"   r#   <module>   s   "