U
    r;d                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_security_level_rulec                       s:   e Zd Zed fdd	Z fddZ fddZ  ZS )	CmfSecurityLevelRuleNc                    sz   |dkr`|sg }|si }| d | d dtjjdddgg|d< t j|fd||d	|S t j|f||d
|S )NZaccess_memberz-systemnameORsystemz==T	CmfPerson)Zinclude_hiddenorder_bymodels_filters)r	   r
   )appendmodelsr   Zdefault_options_filtersuperfield_options_list)clsZrelation_field_namer	   r
   kwargs	__class__ *./common/models/cmf_security_level_rule.pyr      s&    

 z'CmfSecurityLevelRule.field_options_listc                    s   | j jr| j r| j D ]n}ttj|d }|s>td| ddd t|drV|jrV|j}n|jg}d|krd|krtd| d	dd qttj	j
| jjjgd
 t j||S )Nu	   Поля u     нет у модели CmfTask!T)abortr   r   ZCmfPersonGroupu	   Поле uW    не является ссылкой на пользователя или группуargs)Zaccess_task_fieldsZ
is_changedgetattrr   ZCmfTaskZ	cmf_alerthasattrZmodelcmf_deferred_taskCmfSecurityLevelrecalc_security_level_cacheparentidvaluer   save)selfr   r   Ztask_field_nameZfieldZfield_modelsr   r   r   r       s    

zCmfSecurityLevelRule.savec                    s&   t tjj| jjjgd t j||S )Nr   )	r   r   r   r   r   r   r   r   delete)r!   r   r   r   r   r   r"   &   s    
zCmfSecurityLevelRule.delete)NN)__name__
__module____qualname__classmethodr   r    r"   __classcell__r   r   r   r   r      s   r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   