
    	miU                     @    d dl T ddlmZ  G d dej                  ZdS )    )*   )cmf_active_ver_entityc                        e Zd ZdZddgZej        j        g dz   Zd Zd Z	d Z
d Zd	 Zd
 Z fdZ fdZ fdZd fd	ZddZeddddd fd
            Zd fd	Zdddef fdZ xZS )CmfActiveVerEntityTname	cmf_owner)create_new_cmf_verrestore_cmf_verlist_cmf_verc                 B   |                      g d           | j        st          dd           | j        j        }| j        j        }d| _        | d| j         | _        |                     d           t          ||dd| j        dz   	          } | j	        dd
di|}| j
        r9| j
        D ]1}|j        |k    r||_        |j        r|                    d           2|                     |           | j        j        }||_        |                    d           dS )u7   Создание новой версии объекта)r   zcmf_ver_head.cmf_ver_head2cur
tree_nodesztree_nodes.tree_parentu   Ошибка! Попытка создать новую версию из не-cur объекта. Используйте для этого метод restore_cmf_verTabortFz-v	only_data   )r   codecopy_allcmf_ver_curcmf_ver_numberneed_init_headN )load_fieldsr   	cmf_alertr   valuer   r   savedictcopyr   tree_parent
is_changed_after_create_new_cmf_vercmf_ver_headcmf_ver_head2cur)selfr   r   kwargsnew_curnodehead_objs          (./common/models/cmf_active_ver_entity.pyr
   z%CmfActiveVerEntity.create_new_cmf_ver   sm    	ggghhh 	k ^eik k k kyy 44t244			D	!!!4dTt%)%81%<> > > $);;5;F;;? 	. . .#w..'.D$? .III--- 	&&w///$*$+!%%%%%    c                     dS )u~   Хук для расширения в дочерних классах. По умолчанию ничего не делает.Nr   )r%   r'   s     r*   r"   z,CmfActiveVerEntity._after_create_new_cmf_ver5   s    r+   c                 (    t          dd           dS )u'   Востановление версииTODO1Tr   N)r   r%   s    r*   r   z"CmfActiveVerEntity.restore_cmf_ver9   s    '&&&&&&r+   c                     d| _         d| _        |                     | j         d          }| j         d|j        dd           |_        d|_        | |_        d|_         |                                 || _	        d S )	NTr   z-head)r   :Hiu]   ### Технический объект! Обратитесь к разработчику ###F)
r   r   	__class__r   
class_nameidr   r$   r   r#   )r%   heads     r*   _init_new_cmf_ver_objz(CmfActiveVerEntity._init_new_cmf_ver_obj=   s    ~~di#6#6#6~77_7777s	 $ 		 r+   c                     d}| j                             | j        ddg          d         }| j        D ]}| |         j        r| |         ||<   d}|r|                    d           d S d S )NFTcmf_ver_head2cur_id)r4   only_ver_headfieldsr   r   )r2   listcmf_ver_head_idcmf_ver_head_sync_fieldsr!   r   )r%   changedr5   
field_names       r*   _cmf_ver_head_syncz%CmfActiveVerEntity._cmf_ver_head_syncI   s     ~""d&:$XmWn"oopqr7 	 	JJ* #'
#3Z  	&III%%%%%	& 	&r+   c                 P    | j         j                            | j         d          S )Nr1   )r4   r   
startswithr3   r/   s    r*   _cmf_ver_is_linkz#CmfActiveVerEntity._cmf_ver_is_linkU   s%    w}''4?(>(>(>???r+   c                    |                                  r1| j        st          dd            t                      j        |i |S | j        }d}| j        r!|sd}nt          |dd           | j        k    rd}|r|                                  | j	        r| 
                                  t                      j        |i |S )Nu4   Нельзя редактирвоать cmf_ver headTr   Fr   )rC   is_newr   superr   r#   getattrr   r6   r   r@   )r%   argsr&   r#   r   r2   s        r*   r   zCmfActiveVerEntity.saveX   s      "" 	1; ^PX\]]]]577<0000(; 	& &!%vt44	AA "& 	)&&((( 	&##%%%uww|T,V,,,r+   c                     | j         r| j        s|                                  | j        r|                                   t                      j        |i | d S N)rE   r#   r6   r   r@   rF   _save_import)r%   rH   r&   r2   s      r*   rK   zCmfActiveVerEntity._save_importn   sh    ; 	)t0 	)&&((( 	&##%%%d-f-----r+   c                 ^    t                                                      | j        z   g dz   S )N)r#   r   r   )rF   save_preload_fieldsr=   )r%   r2   s    r*   rM   z&CmfActiveVerEntity.save_preload_fieldsw   s?    ww**,,t/LL  PA  PA  PA  A  	Ar+   NFc                     |rd|vr|                     d           | j        r t                      j        d||dd|S  t                      j        d||d|S )Nr8   F)r:   forcever_resolve_head)r:   rO   r   )appendrC   rF   r   )r%   r:   rO   r&   r2   s       r*   r   zCmfActiveVerEntity.load_fieldsz   s     	1+699MM/000  	e&577&dfETYdd]cddd"uww"H&HHHHHr+   c                     |                      dg           |sg }|                    ddg           |                     dd| j        gdd|dg          S )Nr#   r4   r   =T)filterinclude_verinclude_templatesr:   orderby)r   extendslistr#   )r%   r:   s     r*   r   zCmfActiveVerEntity.list_cmf_ver   su    .)*** 	Ft-.///zz"C):;"%&  
 
 	
r+   )full_fields_loadrT   rU   r9   c                    |                      |          }|sg }|s|s|r|g dgng d}|r|r|g dgng d} t                      j        |||d|}|S )u   
        Т.к. по show definition люди придут за гайдом по использованию filter именно сюда, дублирую доку
        https://bcrm.carbonsoft.ru/project/Document/DOC-000282
        )r   rS   T)r$   z!=N)rZ   rT   )_default_kwargsrF   _count)	clsrZ   rT   rU   r9   rH   r&   retr2   s	           r*   r]   zCmfActiveVerEntity._count   s     $$V,, 	F 	d= 	d=Ccf88899IcIcIcF 	pCIof>>>??OoOoOoFeggnd5Ef__X^__
r+   c                     | j         j                            | j         d          sd S d}t	                                          |          S )Nr1   T)r4   r   rB   r3   rF   mark_full_search)r%   celeryr2   s     r*   ra   z#CmfActiveVerEntity.mark_full_search   sJ    w}''4?(>(>(>?? 	Fww''///r+   )r   r   c                     t                      j        |i |}|r|                                 |                    d           |S )NTr   )rF   r   r6   r   )r%   r   rH   r&   resr2   s        r*   r   zCmfActiveVerEntity.copy   sP    egglD+F++ 	(%%'''4   
r+   )NFrJ   )T)__name__
__module____qualname__abstractr=   r   r   api_methodsr
   r"   r   r6   r@   rC   r   rK   rM   r   r   classmethodr]   ra   boolr   __classcell__)r2   s   @r*   r   r      s       H &4':F J J J K& & &@  ' ' '
! 
! 
!
& 
& 
&@ @ @- - - - -,. . . . .A A A A AI I I I I I
 
 
 
 ,05`e       [0 0 0 0 0 0 26   $          r+   r   N)cmf.includer:   r   r   r   r+   r*   <module>rn      se        * * * * * *h h h h h.A h h h h hr+   