
     h                     L    d dl Z d dl d dlmZ  G d dej                        Zy)    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                     | j                  dg       | j                  syt        j                  | j                        }|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   sI    ,(''800g[`0aa    Nfilterc                   g d}g d}t         j                  j                  dg       t         j                  j                  ryt         j                  j                  j                  rUt
        j                  j                  dgddddggd	dt         j                  t         j                  j                  ggg
      }n;t
        j                  j                  dgddddggd	dt         j                  ggg
      }dd|D cg c]  }|j                   c}g}g }	|	j                  d||g       t
        j                  j                  |	      }
t        j                  d |
      }t        |      }g }t
        j                  j                  |dd|g|g
      D ])  }t        j                  |d       |j                  |       + |S c c}w )N)namecodetext)servicedesk_public=Tzcompany.servicedesk_allowparentzproject_role.codeINzsdesk-client:defaultzsdesk-agent:defaultmembers)fieldsr   idORr   c                 *    | j                  d| d      S )Nr   Fr   )r   )ps    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	parent_idappend
CmfProjectbuiltinsr   r   cmfutilacl_set_policy)clsr   argskwargsr$   filter_1project_assign_listr(   filter_2
prj_filterproject_listfiltered_project_listallow_projectsitemsr   s                  r   r   zCmfDocument.sdesk_list   s    *4	""$?#@A>>!!ann&<&<&N&N"("="="B"B z($1GI^0_`q~~q~~7M7M&NO #C # #)"="="B"B z($1GI^0_`q~~&67 #C # $6I J JK
4845((--Z-@ (\!

 34%%**&8TSaBbdjAk*l 	C""3/LL	 ! !Ks   =G)r$   c                    |sg }d|vr|j                  d        | j                  |d|i|}|r>|j                  j                  d|j                  d      rt        j                  |d       |S )Nr   r$   r   Fr   r*   )r3   getr   r   r6   r7   )r8   r$   r9   r:   ress        r   r   zCmfDocument.sdesk_get=   sm    FF"MM)$cggt5F5f53;;88ckkgl8m""3/
r   c                     |j                  dd       }g }|s|S t        j                  j                  |dg      }|j                  j	                  d|j                  d      r | j
                  |i |}|S )Nnode_idr   )r%   r$   r   Fr   )rD   r/   r   r   r   macros_page_tree_get)r8   r9   r:   rG   rE   documents         r   r	   z&CmfDocument.sdesk_macros_page_tree_getI   s|    **Y-J %%))Wi[)I55o8K[K[in5o*#**D;F;C
r   c                 v    |sg }|xr |j                  d      }|r	|r|dd|gg}t        	|   |f||||d|S )Nr2   r    )object_fieldsr   r$   order_by)rD   superfield_options_list)
r8   relation_field_namerK   r   r$   rL   filter_by_projectr:   r2   	__class__s
            r   rN   zCmfDocument.field_options_listX   sj     F!Dm&7&7&D	*{C;<Fw)y/<VTZemyqwy 	yr   )NNNNN)__name__
__module____qualname__r   r   api_methodsr   classmethodr   r   r	   rN   __classcell__)rQ   s   @r   r   r      s    **66 :
 
Kb &* ' 'R %) 	 	   lp"
y 
yr   r   )r5   cmf.includemodules.project.modelsr   r    r   r   <module>r[      s$      /^y,** ^yr   