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 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Zd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Z!e"ee! dS )    N)forms)get_content_type_for_model)add_preserved_filters)	ModelForm)TemplateResponse)gettext_lazy)ZKModelAction)ZKModelAdmin)AdminRuntimeWarning)zk_site)ClientDetails)OutdoorSchedulePlanner)get_current_company_idZ	_to_fieldZ_popupc                   s   e Zd ZejeddZejeddej	ddiddZ
ejedd	ej	dd
iddZejedd	ej	ddiddZejedd	ej	ddiddZejedd	ej	ddiddZ fddZ  ZS )AddOurtdoorSchedulePlannerForm"SchedulePlanner_field_scheduleName)labelSchedulePlanner_field_clientsTz
lay-filtercompany_name1)attrs)r   requiredwidgetFcompany_name2company_name3company_name4company_name5c                s   t t| j|| t }tjj|d }|r>dd |D }ng }|| jd _	|| jd _	|| jd _	|| jd _	|| jd _	d S )	N)companyc             S   s   g | ]}|d  |d fqS )idcompany_name ).0ptr   r   FG:\easytimepro\master/mysite/att\admin\outdoorscheduleplanner_admin.py
<listcomp>/   s    z;AddOurtdoorSchedulePlannerForm.__init__.<locals>.<listcomp>r   r   r   r   r   )
superr   __init__r   r   objectsfiltervaluesfieldschoices)selfargskwargs
company_idclient_detailscompany_choice)	__class__r   r!   r$   *   s    z'AddOurtdoorSchedulePlannerForm.__init__)__name__
__module____qualname__r   	CharField_schedule_namedj_formMultipleChoiceFieldSelectMultipler   r   r   r   r   r$   __classcell__r   r   )r0   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 )AddOutdoorSchedulePlannerZ%clientDetails_action_addClientDetailsZ,clientDetails_action_addClientDetailsHelpTxtZ0clientDetails_action_addClientDetailsDescriptionc          	   O   s  | j jj}tjj| j jd|d}|r4tt	dg }d}x~| j j
dD ]l}i }|rt||d< | j j
d| |d< | j j
d| |d< | j j
d	| |d	< || |d
7 }qLW t|dkrtt	dtjj|d}	i }
x|	D ]}|j|
t|j< qW x|D ]}tdd td
ddgt|d dD }tdd td
ddgt|d	 dD }||krtt	d|
|d   |dkr
tt	d|
|d   q
W g }xP|D ]H}tjj|d t djddd}||d |d |d	 t|f qW t|dd d}xttd
t|D ]b}||d
  d || d kr&||d
  d || d
 kr&tt	d||d
  || f q&W i }| j jd|d< t||d< tf |}|  d S )Nr6   )r6   r   Z#att_outDoorManagement_Schedule_namer   clients	client_iddatesinclockoutclock   Z&att_outdoor_create_schedule_validation)r-   c             s   s   | ]\}}|t | V  qd S )N)int)r   xtr   r   r!   	<genexpr>X   s    z3AddOutdoorSchedulePlanner.action.<locals>.<genexpr><   i  :c             s   s   | ]\}}|t | V  qd S )N)rB   )r   rC   rD   r   r   r!   rE   Y   s    'att_outdoor_company_out_time_validation&att_outdoor_company_in_time_validation)r   r-   r   T)flatc             S   s   | d S )NrA   r   )rC   r   r   r!   <lambda>f       z2AddOutdoorSchedulePlanner.action.<locals>.<lambda>)key   att_outdoor_schedule_overlapschedule_details)requestusercurrent_companyr   r%   r&   POSTgetr
   r5   getlistrB   appendlenr   r   r   sumzipreversedsplitr   values_listlistsortedrangejsondumpssave)r*   r+   r,   r-   ZSchedule_namerP   irC   result_dictr.   r/   zinTimeoutTimeduplicate_testyr   sorted_listobjr   r   r!   action@   s^    



,,


($
z AddOutdoorSchedulePlanner.actionN)
r1   r2   r3   r5   Zverbose_nameZhelp_txtshort_descriptionr   Zaction_formrm   r   r   r   r!   r;   :   s
   r;   c                   s   e Zd ZejedddZddlmZ ejeddej	dd	id
dZ
ejeddej	ddid
dZejeddej	ddid
dZejeddej	ddid
dZejeddej	ddid
dZ fddZG dd dZ  ZS ) OutdoorSchedulePlannerChangeFormr   T)r   Zdisabledr   )r   r   Fz
lay-filterr   )r   )r   r   r   r   r   r   r   c                s   t t| j|| d| jd jjd< t }tjj	|d
 }|rPdd |D }ng }|| jd _|| jd _|| jd	 _|| jd
 _|| jd _d S )NTr6   readonly)r   c             S   s   g | ]}|d  |d fqS )r   r   r   )r   r    r   r   r!   r"      s    z=OutdoorSchedulePlannerChangeForm.__init__.<locals>.<listcomp>r   r   r   r   r   )r#   ro   r$   r(   r   r   r   r   r%   r&   r'   r)   )r*   r+   r,   r-   r.   r/   )r0   r   r!   r$      s    z)OutdoorSchedulePlannerChangeForm.__init__c               @   s   e Zd ZeZdZdS )z%OutdoorSchedulePlannerChangeForm.Meta__all__N)r1   r2   r3   r   modelr(   r   r   r   r!   Meta   s   rs   )r1   r2   r3   r   r4   r5   r6   djangor8   r9   r   r   r   r   r   r$   rs   r:   r   r   )r0   r!   ro   s   s$   



ro   c                   st   e Zd ZdZdZddiZefZeZ	dd Z
ede
_dd Zed	e_d
d ZdddZ fddZdd Z  ZS )OutdoorSchedulePlannerAdmin)r6   mapviewtextview)r6   r6   c             C   s*   d}d dt|j d t| d gS )NrN   ,zk<i class="fa fa-map-marker" aria-hidden="true" style="color:red; font-size: 1.5em;"onclick="MapViewFuntion(z)"></i>)joinstrr   )r*   rl   typer   r   r!   rv      s    z#OutdoorSchedulePlannerAdmin.mapviewZoutdoor_map_viewc             C   s*   d}d dt|j d t| d gS )NrN   rx   zj<i class="fa fa-file-text"  aria-hidden="true" style="color:red; font-size: 1em;"onclick="TextViewFuntion(z)"></i>)ry   rz   r   )r*   rl   r{   r   r   r!   rw      s    z$OutdoorSchedulePlannerAdmin.textviewZoutdoor_text_viewc          	   C   sH  g }d}xv|j dD ]f}i }|rtt||d< |j d| |d< |j d| |d< |j d| |d< || |d7 }qW tj }	i }
x|	D ]}|j|
t|j< qW x|D ]}t	dd	 t
dd
dgt|d dD }t	dd	 t
dd
dgt|d dD }||kr0ttd|
|d   |dkrttd|
|d   qW g }xP|D ]H}tjj|d t djddd}||d |d |d t|f q^W t|dd d}xttdt|D ]b}||d  d || d kr||d  d || d krttd||d  || f qW t||_|  d S )Nr   r<   r=   r>   r?   r@   rA   c             s   s   | ]\}}|t | V  qd S )N)rB   )r   rC   rD   r   r   r!   rE      s    z9OutdoorSchedulePlannerAdmin.save_model.<locals>.<genexpr>rF   i  rG   c             s   s   | ]\}}|t | V  qd S )N)rB   )r   rC   rD   r   r   r!   rE      s    rH   rI   )r   r-   r   T)rJ   c             S   s   | d S )NrA   r   )rC   r   r   r!   rK      rL   z8OutdoorSchedulePlannerAdmin.save_model.<locals>.<lambda>)rM   rN   rO   )rT   rV   rB   rW   r   r%   allr   r   rY   rZ   r[   r\   r
   r5   r&   r   r]   r^   r_   r`   rX   ra   rb   rP   rc   )r*   rQ   rl   formchangerP   rd   rC   re   r.   r/   rf   rg   rh   ri   rj   r   rk   r   r   r!   
save_model   sJ    



,,

($z&OutdoorSchedulePlannerAdmin.save_modelF Nc             C   s  | j j}|j}| |}	t|	|d|}| |}
|d }tjj|d	d}t
|d d }|||| || ||| ||d|
d k	|
||t| j j| j| jtt||t|d |r| jd k	r| j}n| j}| jj|_t||pd||jf d	| d
g|S )N)preserved_filtersoptsZ	object_id)r   rP   r   T)addr~   has_add_permissionhas_change_permissionhas_delete_permissionZhas_file_fieldZhas_absolute_urlZabsolute_urlform_urlr   Zcontent_type_idsave_assave_on_topZto_field_varZis_popup_var	app_labeldataZ
data_countzadmin/%s/%s/change_form.htmlzadmin/%s/change_form.htmlzadmin/change_form.html)rr   Z_metar   Zget_preserved_filtersr   Zget_view_on_site_urlr   r%   r&   r'   ra   loadsupdater   r   r   r   Zpkr   r   TO_FIELD_VARIS_POPUP_VARrX   Zadd_form_templateZchange_form_templateZ
admin_sitenameZcurrent_appr   Z
model_name)r*   rQ   contextr   r~   r   rl   r   r   r   Zview_on_site_urlr   Zscheduleplanner_dataZscheduleplannerdataZform_templater   r   r!   render_change_form   sH    





z.OutdoorSchedulePlannerAdmin.render_change_formc                s    t t| |j|jjd}|S )N)r-   )r#   ru   get_querysetr&   rR   rS   )r*   rQ   Zqs)r0   r   r!   r     s    z(OutdoorSchedulePlannerAdmin.get_querysetc       
      C   s   ddl m} | j}g }x>| jD ]4}|| jkrH| j| rR|| j|  q|| qW || _| |}|| _|j r| j}d| _t	||}|| _x|D ]}	|	d= |	d= qW |S g S )Nr   )yield_export_resultsr   rv   rw   )
Zmysite.admin.admin_listr   list_displayexport_fields_dictrW   Z_setup_changelistresult_listcountZempty_value_displayr^   )
r*   rQ   r   Ztemp_list_displayZexport_fieldZeachZclZtemp_empty_value_displayr   rC   r   r   r!   get_export_data
  s*    





z+OutdoorSchedulePlannerAdmin.get_export_data)FFr   N)r1   r2   r3   r   Zlist_filterr   r;   Zactionsro   r}   rv   r5   rn   rw   r   r   r   r   r:   r   r   )r0   r!   ru      s   

+
)ru   )#ra   rt   r   r7   Zdjango.contrib.admin.optionsr   Z,django.contrib.admin.templatetags.admin_urlsr   Zdjango.formsr   Zdjango.template.responser   Zdjango.utils.translationr   r5   Zmysite.adminr   r	   Zmysite.admin.exceptionsr
   Zmysite.admin.sitesr   Zmysite.att.modelsr   r   Zmysite.att.utilsr   r   r   ZZKActionFormr   r;   ro   ru   registerr   r   r   r!   <module>   s,   !9' 