
    @i~                     D    d dl  ddlmZ  G d dej                        Zy)    )*   )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                    | j                  g d       | j                  st        dd       | j                  j                  }| j
                  j                  }d| _        | d| j                   | _        | j                  d       t        ||dd| j                  dz   	      } | j                  di |}| j                  rF| j                  D ]7  }|j                  |k7  r||_        |j                  s&|j                  d       9 | j                  |       | j                  j                  }||_        |j                  d       y
)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   s(    	gh ]eikyyyy fBt2234			D	!4dTt%)%8%81%<> $))%f%?? .##w.'.D$??III-	. 	&&w/$$**$+!%    c                      y)u~   Хук для расширения в дочерних классах. По умолчанию ничего не делает.Nr   )r$   r&   s     r)   r!   z,CmfActiveVerEntity._after_create_new_cmf_ver5   s    r*   c                     t        dd       y)u'   Востановление версииTODO1Tr   N)r   r$   s    r)   r   z"CmfActiveVerEntity.restore_cmf_ver9   s    '&r*   c                     d| _         d| _        | j                  | j                   d      }| j                   d|j
                  dd   |_        d|_        | |_        d|_         |j                          || _	        y )	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=   sv    ~~dii[#6~7__%R7s	 $ 		 r*   c                     d}| j                   j                  | j                  ddg      d   }| j                  D ]  }| |   j                  s| |   ||<   d} |r|j                  d       y y )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"opqr77 	JJ**#'
#3Z 	 III% r*   c                 f    | j                   j                  j                  | j                   d      S )Nr0   )r3   r   
startswithr2   r.   s    r)   _cmf_ver_is_linkz#CmfActiveVerEntity._cmf_ver_is_linkU   s'    ww}}''4??*;2(>??r*   c                 d   | j                         r(| j                  st        dd       t        |   |i |S | j
                  }d}| j                  r!|sd}nt        |dd       | j                  k7  rd}|r| j                          | j                  r| j                          t        |   |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      ";;PX\]7<000((;;!%vt4		A "&&&(##%w|T,V,,r*   c                 D    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,    w*,t/L/LL  PA  A  	Ar*   NFc                     |rd|vr|j                  d       | j                  rt        |   d||dd|S t        |   d||d|S )Nr7   F)r9   forcever_resolve_head)r9   rL   r   )appendrB   rE   r   )r$   r9   rL   r%   r1   s       r)   r   zCmfActiveVerEntity.load_fieldsq   s\    +69MM/0  7&dfETYd]cddw"H&HHHr*   c                     | j                  dg       |sg }|j                  ddg       | j                  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_verz   sb    .)*Ft-./zz"C):):;"%&  
 	
r*   )full_fields_loadrQ   rR   r8   c                    | j                  |      }|sg }|s|s|r|g dgng d}|r|r|g dgng d}t        |   |||d|}|S )u   
        Т.к. по show definition люди придут за гайдом по использованию filter именно сюда, дублирую доку
        https://bcrm.carbonsoft.ru/project/Document/DOC-000282
        )r   rP   T)r#   z!=N)rW   rQ   )_default_kwargsrE   _count)	clsrW   rQ   rR   r8   rG   r%   retr1   s	           r)   rZ   zCmfActiveVerEntity._count   sc     $$V,F==Cf89IcFCIf>?OoFgnd5Ef_X^_
r*   c                     | j                   j                  j                  | j                   d      sy d}t        |   ||      S )Nr0   T)	debug_msg)r3   r   rA   r2   rE   mark_full_search)r$   celeryr^   r1   s      r)   r_   z#CmfActiveVerEntity.mark_full_search   sB    ww}}''4??*;2(>?w')'DDr*   )NF)N)T )__name__
__module____qualname__abstractr<   r   r   api_methodsr
   r!   r   r5   r?   rB   r   rJ   r   r   classmethodrZ   r_   __classcell__)r1   s   @r)   r   r      s    H &4'::FF J K&@'
!
&@-,AI
 ,05`e  E Er*   r   N)cmf.includer9   r   r   r   r*   r)   <module>rj      s"     *XE.AA XEr*   