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 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 d dlmZmZ G dd deZG dd dejZG dd dejZeeG dd dejZ dd Z!dS )    N)gettext_lazy)forms)ValidationError)AdminRuntimeWarning)admin)
Department)fieldswidgets)GPSForDepartment)	ModelForm)MinValueValidatorMaxValueValidatorc                   s   e Zd ZejedddZejeddZejeddZ	ej
eddejjd	d	id
dZej
eddejjd	d	id
dZejeddZejeddZ fddZ fddZd fdd	ZG dd dZ  ZS )GPSForDepartmentChangeForm!gpsForDepartment_field_departmentT)labelZdisabledgpsForDepartment_field_location)r   gpsForDepartment_field_distancegpsForEmployee_field_longitudeg\lS@readonly)attrs)r   initialwidgetgpsForEmployee_field_latitudeg_7s)@ gpsForDepartment_field_startDategpsForDepartment_field_endDatec                s2   t t| j|| | jjr.t| jj| jd _d S )Ndept)	superr   __init__instanceZpkstr
departmentr   r   )selfargskwargs)	__class__ @G:\easytimepro\master/mysite/mobile\admin\departmentgps_admin.pyr      s    z#GPSForDepartmentChangeForm.__init__c                s   t t|  }t| |S )N)r   r   cleandata_pre_check)r!   cleaned_data)r$   r%   r&   r'   $   s    z GPSForDepartmentChangeForm.cleanc                s2   t t| |}| jr.ddlm} |j| |S )Nr   )tasks)r   r   saveZchanged_datamysite.mobiler*   update_department_gpsdelay)r!   Zcommitr   r*   )r$   r%   r&   r+   )   s
    zGPSForDepartmentChangeForm.savec               @   s   e Zd ZeZdZdS )zGPSForDepartmentChangeForm.Meta)locationdistance	longitudelatitude
start_dateend_dateN)__name__
__module____qualname__r
   Zmodelr   r%   r%   r%   r&   Meta0   s   r8   )T)r5   r6   r7   r   	CharField_r   r/   IntegerFieldr0   
FloatFieldr	   ZKNumberInputr1   r2   	DateFieldr3   r4   r   r'   r+   r8   __classcell__r%   r%   )r$   r&   r      s   r   c                   s   e Zd Zejedej e	j
ddZejeddZejeddej	jddid	d
Zejeddej	jddid	d
ZejedddZejeddZejeddZ fddZ  ZS )AddGPSForDepartmentFormr   T)r   Zquerysetr   requiredr   )r   r   g\lS@r   )r   )r   r   r   r   g_7s)@r   2   )r   r   r   r   c                s   t t|  }t| |S )N)r   r@   r'   r(   )r!   r)   )r$   r%   r&   r'   B   s    zAddGPSForDepartmentForm.clean)r5   r6   r7   django_formsZModelMultipleChoiceFieldr:   r   Zobjectsallr	   ZDepartmentSelectMultipler    r   r9   r/   r<   r=   r1   r2   r;   r0   r>   r3   r4   r'   r?   r%   r%   )r$   r&   r@   5   s   
r@   c               @   s0   e Zd ZedZedZedZeZdd Z	dS )AddGPSForDepartmentZ+gpsForDepartment_action_addGPSForDepartmentZ2gpsForDepartment_action_addGPSForDepartmentHelpTxtZ6gpsForDepartment_action_addGPSForDepartmentDescriptionc             O   sr   ddl m} | jjdd }|rb|dd  x@|D ]*}||d< tf |}|  |j	| q2W nt
tdd S )Nr   )r*   r    Zdepartment_idZdepartmentGps_select_dept)r,   r*   requestZPOSTZgetlistpopr
   r+   r-   r.   r   r:   )r!   r"   r#   r*   Zdeptsr   objr%   r%   r&   actionN   s    

zAddGPSForDepartment.actionN)
r5   r6   r7   r:   Zverbose_nameZhelp_txtZshort_descriptionr@   Zaction_formrI   r%   r%   r%   r&   rE   H   s
   rE   c                   s6   e Zd ZdZdZeZefZdd Z	 fddZ
  ZS )GPSForDepartmentAdmin)r    Zget_dept_coder/   r1   r2   r0   r3   r4   )Zdepartment__dept_codeZdepartment__dept_namec             C   s   dS )NFr%   )r!   rF   r%   r%   r&   has_add_permissionc   s    z(GPSForDepartmentAdmin.has_add_permissionc                s    t t| |j|jjd}|S )N)Zdepartment__company_id)r   rJ   get_querysetfilteruserZcurrent_company)r!   rF   Zqs)r$   r%   r&   rL   f   s    z"GPSForDepartmentAdmin.get_queryset)r5   r6   r7   Zlist_displayZlist_filterr   ZformrE   ZactionsrK   rL   r?   r%   r%   )r$   r&   rJ   \   s   rJ   c             C   s   |  dd }|  dd }|  dd }|  dd }|  dd }|d krPttd|d krdttd|rtt|dkrttd	|rt|d
krttd|r|dk rttd|r|r||k rttdd S )Nr0   r3   r4   r2   r1   Zgps_dept_startdateZgps_dept_enddateZ   Zgps_latitude_invalid_range   Zgps_longitude_invalid_ranger   Zgps_distance_invalidZgps_date_invalid_range)getr   r:   abs)datar0   r3   r4   r2   r1   r%   r%   r&   r(   l   s"    r(   )"ZdatetimeZdjango.utils.translationr   r:   Zdjangor   rC   Zdjango.formsr   Zmysite.admin.exceptionsr   mysiter   Zmysite.adminZmysite.personnel.modelsr   Zmysite.personnelr   r	   Zmysite.mobile.modelsr
   r   Zdjango.core.validatorsr   r   r   ZZKActionFormr@   ZZKModelActionrE   registerZZKModelAdminrJ   r(   r%   r%   r%   r&   <module>   s"   !
