B
    YfY                 @   s(   d dl T d dlmZ G dd deZdS )    )*)CmfActiveEntityc                   sp  e Zd ZdZdZdZdZdZej	ddg 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d0d1dd2gdd3ZG d4d5 d5ejZ fd6d7Ze fd8d9Zd:d; Zd<d= Zd>d? Zd@dA Z fdBdCZdDdE ZedFdG Z dHdI fdJdK
Z!  Z"S )L	CmfFolderZFolderZprojectZFLu
   ПапкаTZpublic_parent_ui_getZ
public_getZui_group_fields_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   	parent_id)r   Zmodelr   Zoptions_list_paramsZoptions_list_query_allc               @   s   e Zd ZdZdZdZdgZdS )zCmfFolder.textu   Добавить текстZCmfDocEditorTZgin_trgmN)r
   r   r   ZplaceholderZwidgetindexZindex_usingr   r   r   r   textX   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*   ^   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_codee   s    "z&CmfFolder.create.<locals>.prepare_codeZproject_default_folderr0   )getr)   create)r4   argskwargsr5   instance)r,   )r4   r   r7   c   s    
zCmfFolder.createc             C   s$   | j dkrtdd| j j S )Nr   u;   Метод только для домашней папки.z/Users/)r&   
ValueErrorr   loadZlogin)r+   r   r   r   home_dirp   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   r@   	cmf_alert)r+   Zparent_filterr   r   r   _check_folder_conflictu   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'   r@   )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&   rD   Zis_newZui_view_formui_namelower)r+   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_parentrD   rI   r   rB   rC   Zload_fieldsZ_node_parent
isinstancer'   r   Z
CmfProjectr   r<   rE   r)   save)r+   r8   r9   )r,   r   r   rK      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             C   s   | j  d| j d| j S )N/)	ui_modulerF   r0   )r+   r   r   r   href   s    zCmfFolder.hrefF)TEXKOM_db_deletec               sJ   |r0x*t jj| ddD ]}d |_|jdd qW t j|d|i| d S )NT)home_folderZinclude_deleted)Z	only_datarP   )r   Z	CmfPersonlistrQ   rK   r)   delete)r+   rP   r8   r9   Zperson)r,   r   r   rS      s
    zCmfFolder.delete)#r
   r   r   rF   rN   Zcode_prefixZverbose_nameZfull_searchr   Zapi_methodsZui_formr   r   r   Zcmfr	   ZFieldZ	CmfChoicer&   ZCmfRelationZ
tmp_filterr$   r*   classmethodr7   r=   rC   rE   rH   rK   rL   propertyrO   rS   __classcell__r   r   )r,   r   r      s   r   N)Zcmf.includeZcommon.models.cmf_active_entityr   r   r   r   r   r   <module>   s   