U
    Įwhv                     @   s*   d dl T ddlmZ G dd dejZdS )    )*   )cmf_active_ver_entityc                       s   e Zd ZdZddgZejjdddg Zdd Zd	d
 Z	dd Z
dd Zdd Z fddZ fddZd  fdd	Zdd Zeddddd fdd
Zd! fdd	Z  ZS )"CmfActiveVerEntityTnameZ	cmf_ownercreate_new_cmf_verrestore_cmf_verlist_cmf_verc                 C   s   |  ddg | js tddd | jj}| jj}d| _| d| j | _| jdd t||dd| jd	 d
}| j	f |}| j
j}||_|jdd dS )u7   Создание новой версии объектаr   zcmf_ver_head.cmf_ver_head2curu   Ошибка! Попытка создать новую версию из не-cur объекта. Используйте для этого метод restore_cmf_verTabortFz-vZ	only_data   )r   codeZcopy_allcmf_ver_curcmf_ver_numberN)load_fieldsr   	cmf_alertr   valuer   r   savedictcopycmf_ver_headcmf_ver_head2cur)selfr   r   kwargsZnew_curZhead_obj r   (./common/models/cmf_active_ver_entity.pyr      s"    
z%CmfActiveVerEntity.create_new_cmf_verc                 C   s   t ddd dS )u'   Востановление версииZTODO1Tr
   N)r   r   r   r   r   r   +   s    z"CmfActiveVerEntity.restore_cmf_verc                 C   s`   d| _ d| _| j| j d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   headr   r   r   _init_new_cmf_ver_obj/   s    z(CmfActiveVerEntity._init_new_cmf_ver_objc                 C   sX   d}| j j| jddgdd }| jD ]}| | jr$| | ||< d}q$|rT|jdd d S )NFTcmf_ver_head2cur_id)r!   only_ver_headfieldsr   r   )r   listZcmf_ver_head_idcmf_ver_head_sync_fieldsZ
is_changedr   )r   Zchangedr"   Z
field_namer   r   r   _cmf_ver_head_sync;   s    

z%CmfActiveVerEntity._cmf_ver_head_syncc                 C   s   | j j| j dS )Nr   )r!   r   
startswithr    r   r   r   r   _cmf_ver_is_linkG   s    z#CmfActiveVerEntity._cmf_ver_is_linkc                    sX   |   r(| jstddd t j||S | jr<| js<|   | jrJ|   t j||S )Nu4   Нельзя редактирвоать cmf_ver headTr
   )	r+   Zis_newr   superr   r   r#   r   r)   )r   argsr   r   r   r   r   J   s    zCmfActiveVerEntity.savec                    s   t   | j dddg S )Nr   r   r   )r,   save_preload_fieldsr(   r   r.   r   r   r/   W   s    z&CmfActiveVerEntity.save_preload_fieldsNFc                    s.   |rd|kr| d t jf ||d|S )Nr$   )r&   force)appendr,   r   )r   r&   r0   r   r.   r   r   r   Z   s    
zCmfActiveVerEntity.load_fieldsc                 C   s,   |  dg | jdd| jgdddgdgdS )Nr   =Tr!   r   )filterinclude_verr&   Zorderby)r   Zslistr   r   r   r   r   r	   `   s    zCmfActiveVerEntity.list_cmf_ver)full_fields_loadr3   r4   r%   c                   sr   |  |}|sg }|s6|s6|r,|dddggndddg}|rV|rL|dddggndddg}t j|||d|}|S )u   
        Т.к. по show definition люди придут за гайдом по использованию filter именно сюда, дублирую доку
        https://bcrm.carbonsoft.ru/project/Document/DOC-000282
        r   r2   Tr   z!=N)r5   r3   )Z_default_kwargsr,   _count)clsr5   r3   r4   r%   r-   r   retr.   r   r   r6   d   s    
zCmfActiveVerEntity._countc                    s*   | j j| j dsd S d}t |S )Nr   T)r!   r   r*   r    r,   mark_full_search)r   Zceleryr.   r   r   r9   t   s    z#CmfActiveVerEntity.mark_full_search)NF)T)__name__
__module____qualname__Zabstractr(   r   r   Zapi_methodsr   r   r#   r)   r+   r   r/   r   r	   classmethodr6   r9   __classcell__r   r   r.   r   r      s&   r   N)Zcmf.includer&   r   r   r   r   r   r   <module>   s   