B
    b                 @   s   d dl mZ d dlmZ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 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dS )    )settings)	ModelFormModelChoiceFieldValidationError)gettext_lazy)forms)BOOLEANSBOOLEAN_YES
BOOLEAN_NO)widgets)Area)Terminal)db_constchoicesc                   sb   e Zd ZejedddZejedddeddZG dd	 d	Z fd
dZ	 fddZ
  ZS )TerminalCreationFormterminal_field_lockFuncr   )labelinitialterminal_field_heartbeat
   terminal_field_heartbeatHelpTxt)r   r   	min_value	help_textc               @   s   e Zd ZeZdZdS )zTerminalCreationForm.Meta)timezone	lock_funcN)__name__
__module____qualname__r   modelexclude r    r    ;G:\easytimepro\master/mysite/iclock\forms\terminal_forms.pyMeta   s   r"   c                s   t t| j|| d S )N)superr   __init__)selfargskwargs)	__class__r    r!   r$      s    zTerminalCreationForm.__init__c                s8   t t|  }tjs4d|ks(|d d kr4ttdd S )NcompanyzCompany is required.)r#   r   cleanr   CLOUD_VERSIONr   _)r%   cleaned_data)r(   r    r!   r*      s    zTerminalCreationForm.clean)r   r   r   r   IntegerFieldr,   r   	heartbeatr"   r$   r*   __classcell__r    r    )r(   r!   r      s   r   c                   sr  e Zd ZejedejddZejeddddZ	ejedej
dZed	ed
ejdZejedejddZejedeedZejedeedZejedddeddZejedejejdZejeddedddZejeddddZejedee dZ!ejed dd!Z"ejed"ej#ej$dZ% fd#d$Z&d+ fd%d&	Z' fd'd(Z(G d)d* d*Z)  Z*S ),TerminalChangeFormZterminal_field_snT)r   
max_lengthdisabledZterminal_field_ipAddressF)r   r3   requiredZterminal_field_alias)r   r2   NZterminal_field_area)querysetr   widgetZterminal_field_timezone   )r   r   r   Zterminal_field_isRegistrationZterminal_field_isAttendancer   r   r   r   )r   r   r   r   Zterminal_field_transferModeZterminal_field_transferInterval   Z&terminal_field_transferIntervalHelpTxt)r   r   r   r   Zterminal_field_transferTimez.^((0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9];?)+$z00:00;14:05;)r   Zregexr   Z"terminal_field_enableAccessControlr   )r   r   Zterminal_field_deviceDirectionc                s\   t t| j|| tj | jd _| jj	| jd _
d| jd jjd< d| jd jjd< d S )Narear   Tsnreadonly
ip_address)r#   r1   r$   r   objectsallfieldsr5   instancer   r   r6   Zattrs)r%   r&   r'   )r(   r    r!   r$   4   s
    zTerminalChangeForm.__init__c                s~   ddl m} tt| |}t|d}|rZytjj|d}W q` t	k
rV   |j
}Y q`X n|j
}|j
|krz||jddd |S )Nr   )saveCmdoriginal_area)idZCHECKF)Zactive_async)Zmysite.utilsrA   r#   r1   savegetattrr   r=   get	Exceptionr9   Zpk)r%   ZcommitrA   r@   rB   )r(   r    r!   rD   ;   s    

zTerminalChangeForm.savec                s8   t t|  }tjs4d|ks(|d d kr4ttdd S )Nr)   zCompany is required.)r#   r1   r*   r   r+   r   r,   )r%   r-   )r(   r    r!   r*   L   s    zTerminalChangeForm.cleanc               @   s   e Zd ZeZdZdZdS )zTerminalChangeForm.Meta)r   )r)   r:   r<   aliasr9   terminal_tzis_registrationis_attendancer/   transfer_modetransfer_intervaltransfer_timedevice_directionN)r   r   r   r   r   r   r?   r    r    r    r!   r"   R   s   r"   )T)+r   r   r   r   Z	CharFieldr,   r   ZMAX_TERMINAL_SNr:   r<   ZMAX_TERMINAL_ALIASrH   r   r   ZAreaRadioSelectr9   ZChoiceFieldr   ZTIMEZONE_CHOICESrI   r   r	   rJ   rK   r.   r/   ZTRANSFER_MODEZ	REAL_TIMErL   rM   Z
RegexFieldrN   r
   Z	is_accessr   ZDEVICE_DIRECTIONZ	IN_DEVICErO   r$   rD   r*   r"   r0   r    r    )r(   r!   r1      s.   



r1   N)Zdjango.confr   Zdjango.formsr   r   r   Zdjango.utils.translationr   r,   Zmysite.adminr   Zmysite.base_choicesr   r	   r
   Zmysite.personnelr   Zmysite.personnel.modelsr   Zmysite.iclock.modelsr   Zmysite.iclockr   r   r   r1   r    r    r    r!   <module>   s   