
    Zf                     f    d dl T d dlZ G d dej        j        j        ej        j                  ZdS )    )*Nc                   $     e Zd Zd Z fdZ xZS )CmfRolec                 |    | j         j        sd S g fd| j        r | j        j                   | _        d S )Nc                    t           j                            | dg          }|\                    d|j        j        |j        j        |j        j        d           |j        r|j        j        nd }|r |           d S d S d S )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,WWH#Ahk&7AT^f^k^qrrsssCKCZ"d("9"?"?`d" 2 L11111	 $#2 2    )tree_parent
is_changedr   r   
cache_path)selfr   r   s    @@r   _calc_cache_pathzCmfRole._calc_cache_path   sh    * 	F	2 	2 	2 	2 	2 	2  	4L,2333r   c                    |                                   | j        j        rt          j                            | j        g           t          j                                         t          j	                                         t          j
                                         t          | j        j        | j        j                  }|d         |d         k    r_|                                D ]J\  }}|rC|                    ddg           |                    d           |                    d           K t%                      j        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/    ;! 	4 55twi@@@'66888'66888)88:::t{DKODDDGu~//!( 4 4IAv 4**G^+DEEE111===d333uww|%%f%%%r   )__name__
__module____qualname__r   r1   __classcell__)r6   s   @r   r   r      sG          && & & & & & & & &r   r   )cmf.includecmf.models.cmf_translit_codecmfr   cmf_translit_codeCmfTranslitCode	CmfEntityr   r%   r   r   <module>rA      s`        # # # #(& (& (& (& (&cj*:CJ<P (& (& (& (& (&r   