B
    bC                 @   s   d dl mZmZ d dlmZm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mZ G d	d
 d
ejZG dd deje
ZdS )    )gettext_lazyactivate)mixinsserializers)NoneSerializer)ReportUtilGenericViewSetReportGenericFilter)PayloadBase)Q)
C_ATT_RULE)STATUS_VALIDSTATUS_RESIGN_PENDINGc               @   sT  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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ZejeddddZejeddddZejeddddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejedddZejed d!ddZG d"d# d#Zd$S )%EarlyLeaveReportSerializerZemp_field_employeeCodezemp.emp_code)labelsourceZemp_field_firstNamezemp.first_nameT)r   r   
allow_nullZemp_field_lastNamezemp.last_nameZemp_field_localizedNamezemp.nicknameZreport_column_genderzemp.get_gender_displayZdepartment_field_codezemp.department.dept_codeZemployee_field_departmentzemp.department.dept_nameZposition_field_codezemp.position.position_codeZemployee_field_positionzemp.position.position_nameztimetable.alias)r   r   Zget_check_in_displayZget_check_out_displayZget_clock_in_displayZget_clock_out_displayZget_early_leave_displayZget_weekday_displayZreport_column_attendanceDateZget_att_date_displayZreport_column_totalTimeDurationZget_total_time_displayc               @   s   e Zd ZeZdZdS )zEarlyLeaveReportSerializer.Meta)Zuuidemp_code
first_name	last_name	nick_namegender	dept_name	dept_codeposition_codeposition_nameatt_dateweekday	timetablecheck_in	check_outclock_in	clock_out
total_timeearly_leaveN)__name__
__module____qualname__r	   modelZfields r(   r(   DG:\easytimepro\master/mysite/att\api\views\view_report_earlyleave.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*   r(   r(   r(   r)   r      s0   r   c                   sr   e Zd ZeZejjdd dZ	e
ZdZeedZedededd	Zd
d Zdd Z fddZ  ZS )EarlyLeaveReportViewSetr   )Zearly_leave__gtr   )r"   r#   )listZexportZreport_column_attendanceWeekdayZreport_column_timeIntervalNameZ report_column_earlyLeaveDuration)r   r   r#   c             C   s   | j | jtS )N)serializer_dictgetactionr   )selfr(   r(   r)   get_serializer_classF   s    z,EarlyLeaveReportViewSet.get_serializer_classc             C   s   t d tdS )NZenzEarly Leave Report)r   r+   )r1   r(   r(   r)   get_file_titleJ   s    z&EarlyLeaveReportViewSet.get_file_titlec                s   t t|  }| jjj}| jjjs6d|i}|jf |}| jjjs| jjj	}| jjj
}| jjj}| rv|j| d}| r|j| d }| r|j| d}tt|d}|dkr|ttdtd dB ttdB }|S )NZemp__company_id)Zemp__department__in)Zemp__area__in)Zemp__position__in
resign_emp0)Zemp__status)superr,   get_querysetZrequestuserZcurrent_companyZis_employeefilterZis_superuserZget_auth_deptZget_auth_areaZget_auth_posexistsallZdistinctstrr   r/   r
   r   r   )r1   querysetZ
company_idZbase_filterZ	auth_deptZ	auth_areaZauth_posr4   )	__class__r(   r)   r7   N   s(    





 z$EarlyLeaveReportViewSet.get_queryset)r$   r%   r&   r	   r'   Zobjectsr9   Zselect_relatedZorder_byr=   r   Zfilter_classZsummary_fieldsr   r.   r+   Zextra_headers_translation_dictr2   r3   r7   __classcell__r(   r(   )r>   r)   r,   3   s   r,   N)Zdjango.utils.translationr   r+   r   Zrest_frameworkr   r   Zmysite.att.api.serializersr   Zmysite.att.api.utils_classr   r   Zmysite.att.modelsr	   Zdjango.db.modelsr
   Zmysite.att.global_cacher   Zmysite.admin.modelsr   r   ZModelSerializerr   ZListModelMixinr,   r(   r(   r(   r)   <module>   s   !