
    }f                         d dl  d dlZ G d dej                  j                  j
                  ej                  j                        Zy)    )*Nc                   $     e Zd Zd Z fdZ xZS )CmfRolec                     | j                   j                  sy g fd| j                  r | j                  j                         | _        y )Nc                 R   t         j                  j                  | dg      }|j                  d|j                  j
                  |j                  j
                  |j                  j
                  d       |j                  r|j                  j
                  nd }|r	 |       y y y )Ntree_parent_id)idfieldsr   )r	   codename)	models
CmfOrgUnitgetinsertr	   valuer   r   r   )org_unit_idorg_unitorg_unit_parentget_org_unitpaths      #./modules/person/models/cmf_role.pyr   z.CmfRole._calc_cache_path.<locals>.get_org_unit   s    ((,,EUDV,WH#Ahkk&7&7ATAT^f^k^k^q^qrsCKCZCZ("9"9"?"?`d" 1 # $    )tree_parent
is_changedr   r   
cache_path)selfr   r   s    @@r   _calc_cache_pathzCmfRole._calc_cache_path   sE    **	2 ,,223r   c                    | j                          | j                  j                  rt        j                  j                  | j                  g       t        j                  j                          t        j                  j                          t        j                  j                          t        | j                  j                  | j                  j                        }|d   |d   k7  rR|j                         D ]?  \  }}|s	|j                  ddg       |j!                  d       |j#                  d       A t%        | D  d	i |S )
N)newoldr   r    rolesprimary_roleT)force)	only_data )r   personr   r   CmfAccessListsubject_changed_hookr	   CmfProjectPermSchemetrigger_reloadCmfProjectRoleAssignCmfProjectNotifySchemedictr   r    itemsload_fields_calc_primary_rolesavesuper)r   kwargspersons_r&   	__class__s        r   r1   zCmfRole.save   s     ;;!!  55twwi@''668''668))88:t{{DKKOODGu~/!( 4IAv**G^+DE111=d3	4 w|%f%%r   )__name__
__module____qualname__r   r1   __classcell__)r6   s   @r   r   r      s    && &r   r   )cmf.includecmf.models.cmf_translit_codecmfr   cmf_translit_codeCmfTranslitCode	CmfEntityr   r%   r   r   <module>rA      s3     #(&cjj**::CJJ<P<P (&r   