B
    xb#                 @   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mZ d dlmZ d dlZd d	lmZ d d
l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)OutdoorTrack)STATUS_VALIDSTATUS_RESIGN_PENDING)Employee)Q)	FilterSetc                   s   e Zd ZejddZejddZejddZejddZe	j
r\e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dd Ze fddZG dd dZ  ZS )ReportGenericFilteremployee_filter)methoddepartment_filterarea_filterposition_filter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   GG:\easytimepro\master/mysite/att\api\views\view_report_scheduletrack.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   2   s    z9ReportGenericFilter.department_filter.<locals>.<listcomp>)Zemployee__department_id__inr   )
C_ATT_RULE
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   -   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   H   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   B   s$    



 zReportGenericFilter.area_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   ]   s    z7ReportGenericFilter.position_filter.<locals>.<listcomp>)Zemployee__position__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   W   s$    



 z#ReportGenericFilter.position_filterc                s   t t| j}| jdpd}| jdp*d}| jdp:d}| jdpJd}|dkrt|dkrt|dkrt|dkrt| S |jddS )	N	employeesz-1departmentsareas	positionsT)Zemployee__isnull)superr   qsdatar3   ZnoneZexclude)r!   r"   r5   r6   r7   r8   )	__class__r   r   r;   l   s     zReportGenericFilter.qsc               @   s    e Zd ZeZddddddgZdS )zReportGenericFilter.Metar5   r6   r7   r8   
start_dateend_dateN)__name__
__module____qualname__r   modelfieldsr   r   r   r   Metaw   s   rE   )r@   rA   rB   django_filtersZ
CharFilterr5   r6   r7   r8   sixZPY3Z
DateFilterr>   r?   r   r   r   r   propertyr;   rE   __classcell__r   r   )r=   r   r      s   r   c               @   sh  e Zd ZejedddZejeddddZej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eddddZejedddZejedddZejedddZejed ddZejed!ddZejed"ddZG d#d$ d$Zd%S )&ScheduletrackReportSerializerZreport_column_empCodezemployee.emp_code)labelsourceZreport_column_firstNamezemployee.first_nameT)rK   rL   
allow_nullzschedule.schedule_name)rL   rM   Zreport_column_company_namezclient.company_nameZreport_column_lastNamezemployee.last_nameZreport_column_genderzemployee.get_gender_displayZdepartment_field_codezemployee.department.dept_codeZemployee_field_departmentzemployee.department.dept_nameZposition_field_codezemployee.position.position_codeZemployee_field_positionzemployee.position.position_name )defaultrM   Zemployee_visit_summaryZsummaryZ#outdoorTrack_field_checkin_latitude)rK   rM   Z$outdoorTrack_field_checkin_longitudeZ$outdoorTrack_field_checkout_latitudeZ%outdoorTrack_field_checkout_longitudeZ"outdoorTrack_field_checkin_addressZ#outdoorTrack_field_checkout_addressc               @   s   e Zd ZeZdZdS )z"ScheduletrackReportSerializer.Meta__all__N)r@   rA   rB   r   rC   rD   r   r   r   r   rE      s   rE   N)r@   rA   rB   r   Z	CharField_Zemp_codeZ
first_nameZschedule_nameZclient_name	last_nameZgenderZ	dept_codeZ	dept_nameZposition_codeZposition_nameZatt_dateZvisit_summaryZcheckin_latitudeZcheckin_longitudeZcheckout_latitudeZcheckout_longitudeZcheckin_addressZcheckout_addressrE   r   r   r   r   rJ   |   s:   



rJ   c               @   s6   e Zd ZeZeZeedZdd Z	dd Z
dd ZdS )	ScheduletrackReportViewSet)listZexportc             C   s   | j | jtS )N)serializer_dictr3   actionr   )r!   r   r   r   get_serializer_class   s    z/ScheduletrackReportViewSet.get_serializer_classc             C   s   t d tdS )NZenZmenu_att_scheduleTrackReport)r   rQ   )r!   r   r   r   get_file_title   s    z)ScheduletrackReportViewSet.get_file_titlec             C   s   y.| j jjr,tjjd| j jjdd}|S W nl   | j j	d}t
jj|d}|d jrztjjd|d jdd}ntjjd||d jdd}|S d S )Nr   )schedule_typer4   r1   r5   )r1   )rY   Zemployee_idr4   )r+   r,   Zis_superuserr   Zobjectsr    r.   Zorder_byZquery_paramsr3   r   Zis_adminr4   )r!   r"   r1   Zempr   r   r   get_queryset   s    


z'ScheduletrackReportViewSet.get_querysetN)r@   rA   rB   r   rC   r   Zfilter_classrJ   rU   rW   rX   rZ   r   r   r   r   rS      s   rS   )Zdjango.utils.translationr   rQ   r   Zrest_frameworkr   r   rF   Zmysite.att.api.serializersr   Zmysite.att.api.utils_classr   Zmysite.att.modelsr   Zmysite.admin.modelsr	   r
   Zmysite.personnel.modelsr   rG   Zdjango.db.modelsr   Zdjango_filters.rest_frameworkr   r   ZModelSerializerrJ   ZListModelMixinrS   r   r   r   r   <module>   s   g$