
    bh                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)cmf_approve_groupc                   T     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 ]L}t          |t          j                  rO|                    |j        d          }||                    |           Q|D ]}|                    |           lt          |t          j                  rO|st          j                            dd|gdd|ggdg	          }|D ]}||j	        
                                z  }t          |t          j                  r||j        z  }t          |t          j                  r|                    |j                   0||j        
                                z  }N|S )
u  Получает всех аппруверов, включая вложенных в персонгруппы, принадлежащих ролям итп
        app_type - тип получаемых аппруверов (approvers/master_approvers)
        T)all_nested_personsN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   s    X 	; 	;H(F$455 ;$'$7$7Z^$7$_$_!$,MM(++++$5 0 0h////0 Hf&;<< ;  5::HdT[C\DRTWYaCbCdmvlw ; y y & : :Ffn77999FF:Hf&788 ;(**Hfn55 ;ho....(-88:::    Nc                    |dk    ri|sg }|si }|                     d           |                     d           dt          j        j        g dg|d<    t	                      j        |fd||d|S  t	                      j        |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&&&+N;' .577-.A 8RV7?P^8 8068 8 8 *uww)*= S9GS SKQS S 	Sr*   c                 N    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/    ww**,, 0
 0
 0
 
 	
r*   c                     |                      g d           t          t          j        j        | j        j        j        j        | j        j        g            t                      j
        |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   s    VVVWWWf0MUYU`UiUlUrtxt{  uB  UC  	D  	D  	D  	Duww~t.v...r*   c                    | j         r[ t                      j        |i | t          t          j        j        | j        j        j	        j
        | j	        j
        g           d S  t                      j        |i | d| j	        j
        i}| j        j        r2d | j        j        D             |d<   d | j        j        D             |d<   t          t          j        j        | j        j        j	        j
        g|           d S )Nr@   approve_group_idc                     g | ]	}|j         
S  rG   .0r$   s     r(   
<listcomp>z(CmfApproveGroup.save.<locals>.<listcomp>R       2b2b2b88;2b2b2br*   approvers_old_idsc                     g | ]	}|j         
S rM   rN   rO   s     r(   rQ   z(CmfApproveGroup.save.<locals>.<listcomp>S   rR   r*   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_kwargsr9   s       r(   rW   zCmfApproveGroup.saveH   s6   ; 	CEGGL$)&)))!&"4"NVZVaVjVmVsuyu|  vC  VD  E  E  E  E  E  EEGGL$)&))),dgm<J~( c2b2bt~Oa2b2b2b
./2b2bt~Oa2b2b2b
./!&"4"HPTP[PdPgPmOn  xB  C  C  C  C  C  Cr*   )NN)
__name__
__module____qualname__r)   classmethodr5   r>   rI   rW   __classcell__)r9   s   @r(   r   r      s          B S S S S S [S*
 
 
 
 

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