B
    by                 @   s   d dl Z d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ G dd	 d	e	jZG d
d dejeZdS )    N)gettext_lazy)CountMax)mixinsserializers)NoneSerializer)UtilGenericViewSet)Employeec               @   s~   e Z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
G dd dZdS )DailyAbsentSerializerZreport_column_departmentCodedepartment__dept_codeT)labelsourceZ
allow_nullZreport_column_departmentNamedepartment__dept_nameZreport_column_positionCodeposition__position_codeZreport_column_positionNameposition__position_namelastc               @   s   e Zd ZeZdZdS )zDailyAbsentSerializer.Meta)	emp_code
first_name	last_namenickname	dept_code	dept_nameposition_codeposition_name
last_punchN)__name__
__module____qualname__r	   modelZfields r   r   GG:\easytimepro\master/mysite/base\api\viewsets\dashboard_absent_list.pyMeta   s   r!   N)r   r   r   r   Z	CharField_r   r   r   r   r   r!   r   r   r   r    r
      s   r
   c                   s@   e Zd ZeZej dZde	iZ
dd Z fddZ  ZS )DailyAbsentViewSetr   listc             C   s   | j | jtS )N)serializer_dictgetactionr   )selfr   r   r    get_serializer_class.   s    z'DailyAbsentViewSet.get_serializer_classc          
      sD  ddl m} ddlm} ddlm} tt|  }t	j	
 }|t	jdd }t| jj| rd| jjji}|jf |}| jjjsi }| jjj}	| jjj}
|	 r|	 |d< |
 r|
 |d	< |r|jf |}| }n|j| jjjd
}|dddddddd}|jtdd}||| d|| dB |ddB }|S )Nr   )Q)get_user_model)
Department   )ZdaysZ
company_idZdepartment__inZarea__in)r   r   r   r   r   r   r   r   r   Ztransaction__punch_time)r   )Zlast__lt)Zlast__gtT)Zlast__isnull)django.db.modelsr*   Zdjango.contrib.authr+   mysite.personnel.modelsr,   superr#   get_querysetdatetimenowZ	timedelta
isinstanceZrequestuserZcurrent_companyfilterZis_superuserZget_auth_deptZget_auth_areaexistsallZdistinctr   valuesZannotater   date)r(   r*   r+   r,   querysetr3   ZtmwZbase_filterfiltersZ	auth_deptZ	auth_area)	__class__r   r    r1   2   s8    




,zDailyAbsentViewSet.get_queryset)r   r   r   r	   r   ZobjectsZselect_relatedZorder_byr;   r
   r%   r)   r1   __classcell__r   r   )r=   r    r#   %   s
   r#   )r2   Zdjango.utils.translationr   r"   r.   r   r   Zrest_frameworkr   r   Zmysite.att.api.serializersr   Zmysite.att.api.utils_classr   r/   r	   ZModelSerializerr
   ZListModelMixinr#   r   r   r   r    <module>   s   