B
    b+                 @   s  d dl Z d dlZd dlZ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 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# G dd deZ$G dd de$Z%dS )    N)	ModelForm)JsonResponse)gettext_lazy)cache)settings)RegexValidator)AdminRuntimeWarning)forms)db_const)Employee)EmpPayrollProfile)AppList)get_software_type_without_load)INTELLIGENTTIMEEASYTIMEPROc                   s  e Zd ZeddZejeddddZej	dddZ
ejdd	dZejdddZejdddZejdddZejdddZejdddZejejed
dZejejeddZejddedegdZejddedegdZejddeddZejddeddZejddeddZe d egkrRejdeddZ ejdeddZ! fddZ"dd Z#dd Z$dd  Z%d!d" Z&d#d$ Z'd%d& Z(d'd( Z)d)d* Z*d/ fd+d,	Z+G d-d. d.Z,  Z-S )0EmployeeFormz^[0-9a-zA-Z]*$z)Only alphanumeric characters are allowed.Zemp_field_enrollSNFT)labelrequireddisabled )r   initial0Z$empPayrollProfile_field_payment_mode)choicesr   Z$empPayrollProfile_field_payment_type   Z!empPayrollProfile_field_bank_name)r   
max_lengthr   Z
validatorsZ$empPayrollProfile_field_bank_accountZ$empPayrollProfile_field_personnel_id)r   r   r   Z empPayrollProfile_field_agent_idZ%empPayrollProfile_field_agent_accountZsoftware_typeZemp_field_email)r   r   Zemp_field_mobilec                s   t t| j|| d S )N)superr   __init__)selfargskwargs)	__class__ >G:\easytimepro\master/mysite/personnel\forms\employee_forms.pyr   ;   s    zEmployeeForm.__init__c             C   s   d| j kr| j| j d S )Nphoto)changed_datainstanceZset_employee_photocleaned_data)r   r!   r!   r"   
save_photo>   s    
zEmployeeForm.save_photoc             C   sZ   ddl m} d| jkrVddlm} | jdd }|s8d S |d| jjd}|| j|| d S )Nr   )save_bio_photo	bio_photo)get_comm_settingZedit_policy)
company_id)	mysite.utilsr(   r$   Zmysite.iclock.comm.utilsr*   filesgetr%   r+   )r   r(   r*   r#   Zapproval_stater!   r!   r"   r(   B   s    
zEmployeeForm.save_bio_photoc       	   	   C   s   d| j kr| jdd }| jdd }|r|r|d}|d}t|t|krVd S | jjj}x|tt|D ]l}|| }|| }| jjj	|ddd
 }|s|| j|dd|tj d }qn||_tj |_|  qnW d S )N	templatesfps,10   )Zbio_no__exact	major_verbio_type)employeebio_nor4   r5   bio_tmpupdate_time)r$   datar.   splitlenr%   biodata_setmodelrangefilterfirstdatetimenowsaver8   Zupload_time)	r   r/   r0   ZtsclsxfidZftmpfpr!   r!   r"   save_fingerprintL   s&    



zEmployeeForm.save_fingerprintc             C   s   ddl m}m} ddlm} |jj| jjjddd}| j	 }xJ|D ]B}||j
dr\d}nd	}x&|D ]}	|j||	d
}
||j|
 qfW qFW d S )Nr   )saveCmdDevIdentity_ex)TerminalF)Z
is_default)Zarea__inz2.2.14z)DATA DELETE FINGERTMP PIN={pin}	FID={fid}zDATA DEL_FP PIN={pin}	FID={fid})pinrG   )r,   rJ   rK   Zmysite.iclock.modelsrL   objectsr@   r%   ZarearM   Zpush_protocolformatpk)r   r0   rJ   rK   rL   ZdevsrM   ZdevZ_cmdrH   cmdr!   r!   r"   remove_from_deviceb   s    


zEmployeeForm.remove_from_devicec             C   sP   d| j krL| jdd}|d}|rL| jjjdd|d}|  | | d S )Ndel_fpsr   r1   r2   r3   )r4   r5   Z
bio_no__in)	r$   r:   r.   r;   r%   r=   r@   deleterR   )r   r0   Z_fpsr!   r!   r"   remove_fingerprintp   s    

zEmployeeForm.remove_fingerprintc             C   s.   d| j kr| j| jd  n| jd d S )NZself_password)r$   r%   Zset_passwordr&   pop)r   r!   r!   r"   set_self_passwordy   s    
zEmployeeForm.set_self_passwordc             C   s    d| j kr| j| jd  d S )Ndevice_password)r$   r%   Zset_devicepasswordr&   )r   r!   r!   r"   set_device_password   s    
z EmployeeForm.set_device_passwordc             C   s   |    d S )N)Z	_save_m2m)r   r!   r!   r"   save_m2m   s    zEmployeeForm.save_m2mc                s  t  }| jdd|_| jdd|_| jdd|_|jdkr`|jdksT|jdkr`ttdtt	| j
dd	}|   |   |   |   |   |   d
}t| jt|@ rtj |_d|_dt|j }t|d tjrd| jkrddlm} || t  }t jj |d}|! r6|d }n||_"| jdd|_#| jdd|_| jdd|_| jdd|_| jdd|_$| jdd|_%| jdd|_&|jdkr|jdks|jdkrttd|
  |S )Npayment_typer3   	bank_namer   bank_account3z(please_fill_Bank_Name and_account_numberT)commit)emp_codestatusZ
first_nameZcard_norX   Zdev_privilegeZverify_moder)   Zemp_change_flag_Z
app_statusr   )update_personnel_gps)r6   payment_modepersonnel_idagent_idagent_account)'r   r&   r.   r[   r\   r]   r   _r   r   rD   r'   r(   rW   rY   rU   rI   setr$   rB   rC   r9   	enroll_snstrr+   r   r   ZACTIVE_APP_LOCATIONZmysite.mobile.tasksrb   ZdelayrN   r@   existsr6   rc   rd   re   rf   )r   r_   emp_payrollZempattrsZemp_change_keyrb   Z
payroll_qs)r    r!   r"   rD      sP    



zEmployeeForm.savec               @   s   e Zd ZeZdZdS )zEmployeeForm.Meta__all__N)__name__
__module____qualname__r   r>   fieldsr!   r!   r!   r"   Meta   s   rs   )T).ro   rp   rq   r   Zalphanumericr	   	CharFieldrg   ri   Z	FileFieldr)   fp_countfp_typer0   r/   dur_fpsrS   zkformsZChoiceFieldpayroll_db_constZPAYROLL_MODErc   ZPAYROLL_TYPEr[   r\   r]   rd   re   rf   r   r   Z
EmailFieldZemailmobiler   r'   r(   rI   rR   rU   rW   rY   rZ   rD   rs   __classcell__r!   r!   )r    r"   r      sJ   

	1r   c                   sD   e Zd ZejedddZejdeddddZ fdd	Z  Z	S )
EmployeeChangeFormZemp_field_employeeCodeT)r   r   FZappList_field_clientId   )r   r   r   r   c                s  t t| j|| t| dd }|r:|jr:d| jd jjd< | jr| jj	j
ddddd	d
d}t|| jd _dtttdd |D | jd _dtttdd |D | jd _dtttdd |D | jd _dtttdd |D | jd _| jj}tjj
|| jjd}| rB|d j| jd _nd| jd _tjj
| jd}| r|d }|j| jd _|j| jd _|j| jd _|j| jd _|j| jd  _|j| jd! _|j| jd" _d S )#Nr%   Tr`   readonlyr2   r3   )r4   r5   r7   r8   ZvalidZduressru   r1   c             S   s   g | ]}|d  qS )r   r!   ).0rH   r!   r!   r"   
<listcomp>   s    z/EmployeeChangeForm.__init__.<locals>.<listcomp>r0   c             S   s   g | ]}|d  qS )   r!   )r   rH   r!   r!   r"   r      s    rv   c             S   s   g | ]}|d  qS )r3   r!   )r   rH   r!   r!   r"   r      s    r/   c             S   s   g | ]}|d  r|d qS )   r   r!   )r   rH   r!   r!   r"   r      s    rw   )Zusernamecompanyr   	client_idzNot set)r6   rc   r[   r\   r]   rd   re   rf   ) r   r|   r   getattrrP   rr   Zwidgetrm   r%   r=   r@   Zvalues_listr<   r   joinlistmaprj   r`   r   rN   r   rk   Zdevice_tokenr   rc   r[   r\   r]   rd   re   rf   )r   r   r   r%   r0   Zuser_detailsZapp_listrl   )r    r!   r"   r      s6    
&&&&

zEmployeeChangeForm.__init__)
ro   rp   rq   r	   rt   rg   r`   r   r   r{   r!   r!   )r    r"   r|      s   r|   )&osrB   timeshutilZdjango.formsr   Zdjango.httpr   Zdjango.utils.translationr   rg   Zdjango.core.cacher   Zdjango.confr   Zdjango.core.validatorsr   Zmysite.admin.exceptionsr   Zmysite.adminr	   rx   Zmysite.payrollr
   ry   Zmysite.personnel.modelsr   Zmysite.payroll.modelsr   Zmysite.mobile.modelsr   Zmysite.admin.utilsr   Zmysite.admin.constr   r   r   r|   r!   r!   r!   r"   <module>   s,     