B
    bb                  @   s   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 d d	lmZ d d
lmZ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 d dlmZmZ G dd deZG dd deZ G dd deZ!e"ee! dS )    N)ZKModelAdmin)ZKModelAction)zk_site)gettext_lazy)settings)forms)OutdoorEmployeeSchedule)OutdoorSchedulePlanner)	ModelFormValidationErrorModelMultipleChoiceField)
DepartmentEmployee)AdminRuntimeWarning)Q)
C_ATT_RULE)STATUS_VALIDSTATUS_RESIGN_PENDINGc                   s   e Zd ZejdddZeej	 ddZ
eej	 ddZejeddZejeddZejedej dZG d	d
 d
Zdd Z fddZdddZ  ZS )AddOutdoorEmployeeScheduleFormF)initialrequired)querysetr   ZscheduleEmp_field_startTime)labelZscheduleEmp_field_endTimeZ!scheduleEmp_field_schedulePlanner)r   r   c               @   s   e Zd ZeZdZdS )z#AddOutdoorEmployeeScheduleForm.Meta)dept_emp
departmentschedule_employee
start_dateend_dateschedule_plannerN)__name__
__module____qualname__r   ZmodelZfields r"   r"   BG:\easytimepro\master/mysite/att\admin\outdoorempschedule_admin.pyMeta   s   r$   c             C   sF   | j dd }| j dd }|rB| j dd rBtjj| j d d}|S )NZschd_employeer   r   )Zdepartment__in)cleaned_datagetr   objectsfilter)selfvalueZis_departmentr"   r"   r#   clean_schd_employee!   s
    z2AddOutdoorEmployeeScheduleForm.clean_schd_employeec                s   t t|  }|dd }|dd }|dd }|dd }|sRttddd|sfttddd|rn|s~ttd	dd||krttd
ddx>|D ]6}tjj|j	||d}|
 rttd|j ddqW |S )Nr   r   r   r   Z!scheduledAssign_error_empNotFoundz-1)codeZ&scheduledAssign_error_scheduleNotFoundZ scheduledAssign_error_datePeriodZ%scheduledAssign_error_datePeriodError)employeeZstart_date__lteZend_date__gteZatt_outdoor_schedule)superr   cleanr&   r   _r   r'   r(   idexists
first_name)r)   r%   r   r   Z	employeesr   empZoverlaps)	__class__r"   r#   r/   (   s&    
z$AddOutdoorEmployeeScheduleForm.cleanTc       
      K   s   | j d }| j d }| j d }| j d }g }xj|D ]b}t|||||d d}	||	 |jr|||jk sp||jk r|ttdt|dkr2tj| q2W |rtj| d S )	Nr   r   r   r   
created_by)r-   r   r   r   Zassigned_byZ&att_outdoor_assign_schedule_validation   )	r%   r   appendZ	hire_dater   r0   lenr'   Zbulk_create)
r)   Zcommitkwargsr   r   r   r   Zobjsr4   objr"   r"   r#   save>   s    





z#AddOutdoorEmployeeScheduleForm.save)T)r   r    r!   r   ZBooleanFieldr   r   r   r'   get_querysetr   r   r   Z	DateFieldr0   r   r   ZModelChoiceFieldr	   allr   r$   r+   r/   r<   __classcell__r"   r"   )r5   r#   r      s   
r   c               @   s0   e Zd ZedZedZedZeZdd Z	dS )AddOutdoorEmployeeScheduleZ%clientDetails_action_addClientDetailsZ,clientDetails_action_addClientDetailsHelpTxtZ0clientDetails_action_addClientDetailsDescriptionc             O   s*   t | jj}| r&|j| jjjd d S )N)r6   )r   requestZPOSTZis_validr<   userZusername)r)   argsr:   Zformr"   r"   r#   actionX   s    z!AddOutdoorEmployeeSchedule.actionN)
r   r    r!   r0   Zverbose_nameZhelp_txtshort_descriptionr   Zaction_formrD   r"   r"   r"   r#   r@   R   s
   r@   c                   s   e Zd ZdZdZefZdddZdd Ze	de_
d	d
 Ze	de_
dd Ze	de_
dd Ze	de_
dd Ze	de_
 fddZdd Z  ZS )OutdoorEmployeeScheduleAdmin)	r1   emp_coder3   	last_namer   r   r   mapviewtextview)Zemployee__emp_codeZemployee__first_nameZemployee__last_namer   r   r   Nc             C   s   dS )NFr"   )r)   rA   r;   r"   r"   r#   has_change_permissione   s    z2OutdoorEmployeeScheduleAdmin.has_change_permissionc             C   s   |j jS )N)r-   rG   )r)   r;   r"   r"   r#   rG   h   s    z%OutdoorEmployeeScheduleAdmin.emp_codeZemp_field_employeeCodec             C   s   |j jS )N)r-   r3   )r)   r;   r"   r"   r#   r3   m   s    z'OutdoorEmployeeScheduleAdmin.first_nameZemp_field_firstNamec             C   s   |j jS )N)r-   rH   )r)   r;   r"   r"   r#   rH   r   s    z&OutdoorEmployeeScheduleAdmin.last_nameZemp_field_lastNamec             C   s*   d}d dt|j d t| d gS )N   ,zk<i class="fa fa-map-marker" aria-hidden="true" style="color:red; font-size: 1.5em;"onclick="MapViewFuntion(z)"></i>)joinstrr1   )r)   r;   typer"   r"   r#   rI   w   s    z$OutdoorEmployeeScheduleAdmin.mapviewZoutdoor_map_viewc             C   s*   d}d dt|j d t| d gS )NrL   rM   zj<i class="fa fa-file-text"  aria-hidden="true" style="color:red; font-size: 1em;"onclick="TextViewFuntion(z)"></i>)rN   rO   r1   )Zselfselfr;   rP   r"   r"   r#   rJ      s    z%OutdoorEmployeeScheduleAdmin.textviewZoutdoor_text_viewc                s   |j j}tt| |j|d}|j js|j j}|j j}|j j	}|
 rX|j| d}|
 rt|j| d }|
 r|j| d}tt|d}|dkr|ttdtd dB ttdB }|S )N)
company_id)Zemployee__department__in)Zemployee__area__in)Zemployee__position__in
resign_emp0)Zemployee__status)rB   Zcurrent_companyr.   rF   r=   r(   Zis_superuserZget_auth_deptZget_auth_areaZget_auth_posr2   r>   ZdistinctrO   r   r&   r   r   r   )r)   rA   rQ   ZqsZ	auth_deptZ	auth_areaZauth_posrR   )r5   r"   r#   r=      s$     z)OutdoorEmployeeScheduleAdmin.get_querysetc       
      C   s   ddl m} | j}g }x>| jD ]4}|| jkrH| j| rR|| j|  q|| qW || _| |}|| _|j r| j}d| _t	||}|| _x|D ]}	|	d= |	d= qW |S g S )Nr   )yield_export_results rI   rJ   )
Zmysite.admin.admin_listrT   list_displayZexport_fields_dictr8   Z_setup_changelistresult_listcountZempty_value_displaylist)
r)   rA   rT   Ztemp_list_displayZexport_fieldZeachZclZtemp_empty_value_displayrW   xr"   r"   r#   get_export_data   s*    





z,OutdoorEmployeeScheduleAdmin.get_export_data)N)r   r    r!   rV   Zlist_filterr@   ZactionsrK   rG   r0   rE   r3   rH   rI   rJ   r=   r[   r?   r"   r"   )r5   r#   rF   ^   s    





rF   )#ZsixZmysite.adminr   r   Zmysite.admin.sitesr   Zdjango.utils.translationr   r0   Zdjango.confr   r   Zmysite.att.modelsr   r	   Zdjango.formsr
   r   r   Zmysite.personnel.modelsr   r   Zmysite.admin.exceptionsr   Zdjango.db.modelsr   Zmysite.att.global_cacher   Zmysite.admin.modelsr   r   r   r@   rF   registerr"   r"   r"   r#   <module>   s$   >[