
    *.+hj                     X    d dl Z d dlT d dlZ G d dej        j        j                  ZdS )    N)*c                       e Zd Zej        j        j        j        dz   Zg dZej        j        j        j	        ddgz   Z	ddZ
d Zdd	d
dZd Zd Z fdZeddedefd            Z fdZ fdZd Z fdZdd fd
Zdd fd
Z xZS )CmfTreeNode)tree_fields)tree_parent_idordernonamesys_typehas_tree_nodestree_hiddenparentdelete_nodecopy_tree_nodeNc                     |r| j         j        n| g}d| j        vr|S | j                            |          D ],}|                    |                    ||                     -|S )uN   
        Список всех нод проекта
        :return:
        
tree_nodes)fields)r   only_id)idvaluer   r   loadextendget_tree_nodes_recursive)selfr   r   _kwargs	node_listnodes          ./common/models/cmf_tree_node.pyr   z$CmfTreeNode.get_tree_nodes_recursive   s    
 '.7TW]]48	t{**O(((77 	\ 	\DT::&RY:ZZ[[[[    c                     | j         S N)r   r   s    r   has_tree_nodes_hookzCmfTreeNode.has_tree_nodes_hook$   s    ""r   FTforce	recursivec                "     | j         d||d|S )Nr#    )delete)r   r$   r%   _argskwargss        r   r   zCmfTreeNode.delete_node'   s!    t{F)FFvFFFr   c                 R    | j         sd| _         |                     d           d S d S )NT	only_data)tree_node_is_branchsaver!   s    r   tree_child_restore_hookz#CmfTreeNode.tree_child_restore_hook*   s9    ' 	&'+D$III%%%%%	& 	&r   c                     | j         j        }|r^t          |t          j        t          j        f          r|S |j                                        st          d||           |j        j        S d S )Nu@   У узла дерева отсутствует родитель)	tree_parentr   
isinstancemodels
CmfProjectCmfAssetSchemer   r   CmfError)r   r2   s     r   _node_parentzCmfTreeNode._node_parent/   s}     &, 	,+(96;P'QRR #""%**,, vacnptuuu%++	, 	,r   c                 F    t                      j        |i |}|                    dg           |j        j        rd|j        j        sXd|j        _        t                                          5  |j                            d           d d d            n# 1 swxY w Y   |S )Nztree_parent.tree_node_is_branchTr,   )	supercopyload_fieldsr2   is_not_nullr.   cmfutildisable_aclr/   r   argsr*   res	__class__s       r   r;   zCmfTreeNode.copy;   s    egglD+F++:;<<<?& 	5s/R 	526CO/$$&& 5 5$$t$4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5
s   .BBB
   Копияsrc_tree_node_iddst_tree_node_idc           	         |                      d          d         }t          t                    |                             | g d          }|                     d          d         }t          t                    |                             |g d          }	|j        j        }
|r|r|
                    ||          }
| d|
 }
|	j        dk    r|	}n|	j        }|	                    |
d||	|	j
        	          }|rR|j        rK|j                                        D ]1}|                    |j        j        |j        j        ||||
           2|S )u~   
        https://bcrm.carbonsoft.ru/project/Document/DOC-006119#spec-005912-b
        Копирование ноды
        :r   )r.   r   textzattachments.urltagszattachments.url_previewzattachments.url_preview_img)r   r   )zparent.tree_node_is_branchr.   projectzproject.logic_prefix r5   T)r	   copy_allr   r2   rK   )r%   name_startswithfind_to
replace_to)splitvarsr4   getr	   r   replace
class_namer   r;   rK   r.   r   r   r   r   )rE   rF   r%   rN   rO   rP   src_model_namesrc_tree_nodedst_model_namedst_tree_nodenew_namer   r   r   s                 r   r   zCmfTreeNode.copy_tree_nodeE   s    *//44Q7V^488 )c )c )c 9 d d *//44Q7V^488<L Vd Vd Vd8 e e %+ 	=z 	=''<<H%2222#|33"FF")F&++D39}^k^s , u u 	m; 	m%05577 m m##DGM>3D3JV_4CWak $ m m m mr   c                 L    t                                                      dgz   S )Nztree_parent.tree_sort_children)r:   save_preload_fields)r   rC   s    r   r\   zCmfTreeNode.save_preload_fieldsb   s"    ww**,,0P/QQQr   c                 :   | j         r| j        rd S | j        r| j        st	          dd           dd| j        gdd| j        gg}t          |                               dd	| j        g|gd
g          }|r*|                     | j        |j        |d          | _        d S t          |                               dd| j        g|gdg          }|r*| 	                    | j        |j        |d          | _        d S t                                                       d S )Nu   Не заполнено имя!T)abortr   z!=r2   z==r	   z<=z-name)filterorder_byF)r_   reversz>=)is_newr   r2   r	   	cmf_alertr   typesget
move_below
move_abover:   _calc_orderno)r   _filtermax_namemin_objrC   s       r   rh   zCmfTreeNode._calc_ordernoe   s4   { 	dl 	F 	 9 I;4HHHHdDG,}dDDT.UVGDzzdi/H'.R^e]fggH #twG\abbt**//642KW1Uag`h/ii #'??47GJw_d?#e#eDLFr   c                     |                      g d           | j        s	| j        sd S | j        r3| j        j        s)d| j        _        | j                                         d S d S d S )N)z!tree_parent.has_children_archivedcmf_archivedhas_children_archivedT)r<   rm   rn   r2   r/   r!   s    r   has_children_archived_hookz&CmfTreeNode.has_children_archived_hook~   s    ggghhh! 	T%? 	F 	$D$4$J 	$59D2!!#####	$ 	$ 	$ 	$r   c                 b     t                      j        |i |}|                                  |S r    )r:   r/   ro   r@   s       r   r/   zCmfTreeNode.save   s4    egglD+F++'')))
r   )skip_tree_movec                     t                      j        | g|R d|i| |                                  | j                                         | j        D ]} |j        |ddi| | S )Nrq   T)r:   archivero   r   r   r   rq   rA   r*   childrC   s        r   rs   zCmfTreeNode.archive   s    MtMMMNMfMMM'')))_ 	@ 	@EEM4??????r   c                     t                      j        |d|i| |                     dgd           | j        D ]} |j        |ddi| | S )Nrq   r   T)include_archived)r:   archive_restorer<   r   rt   s        r   rx   zCmfTreeNode.archive_restore   sw    OnOOOO,$???_ 	H 	HE!E!4GGGGGGr   )NN)FrD   NN)__name__
__module____qualname__commonr   cmf_tree_noder   ui_meta_skipr   api_methodsr   r"   r   r0   r8   r;   staticmethodstrr   r\   rh   ro   r/   rs   rx   __classcell__)rC   s   @r   r   r      s       =.:GJZZL  K --9EI
 
K
   # # # ). G G G G G& & &

, 
, 
,           \8R R R R R         2$ $ $    
 -2        5:           r   r   )urllibcmf.includecommon.fields.cmf_tree_noder|   r   r}   r   r'   r   r   <module>r      sl         " " " "R R R R R&--9 R R R R Rr   