
    "9j                     0    d dl  d dlmZ  G d de      Zy)    )*)CmfAssetSchemec                        e Zd Zd Z fdZ fdZ fdZ fdZd Zd Z	d Z
ed	        Zd
 Ze ed      d               Z xZS )r   c                    t         j                  j                  | d      s(t         j                  | | ddd      j                         }t         j                  j                  | d      s(t         j                  | | ddd      j                         }t         j                  j                  | d      s)t         j                  | | dd	d      j                         }y y )
Nu   Активы)parentnameassetsT)tree_parentr   r   sys_typesystemu   Типы активовasset_typesu   Локации	locations)models	CmfFoldergetsave)selfassets_folderasset_types_folderlocations_folders       *./modules/asset/models/cmf_asset_scheme.py_scaffold_assetszCmfAssetScheme._scaffold_assets   s    ##4n#E",,dQ_jr{,  A  F  F  HM##46O#P"("2"2tDWp  |I  RV"2  #W  #\  #\  #^##46F#G%//DTdoz  DH/   I   N   N   P H    c                     | j                          | j                  }t        |   |i | |r| j	                          | j                          y N)_calc_asset_code_prefixis_newsuperr   r   trigger_reload)r   argskwargsr   	__class__s       r   r   zCmfAssetScheme.save   sD    $$&d%f%!!#r   c                 D    | j                          t        |   |i | y r   )r   r   _save_importr   r    r!   r"   s      r   r$   zCmfAssetScheme._save_import   s!    $$&d-f-r   c                 (    t         |          dgz   S )Nr   )r   save_preload_fields)r   r"   s    r   r'   z"CmfAssetScheme.save_preload_fields   s     w*,0
 
 	
r   c                     | j                   j                          | j                   rt        dd       | j                          t	        |   |i | y )Nu?   Запрещено удалять системную схемуTabort)r   load	cmf_alertr   r   deleter%   s      r   r-   zCmfAssetScheme.delete   sC    ;;W_cd''r   c                    | j                   j                  sy | j                   j                  j                         | _         | j	                  | j                          | j	                  | j                   dz          t
        j                  j                  | d      D ]$  }|j                  d       |j                          & t
        j                  j                  | d      D ]$  }|j                  d       |j                          & y )NTT)r   include_deleted)from_recalculate)asset_code_prefix
is_changedvalueupper_check_code_prefix_uniqr   CmfAssetlist
_calc_coder   CmfAssetType)r   asset
asset_types      r   r   z&CmfAssetScheme._calc_asset_code_prefix&   s     ""--!%!7!7!=!=!C!C!E$$T%;%;<$$T%;%;c%AB __))t)L 	Ed3JJL	 !--22$PT2U 	J!!4!8OO	r   c                 b   |dk(  s|dk(  s|dk(  s|| j                   k(  rt        d| d       t        j                  j	                  dd| j
                  gd	d
|ggdgd      }|rt        d| d|j                   dd       t        j                  j	                  dd| j
                  gdd
|ggdgd      }|rt        d| d|j                   dd       t        j                  j	                  dd| dgdd| ggdgd      }|r't        d| d|j                  j                   d       y y )NTSKA	NOPROJECTuH   Нельзя использовать системный префикс Tr)   idz!=r2   =r   )filterfieldsr0   u   Код u.    уже используется схемой u   . Выберите другойtask_code_prefixu2    уже используется проектом codeLIKEz-%projectzproject.nameu8    ранее использовался проектом u   . Это может привести к пропускам в нумерации кодов. Если это нежелательно - укажите другой префикс)
code_prefixr,   r   r   r   rA   r   
CmfProjectCmfTaskCodeHistoryrH   )r   rI   scheme_with_prefixproject_with_prefix	code_useds        r   r6   z&CmfAssetScheme._check_code_prefix_uniq>   s    %#%+-$"2"22`al`mnvz{#22664),?k+RS8  7 

 },Z[m[r[rZs t7 8 " %//334),>[+QR8  4 

 },^_r_w_w^x y7 8 "
 --11V}B%789dD:QR"#  2 
	
  },deneveve{e{d| }o p q r   c                 .   t         j                  st         j                  ryt        | j                  j
                  | j                  j
                  z   | j                  j
                  z         }t         j                  }|D ]  }|j                  |v s y y)NTF)
gdisable_permissionsacl_admin_modeset	role_userr4   role_developerrole_managercurrent_person__member_ofrA   )r   all_allowed_roles
user_rolesallowed_roles       r   check_asset_accessz!CmfAssetScheme.check_asset_accessk   s|      A$4$4 4 4t7J7J7P7P PSWSdSdSjSj jk00
- 	L*,	 r   c                     t         j                  j                  |      }|s8t        j                  j                  |g d      }|r|t         j                  |<   |S )N)rU   rT   rV   )rA   rD   )APPcache_asset_schemer   r   r   )clsasset_scheme_idasset_schemes      r   get_cache_asset_schemez%CmfAssetScheme.get_cache_asset_schemew   sY    --11/B!0044" 5 L :F&&7r   c                 b    t        d       d| j                  j                  i}t        d|       y )Nzasset_scheme::reload triggerr`   CmfAssetScheme:changed)printrA   r4   cmf_emit_server_event)r   datas     r   r   zCmfAssetScheme.trigger_reload   s(    ,-!477==16=r   rd   )channelc                 J    t         j                  j                  | d   d        y )Nr`   )r]   r^   pop)rg   r!   s     r   invalidate_cachezCmfAssetScheme.invalidate_cache   s      	""4(9#:DAr   )__name__
__module____qualname__r   r   r$   r'   r-   r   r6   r[   classmethodrb   r   staticmethodon_server_eventrk   __classcell__)r"   s   @r   r   r      sk    P.

(0+qZ
  >
 56B 7 Br   r   N)cmf.include%modules.asset.fields.cmf_asset_schemer    r   r   <module>rv      s     @IB^ IBr   