U
    $-d                     @   s*   d dl T d dlZG dd dejjjZdS )    )*Nc                       sL   e Zd Zdd Zdd Zdd Z fddZ fd	d
Z fddZ  Z	S )	CmfStatusc                 C   sH   | j js| jr| j r| jsd S | j s0tddd | j j| _| j j| _d S )Nu@   DEV: Нельзя созадть статус без status_codeTabort)status_codeZ
is_changedstatus_typeZis_new	cmf_alertcodeself r   ./common/models/cmf_status.py_calc_status_code   s    
zCmfStatus._calc_status_codec                 C   s   | j dd| jgdd| jgdd| jggd}|rJtd| j d| d	d
d | j dd| jgdd| jgdd| jggd}|rtd| j dd
d d S )Nid!=workflow=r   filteru   Статус с кодом (u/   ) уже создан в данном Workflow.Tr   nameu   Статус "up   " уже существует, используйте его или переименуйте созданный.)getr   r   r   r   r   )r   Zdublicates_by_codeZdublicates_by_namer   r   r   _check_dublicates   s(    





zCmfStatus._check_dublicatesc                 C   s`   | j dkrdS | j  | jdd| jgdd| jgdd| j ggd}|s\td	| j  d
dd dS )ux   У Workflow обязательно должен быть хотя бы один статус open, in_progress и closed)ZOPENZIN_PROGRESSZCLOSEDNr   r   r   r   r   r   uk   У Workflow обязательно должен быть хотя бы один статус с типом u   . Нельзя удалить последний статус с этим типом. Сначала создайте новый статус.Tr   )r   r   loadr   r   r   )r   Zother_primaryr   r   r   _check_primary_status_delete2   s    




z&CmfStatus._check_primary_status_deletec                    s   t   ddg S )Nr   r   )supersave_preload_fieldsr
   	__class__r   r   r   C   s    zCmfStatus.save_preload_fieldsc                    s0   | j stddd |   |   t j||S )NuK   Нельзя создать Статус без указания StatusCodeTr   )r   r   r   r   r   saver   argskwargsr   r   r   r   F   s
    zCmfStatus.savec                    s   |    tt| j|| d S )N)r   r   r   deleter    r   r   r   r#   M   s    zCmfStatus.delete)
__name__
__module____qualname__r   r   r   r   r   r#   __classcell__r   r   r   r   r      s   r   )Zcmf.includeZcommon.fields.cmf_statuscommonZfieldsZ
cmf_statusr   r   r   r   r   <module>   s   