B
    fN	                 @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_approve_groupc                   s*   e Zd Zdd Zed fdd	Z  ZS )CmfApproveGroupc       	      C   s   g }x| | D ]}t |tjr\|j|jdd}|dkrB|| qxx|D ]}|| qHW qt |tjr|snqtjjdd|gdd|ggdgd	}x*|D ]}||j	
 7 }qW q||j
 7 }qW |S )
u  Получает всех аппруверов, включая вложенных в персонгруппы, принадлежащих ролям итп
        app_type - тип получаемых аппруверов (approvers/master_approvers)
        T)Zall_nested_personsNparentz==Zproject_role=members)filterZfields)
isinstancemodels	CmfPersonZextract_var_objcodeappendZCmfProjectRoleZCmfProjectRoleAssignlistr   Z
all_nestedZ
rg_members)	selfZapp_typeZprojectobjresultZapproverZextracted_membersZassignsZassign r   $./common/models/cmf_approve_group.pyget_all_approvers   s"    

z!CmfApproveGroup.get_all_approversNc                sz   |dkr`|sg }|si }| d | d dtjjdddgg|d< t j|fd||d	|S t j|f||d
|S )NZ	approversz-systemnameORsystemz==Tr   )Zinclude_hiddenorder_bymodels_filters)r   r   )r   r
   r   Zdefault_options_filtersuperfield_options_list)clsZrelation_field_namer   r   kwargs)	__class__r   r   r   #   s    

z"CmfApproveGroup.field_options_list)NN)__name__
__module____qualname__r   classmethodr   __classcell__r   r   )r   r   r      s   r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   