U
    [Se	                     @   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 }| | D ]}t |tjrV|j|jdd}|dkr@|| q|D ]}|| qDqt |tjr|r|jdksrqtjj	dd|gdd|ggd	gd
}|D ]}||j
 7 }qq||j 7 }q|S )u  Получает всех аппруверов, включая вложенных в персонгруппы, принадлежащих ролям итп
        app_type - тип получаемых аппруверов (approvers/master_approvers)
        T)Zall_nested_personsNZ
CmfProjectparent==Zproject_role=members)filterZfields)
isinstancemodels	CmfPersonZextract_var_objcodeappendZCmfProjectRole
class_nameZCmfProjectRoleAssignlistr   Z
all_nestedZ
rg_members)	selfZapp_typeZroot_parent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systemr   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   