U
    Pdl                     @   s0   d dl T d dlZG dd dejjjejjZdS )    )*Nc                       s$   e Zd Zdd Z fddZ  ZS )CmfRolec                    s:   | j jsd S g  fdd | jr0 | jj | _d S )Nc                    s\   t jj| dgd}|d k	rXd|jj|jj|jjd |jrH|jjnd }|rX | d S )Ntree_parent_id)idZfieldsr   )r   codename)	modelsZ
CmfOrgUnitgetinsertr   valuer   r   r   )Zorg_unit_idZorg_unitZorg_unit_parentget_org_unitpath #./modules/person/models/cmf_role.pyr      s     z.CmfRole._calc_cache_path.<locals>.get_org_unit)Ztree_parent
is_changedr   r   
cache_path)selfr   r   r   _calc_cache_path   s    zCmfRole._calc_cache_pathc                    s   |    | jjrtj  tj  t| jj| jj	d}|d |d kr|
 D ]2\}}|rP|ddg |jdd |jdd qPt jf |S )	N)newoldr   r   ZrolesZprimary_roleT)force)Z	only_data)r   personr   r   ZCmfAccessListZtrigger_reloadZCmfProjectPermSchemedictr   r   itemsZload_fieldsZ_calc_primary_rolesavesuper)r   kwargsZpersons_r   	__class__r   r   r      s    

zCmfRole.save)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r      s   r   )	Zcmf.includeZcommon.models.cmf_translit_codecommonr   Zcmf_translit_codeZCmfTranslitCodeZcmfZ	CmfEntityr   r   r   r   r   <module>   s   