U
    Įwh                     @   s>   d dl Z d dlT d dlmZ d dlmZ G dd dejZdS )    N)*)cmf_project)cmfutilc                       sr   e Zd Zejjddddddddd	d
dg Zdd ZeddddZeddddZ	ddd fdd
Z
  ZS )
CmfProjectZget_obj_treeZdelete_nodeZ	move_itemZget_public_tree_leafZget_tree_leafcheck_project_role_accessZcreate_from_templateZpublic_listZ
public_get	sdesk_get
sdesk_listc                 C   s   | j d| ddS NPPP-PR-BROWSEF)objZraise_errorr   )self r   +./modules/servicedesk/models/cmf_project.py_sdesk_check_access   s    zCmfProject._sdesk_check_accessN)filterc                O   s,  dddg}g }|rd|kr|}dddgg}dddg}t jd	g t jjrt jjjrtjjd
gddddggddt jt jjgggd}n*tjjd
gddddggddt jgggd}dddd |D g}|d||g || tj	j||d}	t
dd |	}
g }t|
D ]}t|d || q
|S )Nnamecodedescriptionlogic_prefix=zproject.servicedeskZservicedesk_publicTzcompany.servicedesk_allowparentzproject_role.codeINzsdesk-client:defaultzsdesk-agent:defaultmembers)fieldsr   idc                 S   s   g | ]
}|j qS r   )	parent_id).0pr   r   r   
<listcomp>>   s     z)CmfProject.sdesk_list.<locals>.<listcomp>ORc                 S   s   | j d| ddS r	   r   )r   r   r   r   <lambda>E       z'CmfProject.sdesk_list.<locals>.<lambda>read)gZcurrent_userZload_fieldsZcompanyZservicedesk_allowmodelsZCmfProjectRoleAssignlistappendr   builtinsr   r   acl_set_policy)clsr   argskwargsr   Zsearch_filterZfilter_1Zproject_assign_listZfilter_2Zproject_listZfiltered_project_listitemsr   r   r   r   r      sD    


zCmfProject.sdesk_list)r   c                   s|   ddddddddd	d
dddddddg |s.g }t t fdd|}| j|d|i|}|rx|jd|d t|d |S )Nr   r   r   r   textr   Zcmf_owner_idZactivity_idr   Z
logic_typeZ	cmf_ownerZproject_typeZtask_code_prefixZshow_tree_iconsZui_modelZui_view_formZallow_edit_commentsc                    s   |  kS )Nr   )fZallowed_fieldsr   r   r!   i   r"   z&CmfProject.sdesk_get.<locals>.<lambda>r   r
   )r   r#   )r&   r(   r   getr   r   r)   )r*   r   r+   r,   Zprojectr   r0   r   r   P   s4    zCmfProject.sdesk_getTF	recursiveTEXKOM_db_deletec                   s\   | j   | j rtddd tjj| |dD ]}|j|d q,t j| f|||d|S )Nu@   Нельзя удалять проект по умолчаниюT)abort)r   Zinclude_deleted)r4   r2   )Z
is_defaultloadZ	cmf_alertr%   ZCmfSDeskRequestGroupr&   deletesuper)r   r3   r4   r+   r,   r   	__class__r   r   r7   q   s    
zCmfProject.delete)__name__
__module____qualname__r   r   Zapi_methodsr   classmethodr   r   r7   __classcell__r   r   r9   r   r      s&   6 r   )r(   Zcmf.includeZmodules.servicedesk.fieldsr   Zcmf.utilr   r   r   r   r   r   <module>   s   