U
    Ef                     @   s(   d dl T d dlmZ G dd deZdS )    )*)CmfAssetSchemec                       sD   e Zd Z fddZ fddZ fddZdd Zd	d
 Z  ZS )r   c                    s,   | j rtddd |   t j|| d S )NuK   Запрещено редактировать системную схемуTabort)system	cmf_alert_calc_asset_code_prefixsupersaveselfargskwargs	__class__ *./modules/asset/models/cmf_asset_scheme.pyr
      s    zCmfAssetScheme.savec                    s   t   dg S )Nr   )r	   save_preload_fields)r   r   r   r   r      s    z"CmfAssetScheme.save_preload_fieldsc                    s.   | j   | j rtddd t j|| d S )Nu?   Запрещено удалять системную схемуTr   )r   loadr   r	   deleter   r   r   r   r      s    
zCmfAssetScheme.deletec                 C   s   | j jsd S | j j | _ | | j  | | j d  tjj| ddD ]}|jdd |	  qFtj
j| ddD ]}|jdd |	  qpd S )NTT)parentinclude_deleted)Zfrom_recalculate)asset_code_prefixZ
is_changedvalueupper_check_code_prefix_uniqmodelsZCmfAssetlistZ
_calc_coder
   ZCmfAssetType)r   ZassetZ
asset_typer   r   r   r      s    
z&CmfAssetScheme._calc_asset_code_prefixc                 C   s  |dks"|dks"|dks"|| j kr4td| dd tjjdd| jgd	d
|ggdgdd}|rztd| d|j ddd tjjdd| jgdd
|ggdgdd}|rtd| d|j ddd tjjdd| dgdd| ggdgdd}|r
td| d|j	j d d S )NZTSKAZ	NOPROJECTuH   Нельзя использовать системный префикс Tr   idz!=r   =name)filterZfieldsr   u   Код u.    уже используется схемой u   . Выберите другойZtask_code_prefixu2    уже используется проектом codeZLIKEz-%projectzproject.nameu8    ранее использовался проектом u   . Это может привести к пропускам в нумерации кодов. Если это нежелательно - укажите другой префикс)
code_prefixr   r   r   getr    r"   Z
CmfProjectZCmfTaskCodeHistoryr%   )r   r&   Zscheme_with_prefixZproject_with_prefixZ	code_usedr   r   r   r   /   sB    z&CmfAssetScheme._check_code_prefix_uniq)	__name__
__module____qualname__r
   r   r   r   r   __classcell__r   r   r   r   r      s
   r   N)Zcmf.includeZ%modules.asset.fields.cmf_asset_schemer   r   r   r   r   <module>   s   