
    fi                     H    d dl Z d dlT d dlmZ  G d dej                  ZdS )    N)*)cmf_documentc                        e Zd Zej        j        g dz   Zd Zeddd            Zeddd            Z	ed             Z
e	 	 d
 fd		            Z xZS )CmfDocument)	sdesk_get
sdesk_listsdesk_macros_page_tree_getc                     |                      dg           | j        sdS t                              | j                  }|                    d|d          S )N
project_idFPPP-PR-BROWSEobjraise_error)load_fieldsr   APPget_cache_projectcheck_project_role_access)selfprojects     ,./modules/servicedesk/models/cmf_document.py_sdesk_check_accesszCmfDocument._sdesk_check_access   sX    ,((( 	5''8800g[`0aaa    Nfilterc                4   g d}g d}t           j                            dg           t           j        j        r^t           j        j        j        rHt
          j                            dgddddggd	dt           j        t           j        j        ggg
          }n7t
          j                            dgddddggd	dt           j        ggg
          }ddd |D             g}g }|                    d||g           t
          j	                            |          }	t          j        d |	          }
t          |
          }g }t
          j                            |dd|g|g
          D ]2}t                              |d           |                    |           3|S )N)namecodetext)servicedesk_public=Tzcompany.servicedesk_allowparentzproject_role.codeINzsdesk-client:defaultzsdesk-agent:defaultmembers)fieldsr   idc                     g | ]	}|j         
S  )	parent_id).0ps     r   
<listcomp>z*CmfDocument.sdesk_list.<locals>.<listcomp>+   s     J J J J J Jr   ORr   c                 2    |                      d| d          S )Nr   Fr   )r   )r*   s    r   <lambda>z(CmfDocument.sdesk_list.<locals>.<lambda>2   s    a11/qV[1\\ r   read)gcurrent_userr   companyservicedesk_allowmodelsCmfProjectRoleAssignlistappend
CmfProjectbuiltinsr   r   cmfutilacl_set_policy)clsr   argskwargsr$   filter_1project_assign_listfilter_2
prj_filterproject_listfiltered_project_listallow_projectsitemsr   s                 r   r   zCmfDocument.sdesk_list   s    *))444	""$?#@AAA>! 	an&<&N 	"("="B"B z($1GI^0_`q~q~7M&NO #C # # #)"="B"B z($1GI^0_`q~&67 #C # # $ J J6I J J JK
484555(--Z-@@ (\\!
 !

 344%**&8TSaBbdjAk*ll 	 	C""3///LLr   )r$   c                    |sg }d|vr|                     d            | j        |d|i|}|r=|j                            d|j        d          rt                              |d           |S )Nr   r$   r   Fr   r/   )r7   getr   r   r:   r;   )r<   r$   r=   r>   ress        r   r   zCmfDocument.sdesk_get=   s     	FF""MM)$$$cgt5F5f55 	03;88ckgl8mm 	0""3///
r   c                     |                     dd           }g }|s|S t          j                             |dg          }|j                            d|j        d          r | j        |i |}|S )Nnode_idr   )r%   r$   r   Fr   )rH   r4   r   r   r   macros_page_tree_get)r<   r=   r>   rK   rI   documents         r   r	   z&CmfDocument.sdesk_macros_page_tree_getI   s    **Y-- 	J %))Wi[)II55o8K[in5oo 	<*#*D;F;;C
r   c                     |sg }|o|                     d          }|r	|r|dd|gg} t                      j        |f||||d|S )Nr(   r    )object_fieldsr   r$   order_by)rH   superfield_options_list)
r<   relation_field_namerO   r   r$   rP   filter_by_projectr>   r(   	__class__s
            r   rR   zCmfDocument.field_options_listX   s      	F!Dm&7&7&D&D	 	=* 	={C;<F)uww)y/<VTZemy yqwy y 	yr   )NNNNN)__name__
__module____qualname__r   r   api_methodsr   classmethodr   r   r	   rR   __classcell__)rU   s   @r   r   r      s        *6 :
 :
 :
 
Kb b b &* ' ' ' ' ['R %) 	 	 	 	 [	   [ lp"
y 
y 
y 
y 
y [
y 
y 
y 
y 
yr   r   )r9   cmf.includemodules.project.modelsr   r   r'   r   r   <module>r^      sw         / / / / / /^y ^y ^y ^y ^y,* ^y ^y ^y ^y ^yr   