B
    ZfF                 @   s2   d dl Z d dlT d dlmZ G dd dejZdS )    N)*)cmf_documentc                   s^   e Zd Zejjddg Zdd ZeddddZedd	d
dZ	ed fdd	Z
  ZS )CmfDocument	sdesk_get
sdesk_listc             C   s    |  dg | jjd| jddS )NprojectzPPP-PR-BROWSEF)objraise_error)load_fieldsr   check_project_role_access)self r   ,./modules/servicedesk/models/cmf_document.py_sdesk_check_access   s    zCmfDocument._sdesk_check_accessN)filterc            O   s   dddg}dddg}t jdg t jjrft jjjrft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}g }|d||g tj	j|d}	t
dd |	}
t|
}g }x8tjj|dd
|g|gdD ]}t|d || qW |S )NnamecodetextZservicedesk_public=Tz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*CmfDocument.sdesk_list.<locals>.<listcomp>OR)r   c             S   s   | j d| ddS )NzPPP-PR-BROWSEF)r   r	   )r   )r   r   r   r   <lambda>.       z(CmfDocument.sdesk_list.<locals>.<lambda>read)gZcurrent_userr
   ZcompanyZservicedesk_allowZmodelsZCmfProjectRoleAssignlistappendZ
CmfProjectbuiltinsr   r   cmfutilacl_set_policy)clsr   argskwargsr   Zfilter_1Zproject_assign_listZfilter_2Z
prj_filterZproject_listZfiltered_project_listZallow_projectsitemsr   r   r   r   r      s2    

 zCmfDocument.sdesk_list)r   c            O   sV   |sg }d|kr| d | j|d|i|}|rR|jjd|jddrRt|d |S )Nr   r   zPPP-PR-BROWSEF)r   r	   r!   )r$   getr   r   r&   r'   )r(   r   r)   r*   Zresr   r   r   r   9   s    
zCmfDocument.sdesk_getc       	         sJ   |sg }|o| d}|r,|r,|dd|gg}t j|f||||d|S )Nr   r   )object_fieldsr   r   order_by)r,   superfield_options_list)	r(   Zrelation_field_namer-   r   r   r.   Zfilter_by_projectr*   r   )	__class__r   r   r0   F   s    zCmfDocument.field_options_list)NNNNN)__name__
__module____qualname__r   r   Zapi_methodsr   classmethodr   r   r0   __classcell__r   r   )r1   r   r      s   ) r   )r%   Zcmf.includeZmodules.project.modelsr   r   r   r   r   r   <module>   s   