B
    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?   Запрещено удалять системную схемуT)r   )r   loadr   r   delete)r
   r   r   )r   r   r   r      s    
zCmfAssetScheme.deletec             C   s   | j jsd S | j j | _ | | j  | | j d  x,tjj| ddD ]}|jdd |	  qHW x,tj
j| ddD ]}|jdd |	  qvW d 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   Нельзя использовать системный префикс T)r   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   /   s2    
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   