B
    .b3(                 @   s@  d dl Z d dlZd dlmZ d dlmZ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 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 d dlmZmZm Z 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, eeZ-dZ.dZ/dZ0G dd deZ1e2eG dd dej3Z4dS )    N)forms)adminconfig)LeaveScheduleLeaveCategory)AddLeaveSchedule)Employee
Department)	ModelForm)gettext_lazy)csrf_exemptcsrf_protect)method_decorator)add_preserved_filters)get_content_type_for_model)Http404HttpResponseForbiddenHttpResponseJsonResponse)Q)
C_ATT_RULE)STATUS_VALIDSTATUS_RESIGN_PENDING)TemplateResponse)settingsZ	_to_fieldZ_popupTc                   sH   e Zd ZejedddZejddZ fddZ	G dd	 d	Z
  ZS )
LeaveScheduleChangeFormZleave_field_employeeT)labelZdisabledF)requiredc                sD   t t| j|| d| jd jjd< | jjr@t| jj	| jd _
d S )NTempreadonly)superr   __init__fieldsZwidgetZattrsinstancepkstremployeeinitial)selfargskwargs)	__class__ =G:\easytimepro\master/mysite/att\admin\leaveschedule_admin.pyr!   '   s    z LeaveScheduleChangeForm.__init__c               @   s   e Zd ZeZdZdS )zLeaveScheduleChangeForm.Meta__all__N)__name__
__module____qualname__r   modelr"   r,   r,   r,   r-   Meta-   s   r3   )r/   r0   r1   r   Z	CharField_r   Z	TextFieldleave_detailsr!   r3   __classcell__r,   r,   )r+   r-   r   #   s   r   c                   sJ   e Zd ZdZejZegZdZ	e
Z fddZedd Zdd
dZ  ZS )LeaveScheduleAdmin)Zget_emp_codeZget_emp_first_nameZget_emp_last_nameZget_emp_deptZget_emp_job)idc       	         s   |j j}|j j}|j j}|j j}tt| |j|d}|j j	s|
 r^|j| dd}|
 rtjj| d}|j|d}|
 r|j| d}tt|d}|dkr|ttd	td d	B ttd	B }|S )
N)
company_id)Zemployee__department__inr&   )Zarea__in)Zemployee__in)Zemployee__position__in
resign_emp0)Zemployee__status)usercurrent_companyZget_auth_deptZget_auth_areaZget_auth_posr    r7   get_querysetfilterZis_superuserexistsallZselect_relatedr   objectsr%   r   getr   r   r   )	r(   requestr9   Z	auth_deptZ	auth_areaZauth_posZqsZemp_list_by_arear:   )r+   r,   r-   r>   =   s$     zLeaveScheduleAdmin.get_querysetc       %   
      s  ddl m} ddlm} ddlm} ddlm} ddlm} ddlm} ddl	m
} |jd	|jd	d }	|	svt | |}
|
st |	}trt|	d
dd
}	tjrtd|	 | j\}}|jdj||||	|	|dst S |	|
krt |
|	 }|\}}}|jd|jdd }||| |}t|dd }|rL| S | ||}d  |j dkr|r|||j|j! d} r " sd}|rx|d dt|d| }d} rd# fdd j$% D }y| &|| |}W n^ |k
rL } z>tjrdd l'}|(  |||||| j)d t*t+|ddS d }~X Y n*X |||pZ|||| j)d t*dddS nt*dt,diS n|r|   r|j- | .|| | d }nd }| j/j0| j/j12 f}t3j45 j6|jj7d!8 }i }x|D ]} d|| d" < qW ||d#| j9:d$| |f |	2 ||d%}!t;|d&r^t<|j=r^|= }"|!>|" | j/j0| j/j12 |j?f}t|d'd }#d(| d)g}$t@||#p|$|!S )*Nr   )ActionHandleError)log_operation)export_error_dict)helpers)hungary_notation)BUILD_IN_PERMISSION)activateaction_namezutf-8hexzaction_name=z{app}.{action}_{model})Zappactionr2   r8   Zresponse_actionPOSTTFZenz%sZverbose_name ,c                s(   g | ] \}}d j  j|j|dqS )z{key}={val})keyval)formatr"   rC   r   ).0kv)formr,   r-   
<listcomp>   s   z2LeaveScheduleAdmin.action_view.<locals>.<listcomp>)r2   )msgcoder[   Zselect_employee)Z	fieldsetsr   )ZcompanyZcategory_namez%s?action_name=%sz%s_%s_action)rX   rL   rN   Zaction_repr
model_namedatacontextaction_templatez%s/%s/actions/%s.htmlzlayui/action.html)AZmysite.admin.actionrE   Zmysite.admin.utilsrF   rG   mysite.adminrH   rI   rJ   django.utils.translationrK   rO   rC   ZGETr   Zget_actionsENCRYPT_ACTION_NAMEcodecsdecodeencoder   DEBUGprintinfor<   Zhas_permrT   r   ZgetlistklassgetattrZget_action_formmethodZFILESZis_validjoinZcleaned_dataitemsZresponse_action_post	traceback	print_excr2   r   r%   r4   ZZKActionAdminFormZget_action_fieldsetsopts	app_labelr]   lowerr   rB   rA   r?   r=   values
admin_siteZget_urlhasattrcallabler_   updater/   r   )%r(   rD   rE   rF   rG   rH   rI   rJ   rK   rL   actionsZ_action_namerr   r]   rN   clsnameZdescZobj_idsZaction_instanceZ_builtin_responseZaction_formZ
form_validZaction_verbose_nameZmessagesrB   ero   Zadmin_action_formri   Zleavecategorydataleavetypedataxr_   Zaction_contextr`   Ztemplate_listr,   )rX   r-   action_viewS   s    



 


zLeaveScheduleAdmin.action_viewFrP   Nc             C   sD  | j j}|j}| |}	t|	|d|}| |}
|d }tjj|d	dd}t
|d d }t
|d d }i }x$| D ]\}}||| g||< qW |||| || ||| ||d|
d k	|
||t| j j| j| jtt|||d |r| jd k	r| j}n| j}| jj|_t||p>d	||jf d
| dg|S )N)preserved_filtersrq   Z	object_id)r8   r5   Zmonthly_leave_detailsr   T)addchangehas_add_permissionhas_change_permissionhas_delete_permissionZhas_file_fieldZhas_absolute_urlZabsolute_urlform_urlrq   Zcontent_type_idsave_assave_on_topZto_field_varZis_popup_varrr   r^   Zmonthlyzadmin/%s/%s/change_form.htmlzadmin/%s/change_form.htmlzadmin/change_form.html)r2   Z_metarr   Zget_preserved_filtersr   Zget_view_on_site_urlr   rB   r?   rt   jsonloadsrn   rx   r   r   r   r   r$   r   r   TO_FIELD_VARIS_POPUP_VARZadd_form_templateZchange_form_templateru   r{   Zcurrent_appr   r]   )r(   rD   r_   r   r   r   objrq   rr   r   Zview_on_site_urlr8   Z
leave_datar}   ZmonthlyleavetypedataZ
final_datar~   yZform_templater,   r,   r-   render_change_form   sP    







z%LeaveScheduleAdmin.render_change_form)FFrP   N)r/   r0   r1   Zlist_displayr   ZEMPLOYEE_LIST_FILTERZlist_filterr   ry   Zorderingr   rX   r>   csrf_protect_mr   r   r6   r,   r,   )r+   r-   r7   2   s   `r7   )5rd   r   ra   r   mysiter   r   Zmysite.att.modelsr   r   Zmysite.att.actionsr   Zmysite.personnel.modelsr   r	   Zdjango.formsr
   rb   r   r4   Zdjango.views.decorators.csrfr   r   Zdjango.utils.decoratorsr   Z,django.contrib.admin.templatetags.admin_urlsr   Zdjango.contrib.admin.optionsr   Zdjango.httpr   r   r   r   Zdjango.db.modelsr   Zmysite.att.global_cacher   Zmysite.admin.modelsr   r   Zdjango.template.responser   Zdjango.confr   r   r   r   rc   r   registerZZKModelAdminr7   r,   r,   r,   r-   <module>   s2   