
    &i                     D    d dl  d dlmZ  G d dej                        Zy)    )*)cmf_project_role_assignc                        e Zd Z fdZ fdZ fdZd Zd Zd Zd Z	e
d        Ze ed	
      d               Z xZS )CmfProjectRoleAssignc                 *    t         |          g dz   S )N)parentzproject_role.codemembers)supersave_preload_fields)self	__class__s    3./modules/project/models/cmf_project_role_assign.pyr   z(CmfProjectRoleAssign.save_preload_fields   s    w*, 0
 
 	
    c                     t        |   |i |}t        j                  j	                          t        j
                  j	                          t        j                  j	                          | j                          |S N)r
   savemodelsCmfProjectPermSchemetrigger_reloadr   CmfProjectNotifyScheme_calc_sdesk_clientsr   argskwargsresr   s       r   r   zCmfProjectRoleAssign.save   s]    glD+F+##224##224%%446  "
r   c                     t        |   |i |}t        j                  j	                          t        j
                  j	                          t        j                  j	                          | j                          |S r   )r
   deleter   r   r   r   r   _calc_sdesk_clients_deleter   s       r   r   zCmfProjectRoleAssign.delete   s]    gnd-f-##224##224%%446'')
r   c                 R    | j                   j                  d| j                          y NzPPP-PR-ADMIN)obj)r   check_project_role_accessr   s    r   check_edit_permz$CmfProjectRoleAssign.check_edit_perm   s    --n$++-Nr   c                     | j                   j                         r(| j                   j                  d| j                          y y r    )r   loadr"   r#   s    r   check_delete_permz&CmfProjectRoleAssign.check_delete_perm    s2    ;;KK11.dkk1R r   c                 d   | j                   j                  r| j                   j                  r<| j                   j                  j                  dk(  rt	        | j
                        }g }n<| j                   j                  r;| j                   j                  j                  dk(  rg }t	        | j
                        }ny | j                   r| j                   j                  dk(  sy g }g }| j
                  j                  rt        | j
                  j                        t        | j
                  j                        z
  D ]  }|j                  |        t        | j
                  j                        t        | j
                  j                        z
  D ]  }|j                  |        |D ]  }|j                  dk(  r0|j                  d       |j                  s1|j                          B|j                  dk(  rd|_        |j                          i|j                  dk(  rO|j                  j                         D ]1  }|j                  d       |j                  s"|j                          3 t        dd        |D ]  }|j                  dk(  r0|j                  d       |j                  s1|j                          B|j                  dk(  rR|j                  dk(  sb|j                  j                         D ]1  }|j                  d       |j                  s"|j                          3  y )	Nsdesk-client:default	CmfPersonTforce
CmfCompanyCmfPersonGroupu|   На эту роль можно назначать только Компании, Пользователей и Группы)abort)project_role
is_changedoldcodelistr	   newsetappend
class_name_calc_servicedesk_allowr   servicedesk_allow
rg_members
all_nested	cmf_alert)r   need_deleteneed_addr!   persons        r   r   z(CmfProjectRoleAssign._calc_sdesk_clients$   s   ''  $$):):)>)>)C)CG])]"4<<0""&&4+<+<+@+@+E+EI_+_ -  ):):)?)?CY)YKH||&&t||//03t||7G7G3HH ,C&&s+,t||//03t||7G7G3HH )COOC()  	gC~~,++$+7>>HHJ</(,%
#33!nn779 #F222>~~
#
   Y  bf  g	g   	#C~~,++$+7>>HHJ</ #33!nn779 #F222>~~
#	#r   c                    | j                   r| j                   j                  dk(  sy | j                  D ]  }|j                  dk(  r0|j	                  d       |j
                  s1|j                          B|j                  dk(  rR|j                  dk(  sb|j                  j                         D ]1  }|j	                  d       |j
                  s"|j                          3  y )Nr)   r*   Tr+   r-   r.   )	r0   r3   r	   r8   r9   r1   r   r;   r<   )r   r!   r@   s      r   r   z/CmfProjectRoleAssign._calc_sdesk_clients_delete[   s    T%6%6%;%;?U%U<< 	#C~~,++$+7>>HHJ</ #33!nn779 #F222>~~
#	#r   c                 2    t        d       t        dd       y)u   Вызываем при изменении назначений и при изменении агрегатов (группы, OrgUnit итп)z$CmfProjectRoleAssign::trigger_reloadCmfProjectRoleAssign:changedN)printcmf_emit_server_event)clss    r   r   z#CmfProjectRoleAssign.trigger_reloadn   s     	46<dCr   rC   )channelc                  0    i t         _        t        d       y )Nz9CmfProjectRoleAssign::on_project_role_assign_changes done)APPcache_in_project_rolerD   )_kwargss    r   on_project_role_assign_changesz3CmfProjectRoleAssign.on_project_role_assign_changest   s     %'!IKr   )__name__
__module____qualname__r   r   r   r$   r'   r   r   classmethodr   staticmethodon_server_eventrL   __classcell__)r   s   @r   r   r      sc    
OS5#n#& D D
 ;<L = Lr   r   N)cmf.includemodules.project.fieldsr   r    r   r   <module>rW      s"     :sL2GG sLr   