B
    b                 @   s   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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 G dd deZeeG dd dejZdS )    )	ModelForm)gettext_lazy)admin)forms)fields)widgets)WorkflowNodeN)
Department)get_current_company_idc                   s   e Zd ZejedddZejedddZej	e
j edejddZej	e
j edejddZ fd	d
ZG dd dZ  ZS )WorkflowNodeChangeForm	node_code   )labelZ
max_length	node_name workflowNode_field_approverScopeF)Zquerysetr   widgetrequiredworkflowNode_field_notifyScopec                s.   t t| j|| d| jd jjd< t }d S )NTr   readonly)superr   __init__r   r   Zattrsr
   )selfargskwargs
company_id)	__class__ AG:\easytimepro\master/mysite/workflow\admin\workflownode_admin.pyr   "   s    zWorkflowNodeChangeForm.__init__c               @   s   e Zd ZeZdZdS )zWorkflowNodeChangeForm.Meta)r   r   approvernotifierapprove_scopenotify_scopeN)__name__
__module____qualname__r   Zmodelr   r   r   r   r   Meta/   s   r%   )r"   r#   r$   r   Z	CharField_r   r   django_formsZModelMultipleChoiceFieldr	   objectsallwidZDepartmentMultipler    r!   r   r%   __classcell__r   r   )r   r   r      s   r   c                   s   e Zd ZdZdZdZeZdZe	j
dejiiZdd Zddd	Zd
d Zede_dd Zede_dd Zede_dd Zede_ fddZdd Z  ZS )WorkflowNodeAdmin)workflow_engine_namer   r   get_approverget_notifierget_approve_scopeget_notify_scope)r-   r   r   )r-   r   r   r   Nr   c             C   s   dS )NFr   )r   requestr   r   r   has_add_permissionV   s    z$WorkflowNodeAdmin.has_add_permissionc             C   s   dS )NFr   )r   r2   objr   r   r   has_delete_permissionY   s    z'WorkflowNodeAdmin.has_delete_permissionc             C   s6   |j }|r2tjjt|djddd}d|S dS )N)id__in	dept_nameT)flat, )r    r	   r(   filterastliteral_evalvalues_listjoin)r   r4   Zapprover_scoper7   r   r   r   r0   \   s    

z#WorkflowNodeAdmin.get_approve_scoper   c             C   s6   |j }|r2tjjt|djddd}d|S dS )N)r6   r7   T)r8   r9   r:   )r!   r	   r(   r;   r<   r=   r>   r?   )r   r4   r!   r7   r   r   r   r1   f   s    

z"WorkflowNodeAdmin.get_notify_scoper   c             C   s&   |j  jddd}|sdS d|S )N	role_nameT)r8   r:   r9   )r   r)   r>   r?   )r   r4   Z	approversr   r   r   r.   p   s    zWorkflowNodeAdmin.get_approverZworkflow_node_approverc             C   s&   |j  jddd}|sdS d|S )Nr@   T)r8   r:   r9   )r   r)   r>   r?   )r   r4   r   r   r   r   r/   x   s    zWorkflowNodeAdmin.get_notifierZworkflow_node_notifierc                s(   t t| |jddj|jjd}|S )Nr   )Zworkflow_engine__gt)r   )r   r,   get_querysetr;   userZcurrent_company)r   r2   Zqs)r   r   r   rA      s    zWorkflowNodeAdmin.get_querysetc             C   s4   t |jd|_t |jd|_|  d S )Nr    r!   )jsondumpsZPOSTZgetlistr    r!   Zsave)r   r2   r4   formZchanger   r   r   
save_model   s    zWorkflowNodeAdmin.save_model)N)r"   r#   r$   Zlist_displayZsort_fieldsZlist_filterr   rE   Zactionsr   ZWorkflowRoleManyToManyFieldr   ZWorkflowRoleMultipleWidgetZformfield_overridesr3   r5   r0   r&   Zshort_descriptionr1   r.   r/   rA   rF   r+   r   r   )r   r   r,   E   s$   




r,   )Zdjango.formsr   Zdjango.utils.translationr   r&   mysiter   Zmysite.adminr   Zmysite.workflowr   r   Zmysite.workflow.modelsr   rC   r<   Zdjangor'   Z(mysite.personnel.models.model_departmentr	   Zmysite.att.utilsr
   Z
mysite.attr*   r   registerZZKModelAdminr,   r   r   r   r   <module>   s   /