B
    b                 @   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mZ d dlmZ d dlmZmZ d d	lmZmZmZmZmZ d d
lmZ d dl Z d dlmZ G dd dejZG dd dejZG dd deZG dd deZ G dd dejZ!G dd deZ"dS )    N)Q)ModelChoiceField)render)gettext_lazy)formsZKModelAction)AdminRuntimeWarning)TrainingTrainingCategory)APPLICATIONAUDIT_STATUSAUDIT_SUCCESSREFUSECANCEL_AUDIT_SUCCESS)Employee)get_current_company_idc                   sv   e Zd ZejedddZejeddZejeddZ	e
edej dZejed	ddZ fd
dZ  ZS )AddTrainingFormZtraining_field_employeeF)labelrequiredZtraining_field_startTime)r   Ztraining_field_endTimeZtraining_field_trainingCategory)r   querysetZtraining_field_applyReasonc                s2   t t| j|| t }tjj|d| jd _d S )N)
company_idcategory)	superr   __init__r   r
   objectsfilterZfieldsr   )selfargskwargsr   )	__class__ <G:\easytimepro\master/mysite/att\actions\training_actions.pyr      s    zAddTrainingForm.__init__)__name__
__module____qualname__r   ZEmployeeManyToManyField_empZDateTimeField
start_timeend_timer   r
   r   Zget_querysetr   	TextFieldreasonr   __classcell__r    r    )r   r!   r      s   r   c               @   s2   e Zd ZejedeedZej	edddZ
dS )ApproveFormZtraining_field_approvalState)r   initialchoicesZtraining_field_approvalRemarkF)r   r   N)r"   r#   r$   r   ZChoiceFieldr%   r   r   audit_statusr)   audit_reasonr    r    r    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 )AddTrainingZtraining_action_newZtraining_action_newDescriptionZtraining_action_newHelpTxtc             O   sD  ddl m} d}|dd }|dd }||krDtd}|rDt|| jjd}|r*|dd }|d	d }	tj	j
|d
}
x|
D ]}|jr|jtj|d krtd| }qtj	j
|dt|dt|dB jttfd}|rtd| }qt|tj|dtj|d||	d}|  qW ntd}|r@t|d S )Nr   )settings r'   r(   Zleave_time_invalid_rangeemployeer   r*   )Zid__inz%Y-%m-%d %H:%M:%SZ!leave_time_invalid_range_hiredate)r4   )Zstart_time__gt)Zend_time__lt)Zaudit_status__inZtraining_time_overlap)r4   r'   r(   Zcategory_idZapply_reasonZselect_employee)Zdjango.confr2   getr%   r   requestPOSTZgetlistr   r   r   Z	hire_datedatetimestrptimedater	   Zexcluder   r   r   save)r   r   r   r2   messager'   r(   Zempsr   r*   Z	employeesr&   tmpobjr    r    r!   action0   s>    
zAddTraining.actionN)
r"   r#   r$   r%   verbose_nameshort_descriptionhelp_txtr   action_formr?   r    r    r    r!   r1   *   s
   r1   c               @   s4   e Zd ZdZedZedZedZeZ	dd Z
dS )TrainingApproveTZatt_action_approvec             O   s   | j jd| j jddr0t| j | jddiS xP| jD ]F}|d |_t|d |_	| j j
j|_tj |_| j j
|_|  q8W d S )Npopupr3   
form_titleZtraining_approver0   r/   )r6   r7   r5   GETr   action_templater   r0   intr/   userusernameapproverr8   now
audit_time_approve_userr;   )r   r   r   r>   r    r    r!   r?   _   s    

zTrainingApprove.actionN)r"   r#   r$   batch_selectr%   r@   rB   rA   r,   rC   r?   r    r    r    r!   rD   X   s   rD   c               @   s   e Zd ZejedddZdS )
RevokeFormZrevoke_reasonT)r   r   N)r"   r#   r$   r   r)   r%   r0   r    r    r    r!   rQ   k   s   rQ   c               @   s4   e Zd ZdZedZedZedZeZ	dd Z
dS )TrainingRevokeTZatt_action_revokec             O   s   | j jd| j jddr0t| j | jddiS x`| jD ]V}|jtkr|d |_	t
|_| j jj|_tj |_| j j|_|  q8ttdq8W d S )NrE   r3   rF   Ztraining_revoker0   Z$only_approved_records_can_be_revoked)r6   r7   r5   rG   r   rH   r   r/   r   r0   r   rJ   rK   rL   r8   rM   rN   rO   r;   r   r%   )r   r   r   r>   r    r    r!   r?   v   s    



zTrainingRevoke.actionN)r"   r#   r$   rP   r%   r@   rB   rA   rQ   rC   r?   r    r    r    r!   rR   o   s   rR   )#r8   Zdjango.db.modelsr   Zdjango.formsr   Zdjango.shortcutsr   Zdjango.utils.translationr   r%   Zmysite.adminr   r   Zmysite.admin.exceptionsr   Zmysite.att.modelsr	   r
   Zmysite.att.models_choicesr   r   r   r   r   Zmysite.personnel.modelsr   Zmysite.att.utilsr   ZZKActionFormr   r,   r1   rD   rQ   rR   r    r    r    r!   <module>   s"   .