B
    b©EfÙ  ã               @   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ˆxx| j D ]n}ttj|d ƒ}|s@td|› ddd t|dƒrX|jrX|j}n|jg}d|krd|krtd|› d	dd qW 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Úschedule_deferred_jobÚCmfSecurityLevelÚrecalc_security_level_cacheÚparentÚidÚvaluer   Úsave)Úselfr   r   Ztask_field_nameZfieldZfield_models)r   r   r   r      s    zCmfSecurityLevelRule.savec                s&   t tjj| jjjgd tƒ j||ŽS )N)r   )	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   