B
    b~                 @   s  d dl mZmZ d dlmZ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 d dlmZ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 d d	lmZ d dlmZ d dlmZmZ G dd deZG dd dejZG dd dej eZ!dS )    )gettext_lazyactivate)mixinsserializersN)NoneSerializer)ReportUtilGenericViewSet)LeaveSettings)	FilterSet)STATUS_VALIDSTATUS_RESIGN_PENDING)Q)Count)Response)Employee)
C_ATT_RULEc                   s   e Zd ZejddZejddZejddZej	rPej
dddZej
dddZnej
ddd	Zej
ddd	Zd
d Zdd Zdd Ze fddZG dd dZ  ZS )ReportGenericFilteremployee_filter)methoddepartment_filterarea_filterZeffective_dateZgte)Z
field_namelookup_exprZlte)namer   c             C   sZ   |rt |dkr|S |d}ydd |D }W n tk
rH   g }Y nX |j|d}|S )Nz-1,c             S   s   g | ]}|rt |qS  )str).0ir   r   KG:\easytimepro\master/mysite/att\api\views\view_report_adminleavedetails.py
<listcomp>,   s    z7ReportGenericFilter.employee_filter.<locals>.<listcomp>)Zemployee_id__in)r   split
ValueErrorfilter)selfquerysetr   valueobjsr   r   r   r   '   s    

z#ReportGenericFilter.employee_filterc             C   s   |rt |dkr|S |d}ydd |D }W n tk
rH   g }Y nX |j|d}ddlm} | jjjsx| jjj	}n| jjj
jj}|| t ||d}|d	kr|ttd
td d
B ttd
B }|S )Nz-1r   c             S   s   g | ]}|rt |qS r   )int)r   r   r   r   r   r   7   s    z9ReportGenericFilter.department_filter.<locals>.<listcomp>)Zemployee__department_id__inr   )r   
resign_emp0)employee__status)r   r   r    r!   mysite.att.global_cacher   requestuseris_employeecurrent_company
departmentcompanyidaction_initgetr   r
   r   )r"   r#   r   r$   r%   r   
company_idr'   r   r   r   r   2   s$    



 z%ReportGenericFilter.department_filterc             C   s   ddl m} |rt|dkr |S |d}ydd |D }W n tk
rT   g }Y nX |j|d}| jjjsx| jjj	}n| jjj
jj}|| t||d}|d	kr|ttd
td d
B ttd
B }|S )Nr   )r   z-1r   c             S   s   g | ]}|rt |qS r   )r&   )r   r   r   r   r   r   M   s    z3ReportGenericFilter.area_filter.<locals>.<listcomp>)Zemployee__area__id__inr'   r(   )r)   )r*   r   r   r   r    r!   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r
   r   )r"   r#   r   r$   r   r%   r4   r'   r   r   r   r   G   s$    



 zReportGenericFilter.area_filterc                sh   t t| j}| jdpd}| jdp*d}| jdp:d}|dkr\|dkr\|dkr\| S |jddS )N	employeesz-1departmentsareasT)Zemployee__isnull)superr   qsdatar3   ZnoneZexclude)r"   r#   r5   r6   r7   )	__class__r   r   r:   \   s    zReportGenericFilter.qsc               @   s   e Zd ZeZdddddgZdS )zReportGenericFilter.Metar5   r6   r7   
start_dateend_dateN)__name__
__module____qualname__r   modelfieldsr   r   r   r   Metaf   s   rD   )r?   r@   rA   django_filtersZ
CharFilterr5   r6   r7   sixZPY3Z
DateFilterr=   r>   r   r   r   propertyr:   rD   __classcell__r   r   )r<   r   r      s   
r   c               @   s   e Zd ZejeddddZejdddZejddddZejd	dddZ	ejd
dddZ
ejddddZejddddZejddddZejeddddZejdddZejdeddddZG dd dZdS )!AdminleavedetailsReportSerializerZreport_column_firstNamezemployee.first_nameT)labelsource
allow_nullzemployee.emp_code)rK   rL   -)rK   defaultrL   zemployee.genderzemployee.position.position_codezemployee.position.position_namezemployee.department.dept_codezemployee.department.dept_nameZreport_leave_typeZget_allotment_type )rN   rL   Zget_leave_availedZreport_leave_availed)rK   rJ   rN   rL   c               @   s   e Zd ZeZdZdS )z&AdminleavedetailsReportSerializer.Meta__all__N)r?   r@   rA   r   rB   rC   r   r   r   r   rD   z   s   rD   N)r?   r@   rA   r   Z	CharField_Z
first_nameZemp_code	last_nameZgenderZposition_codeZposition_nameZ	dept_codeZ	dept_nameZallotment_typeZatt_dateZleave_availedrD   r   r   r   r   rI   k   s   


rI   c               @   sH   e Zd ZeZej ZeZ	e
e
dZdd Zdd Zdd Zdd	 Zd
S )AdminleavedetailsReportViewSet)listZexportc             C   s   | j | jtS )N)serializer_dictr3   actionr   )r"   r   r   r   get_serializer_class   s    z3AdminleavedetailsReportViewSet.get_serializer_classc             C   s   t d tdS )NZenZmenu_staff_leavedetailsReport)r   rQ   )r"   r   r   r   get_file_title   s    z-AdminleavedetailsReportViewSet.get_file_titlec             O   sB   |  |  }| |}|d k	r>| j|dd}|j}| |S d S )NT)Zmany)Zfilter_querysetget_querysetZpaginate_querysetZget_serializerr;   Zget_paginated_response)r"   r+   argskwargsr#   ZpageZ
serializerresultr   r   r   rT      s    
z#AdminleavedetailsReportViewSet.listc             C   s   | j jj}tjj|d}| j jjs| j jj}| j jj}| j jj	}|
 rX|j| d}|
 rp|j| d}|
 r|j| d}tt|d}|dkr|ttdtd dB ttdB }|S )N)r4   )Zemployee__department__in)Zemployee__area__in)Zemployee__position__inr'   r(   )r)   )r+   r,   r.   r   objectsr!   Zis_superuserZget_auth_deptZget_auth_areaZget_auth_posexistsallr   r   r3   r   r
   r   )r"   r4   r#   Z	auth_deptZ	auth_areaZauth_posr'   r   r   r   rY      s"    




 z+AdminleavedetailsReportViewSet.get_querysetN)r?   r@   rA   r   rB   r]   r_   r#   r   Zfilter_classrI   rU   rW   rX   rT   rY   r   r   r   r   rS      s   
rS   )"Zdjango.utils.translationr   rQ   r   Zrest_frameworkr   r   rE   Zmysite.att.api.serializersr   Zmysite.att.api.utils_classr   Zmysite.att.modelsr   Zdjango_filters.rest_frameworkr	   Zmysite.admin.modelsr
   r   rF   Zdjango.db.modelsr   r   Zrest_framework.responser   Zmysite.personnel.modelsr   r*   r   r   ZModelSerializerrI   ZListModelMixinrS   r   r   r   r   <module>   s$   P