
    A0gix                     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 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                    | 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d
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_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   s-    	gh ]eikyyyy fBt2234			D	!4dTt%)%8%81%<> $));5;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)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"opqr77 	JJ**#'
#3Z 	 III% r+   c                 f    | j                   j                  j                  | j                   d      S )Nr1   )r4   r   
startswithr3   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   )rC   is_newr   superr   r#   getattrr   r6   r   r@   )r%   argsr&   r#   r   r2   s        r*   r   zCmfActiveVerEntity.saveX   s      ";;PX\]7<000((;;!%vt4		A "&&&(##%w|T,V,,r+   c                     | j                   r| j                  s| j                          | j                  r| j	                          t        |   |i | y N)rE   r#   r6   r   r@   rF   _save_import)r%   rH   r&   r2   s      r*   rK   zCmfActiveVerEntity._save_importn   sE    ;;t00&&(##%d-f-r+   c                 D    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,    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 )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\    +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#   r4   r   =T)filterinclude_verinclude_templatesr:   orderby)r   extendslistr#   )r%   r:   s     r*   r   zCmfActiveVerEntity.list_cmf_ver   sb    .)*Ft-./zz"C):):;"%&  
 	
r+   )full_fields_loadrT   rU   r9   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   rS   T)r$   z!=N)rZ   rT   )_default_kwargsrF   _count)	clsrZ   rT   rU   r9   rH   r&   retr2   s	           r*   r]   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 )Nr1   T)	debug_msg)r4   r   rB   r3   rF   mark_full_search)r%   celeryra   r2   s      r*   rb   z#CmfActiveVerEntity.mark_full_search   sB    ww}}''4??*;2(>?w')'DDr+   )r   r   c                n    t        |   |i |}|r|j                          |j                  d       |S )NTr   )rF   r   r6   r   )r%   r   rH   r&   resr2   s        r*   r   zCmfActiveVerEntity.copy   s8    glD+F+%%'4 
r+   )NFrJ   )T )__name__
__module____qualname__abstractr=   r   r   api_methodsr
   r"   r   r6   r@   rC   r   rK   rM   r   r   classmethodr]   rb   boolr   __classcell__)r2   s   @r*   r   r      s    H &4'::FF J K&@'
!
&@-,.AI
 ,05`e  E 26 $  r+   r   N)cmf.includer:   r   r   r   r+   r*   <module>rp      s      *h.AA hr+   