
    <Yh                     D    d dl  d dlmZ  G d dej                        Zy)    )*)cmf_approve_groupc                   N     e Zd Zd Zed fd	       Z fdZ fdZ fdZ xZ	S )CmfApproveGroupc                    g }| |   D ]Q  }t        |t        j                        rJ|j                  |j                  d      }||j                  |       O|D ]  }|j                  |        ht        |t        j                        rR|st        j                  j                  dd|gdd|ggdg      }|D ]  }||j                  j                         z  }! t        |t        j                        r||j                  z  }t        |t        j                        r|j                  |j                         5||j                  j                         z  }T |S )	u  Получает всех аппруверов, включая вложенных в персонгруппы, принадлежащих ролям итп
        app_type - тип получаемых аппруверов (approvers/master_approvers)
        T)all_nested_personsparent==project_role=members)filterfields)
isinstancemodels	CmfPersonextract_var_objcodeappendCmfProjectRoleCmfProjectRoleAssignlistr   
all_nested
CmfOrgUnitpersonsCmfRoleperson
rg_members)	selfapp_typeprojectobjresultapproverextracted_membersassignsassigns	            $./common/models/cmf_approve_group.pyget_all_approversz!CmfApproveGroup.get_all_approvers   sQ    X 	;H(F$4$45$'$7$7Z^$7$_!$,MM(+$5 0h/0 Hf&;&;< 55::HdT[C\DRTWYaCbCdmvlw ; y & :Ffnn7799F:Hf&7&78(***Hfnn5hoo.(--88::/	;2     c                     |dk(  r`|sg }|si }|j                  d       |j                  d       dt        j                  j                  g dg|d<   t	        |   |fd||d|S t	        |   |f||d	|S )
N	approversz-systemnameOR)systemr
   Tr   T)include_hiddenorder_bymodels_filters)r1   r2   )r   r   r   default_options_filtersuperfield_options_list)clsrelation_field_namer1   r2   kwargs	__class__s        r(   r5   z"CmfApproveGroup.field_options_list'   s    +-!!#OOI&OOF#  77&+N;' 7-.A 8RV7?P^8068 8 w)*= S9GSKQS 	Sr*   c                 *    t         |          g dz   S )N)r	   parent.workflowr,   master_approversis_all_approvers_required)r4   save_preload_fields)r   r9   s    r(   r>   z#CmfApproveGroup.save_preload_fields=   s    w*, 0
 
 	
r*   c                    | j                  g d       t        t        j                  j                  | j
                  j                  j                  j                  | j                  j                  g       t        | (  |i |S )N)r	   r;   r,   r<   args)load_fieldsschedule_deferred_jobr   CmfWorkflowremove_approvegroup_approvesr	   workflowidvaluer4   delete)r   rA   r8   r9   s      r(   rI   zCmfApproveGroup.deleteB   sv    VWf00MMUYU`U`UiUiUlUlUrUrtxt{t{  uB  uB  UC  	Dw~t.v..r*   c                    | j                   rst        |   |i | t        t        j
                  j                  | j                  j                  j                  j                  | j                  j                  g       y t        |   |i | d| j                  j                  i}| j                  j                  rb| j                  j                  D cg c]  }|j                   c}|d<   | j                  j                  D cg c]  }|j                   c}|d<   t        t        j
                  j                  | j                  j                  j                  j                  g|       y c c}w c c}w )Nr@   approve_group_idapprovers_old_idsapprovers_new_ids)rA   r8   )is_newr4   saverC   r   rD   add_approvegroup_approvesr	   rF   rG   rH   r,   
is_changedoldnewrecalc_all_approves)r   rA   r8   
job_kwargsr$   r9   s        r(   rO   zCmfApproveGroup.saveH   s(   ;;GL$)&)!&"4"4"N"NVZVaVaVjVjVmVmVsVsuyu|u|  vC  vC  VD  EGL$)&),dggmm<J~~((OS~~OaOa2b88;;2b
./OS~~OaOa2b88;;2b
./!&"4"4"H"HPTP[P[PdPdPgPgPmPmOn  xB  C 3c2bs   E0E5)NN)
__name__
__module____qualname__r)   classmethodr5   r>   rI   rO   __classcell__)r9   s   @r(   r   r      s5    B S S*

/C Cr*   r   N)cmf.includecommon.fieldsr   r    r*   r(   <module>r^      s"     +OC'77 OCr*   