
    bh                     @    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d fd	ZddZeddddd fd
            Zd fd	Z xZS )CmfActiveVerEntityTname	cmf_owner)create_new_cmf_verrestore_cmf_verlist_cmf_verc                 >   |                      g d           | j        st          dd           | j        j        }| j        j        }d| _        | d| j         | _        |                     d           t          ||dd| j        dz   	          } | j	        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_numberN )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   sh    	ggghhh 	k ^eik k k kyy 44t244			D	!!!4dTt%)%81%<> > > $)%%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)r3   only_ver_headfieldsr   r   )r1   listcmf_ver_head_idcmf_ver_head_sync_fieldsr    r   )r$   changedr4   
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 )Nr0   )r3   r   
startswithr2   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   )rB   is_newr   superr   r"   getattrr   r5   r   r?   )r$   argsr%   r"   need_init_headr1   s        r)   r   zCmfActiveVerEntity.saveX   s      "" 	1; ^PX\]]]]577<0000(; 	& &!%vt44	AA "& 	)&&((( 	&##%%%uww|T,V,,,r*   c                 ^    t                                                      | j        z   g dz   S )N)r"   r   r   )rE   save_preload_fieldsr<   )r$   r1   s    r)   rJ   z&CmfActiveVerEntity.save_preload_fieldsn   s?    ww**,,t/LL  PA  PA  PA  A  	Ar*   NFc                 r    |rd|vr|                     d            t                      j        d||d|S )Nr7   )r9   forcer   )appendrE   r   )r$   r9   rL   r%   r1   s       r)   r   zCmfActiveVerEntity.load_fieldsq   sM     	1+699MM/000"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"   r3   r   =T)filterinclude_verinclude_templatesr9   orderby)r   extendslistr"   )r$   r9   s     r)   r   zCmfActiveVerEntity.list_cmf_verw   su    .)*** 	Ft-.///zz"C):;"%&  
 
 	
r*   )full_fields_loadrP   rQ   r8   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   rO   T)r#   z!=N)rV   rP   )_default_kwargsrE   _count)	clsrV   rP   rQ   r8   rG   r%   retr1   s	           r)   rY   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 )Nr0   T)r3   r   rA   r2   rE   mark_full_search)r$   celeryr1   s     r)   r]   z#CmfActiveVerEntity.mark_full_search   sJ    w}''4?(>(>(>?? 	Fww''///r*   )NF)N)T)__name__
__module____qualname__abstractr<   r   r   api_methodsr
   r!   r   r5   r?   rB   r   rJ   r   r   classmethodrY   r]   __classcell__)r1   s   @r)   r   r      su       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 0 0 0 0r*   r   N)cmf.includer9   r   r   r   r*   r)   <module>rg      se        * * * * * *U0 U0 U0 U0 U0.A U0 U0 U0 U0 U0r*   