U
    <Yhè  ã                   @   s*   d dl T d dlmZ G dd„ dejƒZdS )é    )Ú*)Úcmf_approve_groupc                       sN   e Zd Zdd„ Zed‡ fdd„	ƒZ‡ fdd„Z‡ fdd	„Z‡ 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¤|shqtjjdd|gdd|ggdgd	}|D ]}||j	 
¡ 7 }qŽqt |tjƒr¼||j7 }qt |tjƒrÖ| |j¡ q||j 
¡ 7 }q|S )
u  ÐŸÐ¾Ð»ÑƒÑ‡Ð°ÐµÑ‚ Ð²ÑÐµÑ… Ð°Ð¿Ð¿Ñ€ÑƒÐ²ÐµÑ€Ð¾Ð², Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ñ… Ð² Ð¿ÐµÑ€ÑÐ¾Ð½Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹, Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ‰Ð¸Ñ… Ñ€Ð¾Ð»ÑÐ¼ Ð¸Ñ‚Ð¿
        app_type - Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÐ¼Ñ‹Ñ… Ð°Ð¿Ð¿Ñ€ÑƒÐ²ÐµÑ€Ð¾Ð² (approvers/master_approvers)
        T)Zall_nested_personsNÚparentú==Zproject_roleú=Úmembers)ÚfilterZfields)Ú
isinstanceÚmodelsÚ	CmfPersonZextract_var_objÚcodeÚappendZCmfProjectRoleZCmfProjectRoleAssignÚlistr   Z
all_nestedZ
CmfOrgUnitZpersonsZCmfRoleZpersonZ
rg_members)	ÚselfZapp_typeZprojectÚobjÚresultÚapproverZextracted_membersZassignsZassign© r   ú$./common/models/cmf_approve_group.pyÚget_all_approvers   s0    ÿÿ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 )NÚ	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_listc                    s   t ƒ  ¡ dddddg S )Nr   úparent.workflowr   Úmaster_approversZis_all_approvers_required)r   Úsave_preload_fields)r   r!   r   r   r%   =   s        ÿz#CmfApproveGroup.save_preload_fieldsc                    s@   |   ddddg¡ ttjj| jjjj| jjgd t	ƒ j
||ŽS )Nr   r#   r   r$   ©Úargs)Zload_fieldsÚschedule_deferred_jobr   ÚCmfWorkflowZremove_approvegroup_approvesr   ÚworkflowÚidÚvaluer   Údelete)r   r'   r    r!   r   r   r-   B   s     zCmfApproveGroup.deletec                    s¤   | j r6tƒ j||Ž ttjj| jjj	j
| j	j
gd njtƒ j||Ž d| j	j
i}| jjr„dd„ | jjD ƒ|d< dd„ | jjD ƒ|d< ttjj| jjj	j
g|d d S )	Nr&   Zapprove_group_idc                 S   s   g | ]
}|j ‘qS r   ©r+   ©Ú.0r   r   r   r   Ú
<listcomp>R   s     z(CmfApproveGroup.save.<locals>.<listcomp>Zapprovers_old_idsc                 S   s   g | ]
}|j ‘qS r   r.   r/   r   r   r   r1   S   s     Zapprovers_new_ids)r'   r    )Zis_newr   Úsaver(   r   r)   Zadd_approvegroup_approvesr   r*   r+   r,   r   Z
is_changedÚoldÚnewZrecalc_all_approves)r   r'   r    Z
job_kwargsr!   r   r   r2   H   s    "zCmfApproveGroup.save)NN)
Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr   r%   r-   r2   Ú__classcell__r   r   r!   r   r      s   !r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   Ú<module>   s   