
    "9j                     |    d dl  d dlZ G d dej                  j                  j
                  j                        Zy)    )*Nc                       e Zd ZdZej
                  j                  j                  j                  j                  dgz   Z	 fdZ
ddZed        Z fdZ fdZd	 Zdd
 fd
Zedd       Zedg fd       Z fdZ fdZ xZS )CmfAssetCatTnested_listc                 D    t        |   |i | | j                          y N)super_save_importscaffold_ui_form)selfargskwargs	__class__s      './modules/asset/models/cmf_asset_cat.pyr
   zCmfAssetCat._save_import
   s!    d-f-    Fc                 j    | j                   s|sy g d}t        j                  j                  | |       y )N)name
logic_typecode	asset_catasset_types	asset_tag)is_newmodelsr   _scaffold_ui_form)r   forcefieldss      r   r   zCmfAssetCat.scaffold_ui_form   s)    {{5X,,T6:r   c                 b   |j                   dk(  rdnd}t        j                  |j                  ||      }|j	                          t        |j                  j                  t        j                        r|j                  j                  dv sy|dk(  r$|j                  s;d|_
        |j                          n#|j                  sd|_        |j                          t        j                  d|d	
      }|j	                          |D ]*  }t        j                  |||dd      j	                          , y)uQ  
        Создает ui_form-у для актива/типа актива
        Args:
            cat (CmfAssetCat/CmfAssetTypeCat): Категория актива/категория типа актива
            fields (массив строк): Поля, которые надо добавлять на ui-форму
        r   CmfAssetCmfAssetType)r   cmf_model_nameparent)assetsr   NT_maingroup)r   r"   typeF)r   ui_form_groupr"   hidden
hide_empty)
class_namer   	CmfUiFormr   save
isinstancetree_parentvalue	CmfFoldersys_typeasset_ui_form_children_inherit	save_data#asset_type_ui_form_children_inheritCmfUiFormGroupCmfUiFormField)clscatr   
model_nameasset_ui_formr'   
field_names          r   r   zCmfAssetCat._scaffold_ui_form   s    $'>>]#BZ
((chhzZ](^ 3??00&2B2BCOO,,0II #55592:::>7--7=W^-_  	J!!}][`mr " df	r   c                 F    t        |   |i |}| j                          |S r   )r	   r,   r   )r   r   r   resr   s       r   r,   zCmfAssetCat.save9   s'    glD+F+
r   c                 *    t         |          ddgz   S )Ndefault_logic_typeztree_parent.sys_type)r	   save_preload_fields)r   r   s    r   r@   zCmfAssetCat.save_preload_fields>   s#    w*, "80
 
 	
r   c                     t         j                  j                  |       }|D ]!  }|j                  |j	                                # |S )uq   Костыль. Потом доработаем all_nested и включим в ORM или что-то такое)r.   )r   r   listextendr   )r   r   r   childschilds        r   r   zCmfAssetCat.nested_listC   sD    ##((T(: 	/EMM%++-.	/r   )TEXKOM_db_deletec                    t         j                  j                  dd| g|      D ]  } |j                  |d|i|  t	        |   |d|i|S )Nr"   =)filterinclude_deletedrF   )r   r+   rB   deleter	   )r   rF   r   r   r:   r   s        r   rK   zCmfAssetCat.deleteJ   sp    #--22c4(, 3 
 	UM !M  $T9ITVT		U
 w~tQ6FQ&QQr   Nc                 h    |dk(  r-t         j                  |dg      }| j                  |dg      ryy)Nupdate	parent_id)r   role_manager)objrole_fieldsTF)cmfutilget_obj_by_idcheck_asset_cat_role_access)r7   rP   r;   permr"   s        r   ux_check_permzCmfAssetCat.ux_check_permR   s=    8''[M'BC..3^DT.Ur   c                    |r|syt         j                  j                  |j                  j                        }|D ]G  }t        ||      xs t        ||      }|s t        j                  }|D ]  }|j                  |v s  y I y)NFT)	r   CmfAssetSchemeget_cache_asset_schemerN   r/   getattrgcurrent_person__member_ofid)r7   rP   rQ   asset_schemefieldallowed_roles
user_rolesallowed_roles           r   rT   z'CmfAssetCat.check_asset_cat_role_accessZ   s    #,,CCCMMDWDWX  	$E#C/O7<3OM88
$1 $L#*4#$	$ r   c                     dg}| j                  |       | j                  | |      rt        |          S t	        dd       y )NrO   u]   У вас недостаточно прав для удаления группы активаTabort)load_fieldsrT   r	   check_delete_perm	cmf_alertr   rQ   r   s     r   rg   zCmfAssetCat.check_delete_permk   sC    %&%++D+>7,..qy}~r   c                     | j                   sy dg}| j                  |       | j                  | |      rt        |          S t        dd       y )NrO   ui   У вас недостаточно прав для редактирования группы активаTrd   )
is_changedrf   rT   r	   check_edit_permrh   ri   s     r   rl   zCmfAssetCat.check_edit_permt   sT    %&%++D+>7*,,}  FJ  	Kr   )F)NNrM   N)__name__
__module____qualname__	api_allowmodulesassetr   cmf_asset_catr   api_methodsr
   r   classmethodr   r,   r@   r   rK   rV   rT   rg   rl   __classcell__)r   s   @r   r   r      s    I--&&44@@LLP
 
K ; ! !F


 .3 R   -1r   
K 
Kr   r   )cmf.include"modules.asset.fields.cmf_asset_catrq   rr   r   rs   r    r   r   <module>rz      s1     )zK'--&&44@@ zKr   