U
    Įwh&                     @   s(   d dl T d dlmZ G dd deZdS )    )*)CmfAssetSchemec                       sX   e Zd Zdd Z fddZ fddZ fddZ fd	d
Zdd Zdd Z	  Z
S )r   c                 C   s|   t jj| dds(t j| | dddd }t jj| ddsPt j| | dddd }t jj| ddsxt j| | dd	dd }d S )
Nu   Активы)parentnameZassetsT)Ztree_parentr   r   Zsys_typesystemu   Типы активовZasset_typesu   ЛокацииZ	locations)modelsZ	CmfFoldergetsave)selfZassets_folderZasset_types_folderZlocations_folder r   *./modules/asset/models/cmf_asset_scheme.py_scaffold_assets   s    zCmfAssetScheme._scaffold_assetsc                    s,   |    | j}t j|| |r(|   d S N)_calc_asset_code_prefixis_newsuperr	   r   )r
   argskwargsr   	__class__r   r   r	      s
    zCmfAssetScheme.savec                    s   |    t j|| d S r   )r   r   _save_importr
   r   r   r   r   r   r      s    zCmfAssetScheme._save_importc                    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abort)r   load	cmf_alertr   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)r   include_deleted)Zfrom_recalculate)asset_code_prefixZ
is_changedvalueupper_check_code_prefix_uniqr   Z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    =r   )filterZfieldsr   u   Код u.    уже используется схемой u   . Выберите другойZtask_code_prefixu2    уже используется проектом codeZLIKEz-%projectzproject.nameu8    ранее использовался проектом u   . Это может привести к пропускам в нумерации кодов. Если это нежелательно - укажите другой префикс)
code_prefixr   r   r   r   r&   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   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   