B
    b
                 @   sV   d dl mZ d dlmZ d dlmZ d dlmZ dd Z	ddd	Z
G d
d deZdS )    )cache)models)gettext_lazy)AbstractCloudc              C   s6   ddl m}  tjj|  ddd}dd |D }|S )z)
    generate for zTree
    :return:
    r   )get_current_company_id)
company_idid	role_namec             S   s&   g | ]}t td |d |d fqS ))r   r	   r      )dictzip).0obj r   =G:\easytimepro\master/mysite/workflow\models\workflow_role.py
<listcomp>   s    z*get_tree_nodes_from_db.<locals>.<listcomp>)Zmysite.att.utilsr   WorkflowRoleZobjectsfilterZvalues_list)r   Zobjs	tree_datar   r   r   get_tree_nodes_from_db   s    r   Fc             C   sR   ddl m} | }|j}dt| }t|}|r<| s<|S t }t|| |S )z&
    Cache tree data
    :return:
    r   )threadlocalsZworkflowrole_nodes_)	Zmysite.baser   Zget_current_userZcurrent_companystrr   getr   set)refreshr   userr   keyr   r   r   r   get_tree_nodes   s    
r   c                   s|   e Zd ZejedddZejedddZejeddddd	Zd
d Z	G dd dZ
d fdd	Zd fdd	Z  ZS )r   ZworkflowRole_field_code   )
max_lengthZworkflowRole_field_name2   ZworkflowRole_field_description   T)r   ZnullZblankc             C   s   d| j | jf S )Nz%s %s)	role_coder	   )selfr   r   r   __str__4   s    zWorkflowRole.__str__c               @   s   e Zd ZdZedZeZdS )zWorkflowRole.MetaZworkflowZworkflow_model_workflowRoleN)__name__
__module____qualname__Z	app_label_Zverbose_nameZverbose_name_pluralr   r   r   r   Meta7   s   r)   FNc                s$   t t| |||| tdd d S )NT)r   )superr   saver   )r#   Zforce_insertZforce_updateusingZupdate_fields)	__class__r   r   r+   <   s    zWorkflowRole.savec                sf   g }t | j dkr,tddt| ji }|rDddlm} ||tt	| j
||d tdd d S )Nr   z;%(name)s_still_used_by_workflownode_and_cannot_be_cancelledname)AdminRuntimeWarning)r,   keep_parentsT)r   )lenZworkflownode_setallr(   r   r	   Zmysite.admin.exceptionsr/   r*   r   deleter   )r#   r,   r0   messager/   )r-   r   r   r3   A   s    zWorkflowRole.delete)FFNN)NF)r%   r&   r'   r   Z	CharFieldr(   r"   r	   descriptionr$   r)   r+   r3   __classcell__r   r   )r-   r   r   .   s    r   N)F)Zdjango.core.cacher   Z	django.dbr   Zdjango.utils.translationr   r(   Z!mysite.admin.abstract_cloud_modelr   r   r   r   r   r   r   r   <module>   s   
