U
    dZ                     @   s(   d dl T d dlmZ G dd deZdS )    )*)CmfActiveEntityc                       sV  e Zd ZdZdZdZdZddddd	d
gdddddddgdgiZG dd dej	Z	G dd dej
Z
G dd dejZejjejjddddddddddd d!d"d#d$d%d&d'd(d)d*d+Zejjejjd,d-d.d/gd.d0ZG d1d2 d2ejZ fd3d4Ze fd5d6Zd7d8 Zd9d: Zd;d< Zd=d> Z fd?d@ZdAdB ZedCdD ZedEdF Z  Z S )G	CmfFolderZFolderprojectFLu
   Папкаui_group_fields_main	cmf_owner
cmf_author	executors
spectators)namefields_addonperm_encryptperm_policyperm_policy_anonymousperm_policy_guestperm_policy_sharelinkc                   @   s   e Zd ZdZdS )zCmfFolder.cmf_owneru   ВладелецN)__name__
__module____qualname__caption r   r   $/opt/crm/common/models/cmf_folder.pyr	   #   s   c                   @   s   e Zd ZdZdS )zCmfFolder.cmf_authorTN)r   r   r   visibler   r   r   r   r
   &   s   c                   @   s*   e Zd Zddddddddd	d
dddgZdS )zCmfFolder.tree_nodesr   CmfListZCmfKanbanBoardCmfDocumentCmfActiveEntityFilter
CmfRoadmapCmfChatGroupCmfChatTopicCmfTaskFilterCmfTaskReportCmfTaskZCmfTaskQueueZCmfSDeskKnowlageCategoryN)r   r   r   modelsr   r   r   r   
tree_nodes)   s             r&   u   Системный типu   Дискu
   Архивu   Тэгиu   Датыu   Бэклогu   системная папкаEpicZSprintZReleaseZRoadmapZHomeu   База знанийu   Клиенты Service Desku   Корзинаu   Каналыu)   База знаний. Категорииu   Очередиu   Отчетыu   Фильтры)diskarchivetagsdatesbacklogZ
sys_folderepicZsprintreleaseZroadmaphomeknowlage_baseservicedesk_clientstrashcanservicedesk_channelsknowlage_base_categoriesqueuereportsfilters)r   choicesu   Черновик фильтрr"   T	parent_id)r   modelr   options_list_paramsoptions_list_query_allc                   @   s   e Zd ZdZdZdS )zCmfFolder.textu   Добавить текстCmfDocEditorN)r   r   r   placeholderwidgetr   r   r   r   textR   s   r@   c                    s$   | j r| j jd d  S t  S )N   )sys_typevalueuppersuperget_code_prefixself	__class__r   r   rF   V   s    zCmfFolder.get_code_prefixc                    s>    fdd}| dr,||d |d< |d= t j||}|S )Nc                    s6       jj|  d }d| t|d S )N%z{0}{1}   )query_deprecatedfilterdp_modelcodelikeallformatlen)rP   Zexist_foldersclsr   r   prepare_code]   s    "z&CmfFolder.create.<locals>.prepare_codeZproject_default_folderrP   )getrE   create)rV   argskwargsrW   instancerI   rU   r   rY   [   s    
zCmfFolder.createc                 C   s$   | j dkrtdd| j j S )Nr/   u;   Метод только для домашней папки.z/Users/)rB   
ValueErrorr	   loadloginrG   r   r   r   home_dirh   s    
zCmfFolder.home_dirc                 C   sn   | j rdd| j g}n| jr(dd| jg}nd }|rjtjjdd| jg|dd| jggdrjtd| j d	d
d d S )Ntree_parent_id=r9   r   idz!=rN   u   Папка с именем uA    уже существует. Укажите другое имя.T)abort)ra   r9   r%   r   slistr   rc   	cmf_alert)rH   parent_filterr   r   r   _check_folder_conflictm   s    
z CmfFolder._check_folder_conflictc                 C   s(   | j jsd S tj| j j| jj| _ d S )N)r@   
is_changedr%   r   Zconfluence_convertrC   rc   rG   r   r   r   
_calc_textz   s    zCmfFolder._calc_textc                 C   s   | j js| jsd S | j dkr$d| _n| j dkr6d| _nx| j dkrHd| _nf| j dkrZd| _nT| j dkrld| _nB| j dkr~d| _n0| j d	krd
| _n| j dkrd| _n| j | _d S )Nr(   r,   r2   r)   r0   Zknowlagebaser1   Zservicedeskclientsr3   Zservicedeskchannelsr4   Zknowlagebasecategories)rB   rj   is_newui_view_formui_namelowerrG   r   r   r   _calc_ui_view_form   s*    







zCmfFolder._calc_ui_view_formc                    s   | j js| jjs| jjr.| js&td |   | j jrr| j rV| j dg |  | _n| jrrt| jj	t
jrrd | _| js| j | _| jjr| jdddg |   t j||S )Nu8   Имя папки не может быть пустым.parentr	   cmf_owner_assistantsactivity)tree_parentrj   rq   r   rg   ri   load_fields_node_parent
isinstancerC   r%   
CmfProjectr	   r^   rk   rE   save)rH   rZ   r[   rI   r   r   ry      s     zCmfFolder.savec                 C   s   | j dkrdS dS )Nr(   FT)rB   rG   r   r   r   has_tree_nodes_hook   s    
zCmfFolder.has_tree_nodes_hookc                 O   s   d S )Nservicedesk_allowrb   Trd   )r%   
CmfCompanylist	CmfPerson)rV   rZ   r[   Zcompany_listZpersons_listresultr   r   r   sdesk_clients_list   s
       zCmfFolder.sdesk_clients_listc                 C   s   d| j  d| j d| j S )N/)	ui_modulern   rP   rG   r   r   r   href   s    zCmfFolder.href)!r   r   r   rn   r   code_prefixverbose_nameui_formr   r	   r
   r&   cmfr   Field	CmfChoicerB   CmfRelation
tmp_filterr@   rF   classmethodrY   r`   ri   rk   rp   ry   rz   r   propertyr   __classcell__r   r   rI   r   r      s   
	
r   N)cmf.includecommon.models.cmf_active_entityr   r   r   r   r   r   <module>   s   