U
    r;d                     @   s(   d dl T d dlmZ G dd deZdS )    )*)CmfActiveEntityc                       sX  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+d,Zejjejjd-d.d/d0gd/d1ZG d2d3 d3ejZ fd4d5Ze fd6d7Zd8d9 Zd:d; Zd<d= Zd>d? Z fd@dAZdBdC ZedDdE ZedFdG Z  Z S )H	CmfFolderZFolderZprojectZFLu
   ПапкаZui_group_fieldsZ_main	cmf_owner
cmf_authorZ	executorsZ
spectators)namefieldsZ_addonZperm_encryptZperm_policyZperm_policy_anonymousZperm_policy_guestZperm_policy_sharelinkc                   @   s   e Zd ZdZdS )zCmfFolder.cmf_owneru   ВладелецN)__name__
__module____qualname__caption r   r   ./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dgZdS )zCmfFolder.tree_nodesr   ZCmfListZCmfKanbanBoardCmfDocumentZCmfActiveEntityFilterZ
CmfRoadmapZCmfChatGroupZCmfChatTopicCmfTaskFilterZCmfTaskReportZCmfTaskZCmfTaskQueueZCmfSDeskKnowlageCategoryZCmfComponentN)r	   r
   r   modelsr   r   r   r   
tree_nodes)   s              r   u   Системный типu   Дискu
   Архивu   Тэгиu   Датыu   Бэклогu   системная папкаZEpicZSprintZReleaseZRoadmapZHomeu   База знанийu   Клиенты Service Desku   Корзинаu   Каналыu)   База знаний. Категорииu   Очередиu   Отчетыu   Фильтрыu   Компоненты)diskarchiveZtagsZdatesbacklogZ
sys_folderZepicZsprintreleaseZroadmaphomeknowlage_baseservicedesk_clientstrashcanservicedesk_channelsknowlage_base_categoriesZqueueZreportsfilters
components)r   choicesu   Черновик фильтрr   T	parent_id)r   Zmodelr   Zoptions_list_paramsZoptions_list_query_allc                   @   s   e Zd ZdZdZdS )zCmfFolder.textu   Добавить текстZCmfDocEditorN)r	   r
   r   ZplaceholderZwidgetr   r   r   r   textS   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   r(   W   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}   )Zquery_deprecatedfilterZdp_modelcodeZlikeallformatlen)r0   Zexist_foldersclsr   r   prepare_code^   s    "z&CmfFolder.create.<locals>.prepare_codeZproject_default_folderr0   )getr'   create)r5   argskwargsr6   instancer+   r4   r   r8   \   s    
zCmfFolder.createc                 C   s$   | j dkrtdd| j j S )Nr   u;   Метод только для домашней папки.z/Users/)r$   
ValueErrorr   loadZloginr)   r   r   r   home_diri   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=r!   r   idz!=r/   u   Папка с именем uA    уже существует. Укажите другое имя.T)abort)r?   r!   r   r   Zslistr   rA   	cmf_alert)r*   Zparent_filterr   r   r   _check_folder_conflictn   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_convertr%   rA   r)   r   r   r   
_calc_text{   s    zCmfFolder._calc_textc                 C   s   | j js| jsd S | j dkr$d| _n| j dkr6d| _n| j dkrHd| _nx| j dkrZd| _nf| j dkrld| _nT| j dkr~d| _nB| j dkrd	| _n0| j d
krd| _n| j dkrd| _n| j | _d S )Nr   r   r   r   r   r   Zknowlagebaser   Zservicedeskclientsr   Zservicedeskchannelsr   Zknowlagebasecategories)r$   rF   Zis_newZui_view_formui_namelowerr)   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   Zcmf_owner_assistantsZactivity)Ztree_parentrF   rK   r   rD   rE   Zload_fieldsZ_node_parent
isinstancer%   r   Z
CmfProjectr   r=   rG   r'   save)r*   r9   r:   r+   r   r   rM      s     zCmfFolder.savec                 C   s   | j dkrdS dS )Nr   FT)r$   r)   r   r   r   has_tree_nodes_hook   s    
zCmfFolder.has_tree_nodes_hookc                 O   s   d S )NZservicedesk_allowr@   TrB   )r   Z
CmfCompanylistZ	CmfPerson)r5   r9   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_modulerH   r0   r)   r   r   r   href   s    zCmfFolder.href)!r	   r
   r   rH   rS   Zcode_prefixZverbose_nameZui_formr   r   r   r   Zcmfr   ZFieldZ	CmfChoicer$   ZCmfRelationZ
tmp_filterr"   r(   classmethodr8   r>   rE   rG   rJ   rM   rN   rQ   propertyrT   __classcell__r   r   r+   r   r      s   
	
r   N)Zcmf.includeZcommon.models.cmf_active_entityr   r   r   r   r   r   <module>   s   