B
    b                 @   s   d dl mZ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mZmZ d dlmZ G dd	 d	eZG d
d de	ZdS )    )	ModelFormValidationErrorModelMultipleChoiceField)gettext_lazy)formsZKModelAction)AttSchedule)AttShift)
DepartmentAreaPosition)Employeec                   s   e Zd ZejdddZejdddZejdddZee	j
 ddZeej
 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j
 ddZejdddZG dd dZd	d
 Z fddZdddZ  ZS )AddAttScheduleFormF)initialrequired)querysetr   Zschedule_field_startDate)labelZschedule_field_endDatec               @   s   e Zd ZeZdZdS )zAddAttScheduleForm.Meta)dept_emp
departmentschd_employee
start_dateend_dateshiftschedule_coverarea_empareapos_emppositionN)__name__
__module____qualname__r   ZmodelZfields r!   r!   <G:\easytimepro\master/mysite/att\actions\schedule_actions.pyMeta   s   r#   c             C   s   | j dd }| j dd }| j dd }| j dd }|r^| j dd r^tjj| j d d}|r| j dd rtjj| j d d}|r| j d	d rtjj| j d	 d
}|S )Nr   r   r   r   r   )Zdepartment__inr   )Zarea__inr   )Zposition__in)cleaned_datagetr   objectsfilter)selfvalueZis_departmentZis_areaZis_positionr!   r!   r"   clean_schd_employee#   s    z&AddAttScheduleForm.clean_schd_employeec       	         s  t t|  }|dd }|dd }|dd }|d}|dd }|s\ttddd|spttd	dd|rx|sttd
dd||krttdddtjj|||d}|	 r|r|
  n6| }ttdd|jj|jd|jddd|S )Nr   r   r   r   r   Z!scheduledAssign_error_empNotFoundz-1)codeZ#scheduledAssign_error_shiftNotFoundZ scheduledAssign_error_datePeriodZ%scheduledAssign_error_datePeriodError)Zemployee__inZstart_date__lteZend_date__gtezEscheduledAssign_error_schdOverlap_%(obj)s_%(start_date)s_%(end_date)sz%Y-%m-%d)objr   r   )r+   Zparams)superr   cleanr%   r   _r   r&   r'   existsdeletefirstemployeeZ
first_namer   strftimer   )	r(   r$   r   r   Z	employeesr   r   ZoverlapsZoverlap)	__class__r!   r"   r.   0   s2    

zAddAttScheduleForm.cleanTc       	      C   s   | j d }| j d }| j d }| j d }g }xB|D ]:}t||||d}|| t|dkr2tj| g }q2W |rtj| d S )Nr   r   r   r   )r3   r   r   r      )r$   r   appendlenr&   Zbulk_create)	r(   Zcommitr   r   r   r   ZobjsZempr,   r!   r!   r"   saveM   s    





zAddAttScheduleForm.save)T) r   r   r    r   ZBooleanFieldr   r   r   r   r
   r&   Zget_querysetr   r   r   r   r   r   r   Z	DateFieldr/   r   r   ZModelChoiceFieldr	   r   r   r#   r*   r.   r9   __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 )AddAttScheduleZschedule_action_addScheduleZ'schedule_action_addSchedule_descriptionZ$schedule_action_addSchedule_help_txtc             O   s    t | jj}| r|  d S )N)r   ZrequestZPOSTZis_validr9   )r(   argskwargsZformr!   r!   r"   actiond   s    zAddAttSchedule.actionN)
r   r   r    r/   Zverbose_nameZshort_descriptionZhelp_txtr   Zaction_formr>   r!   r!   r!   r"   r;   ^   s
   r;   N)Zdjango.formsr   r   r   Zdjango.utils.translationr   r/   Zmysite.adminr   r   Zmysite.att.modelsr   r	   Zmysite.personnel.modelsr
   r   r   Z&mysite.personnel.models.model_employeer   r   r;   r!   r!   r!   r"   <module>   s   N