U
    Rd1#                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZ d dlZd dlZd dl	m
Z
 d dlmZ d dlT d dlmZ d d	lmZmZmZ G d
d deZdS )    N)copy)uuid4)urlparseparse_qs)cmfutil)commit_all_ds)*)BaseView)ApiViewCmfResultSplittermemoizedc                       s>   e Zd ZdZdd ZedddZejj	 fddZ
  ZS )	PublicApiViewz/pub/apic                 C   s0   t dt j  t jr,t js,t d dS dS )Nu-   Доступ к публичному апи: uK   Доступ к share-api не прошел проверку sharelink_hashFT)gdebugZcurrent_personZsharelink_access_requestZsharelink_access_grantedself r   !./modules/api/views/public_api.py_check_access   s
    
zPublicApiView._check_access)methodc                 O   sZ  z|j ddd\}}W n tk
r,   Y dS X |ds<dS || jkrJdS d}|dkrh| jd d d	 }|d
kr| jd d d }|dkr| jd d d }|dkr| jd d d }|dkr| jd d d }|dkr| jd d d }|dkr| jd d d }|dkr"| jd d d }|dkr>| jd d d }|dkrZ| jd  d d! }|d"krv| jd d d# }|d$kr| jd d d# }|d%kr| jd d d& }|d'kr| jd d d( }|d)kr| jd* d d# }|d+kr| jd, d d# }|d-kr| jd, d d. }|d/kr:| jd, d d0 }|d1krV| jd, d d2 }|d3krr| jd, d d4 }|d5kr| jd, d d }|d6kr| jd, d d }|d7kr| jd, d d8 }|d9kr| jd, d d: }|d;kr| jd d d< }|d=kr| jd> d d }|d?kr6| jd> d d# }|d@krR| jd d d# }|dAkrn| jdB d d# }|dCkr| jdD d dE }|dFkr| jdD d d# }|dGkr| jd d dH }|dIkr| jd d dJ }|dKkr| jd d d# }|dLkr| jd d d& }|dMkr2| jd d dN }|dOkrN| jdP d d# }|dQkrj| jd d d }|dRkr| jdS d dT }|dUkr| jd* d d }|dVkr| jdD d d }|dWkr| jd  d dX }|dYkr| jd d dZ }|d[kr| jdD d d\ }|d]kr.| jd, d d^ }|s8dS | j| d_ |d_< d`}||da< |S )bu9  
        def rpc_prepare_method():
            #Проскси-методы
            if method == „PersonVar.public_ping“:
                method = PersonVar.ping
            # Спец.методы
            if method == „PersonVar.public_set“:
                method = PersonVar.public_set
        .   )maxsplitNZpublic_z!CmfPerson.public_get_current_userZ	CmfPersonmethodsZget_current_userz BaseModel.public_all_models_metaZ	BaseModelZall_models_metaz!BaseModel.public_get_ui_full_pathZpublic_get_ui_full_pathz$CmfMenuTree.public_tree_menu_in_rootZCmfMenuTreeZtree_menu_in_rootzCmfMenuTree.public_get_nodeZget_nodez#CmfMenuTree.public_get_parents_listZget_parents_listz!CmfFolder.public_get_project_nameZ	CmfFolderZget_project_namezCmfAttachment.public_listZCmfAttachmentlistzCmfComment.public_listZ
CmfCommentZpublic_listzCmfPersonVar.public_getZCmfPersonVargetzCmfComment.public_getZ
public_getzCmfPerson.public_getzCmfComment.public_createZpublic_createzCmfComment.public_deleteZpublic_deletezCmfProject.public_getZ
CmfProjectzCmfDocument.public_getZCmfDocumentzCmfDocument.public_lockZpublic_lockzCmfDocument.public_unlockZpublic_unlockzCmfDocument.public_lock_pingZpublic_lock_pingzCmfDocument.public_do_approveZpublic_do_approvez#CmfDocument.public_get_project_namezCmfDocument.public_listz.CmfDocument.public_update_text_inline_commentsZ"public_update_text_inline_commentszCmfDocument.public_updateupdatezCmfComment.public_updateZpublic_updatezCmfTask.public_listZCmfTaskzCmfTask.public_getzCmfFolder.public_getzCmfList.public_getZCmfListz%CmfGlobalSettings.public_get_settingsZCmfGlobalSettingsZpublic_get_settingszCmfGlobalSettings.public_getzCmfPerson.public_mark_viewedZpublic_mark_viewedzCmfMenuTree.public_get_treeZpublic_get_treezCmfAttachment.public_getzCmfAttachment.public_createzCmfAttachment.public_get_rfileZpublic_get_rfilezCmfTaskFilter.public_getZCmfTaskFilterzCmfPerson.public_listzCmfLicense.public_listZ
CmfLicenseZpublic_list_hack_emptyzCmfProject.public_listzCmfGlobalSettings.public_listz&CmfPersonVar.public_update_recents_objZpublic_update_recents_objz#CmfPerson.public_get_org_units_listZpublic_get_org_units_listz+CmfGlobalSettings.public_get_page_customizeZpublic_get_page_customizez CmfDocument.public_parent_ui_getZpublic_parent_ui_getZ_classFZ_use_simple)split
ValueError
startswithZrpc)r   r   argskwargsZproc_cls_nameZproc_methodZ
res_methodZ
use_simpler   r   r   rpc_prepare_method   s    









































z PublicApiView.rpc_prepare_methodc                    s
   t   S )N)superpostr   	__class__r   r   r$      s    zPublicApiView.post)__name__
__module____qualname__Z__url__r   strr"   ZcmfZviewsactionr$   __classcell__r   r   r%   r   r      s    r   )	tracebackr   Zuuidr   Zurllib.parser   r   ZhashlibZujsonZcmf.utilr   Zcmf.data_providers.baser   Zcmf.includeZ	cmf.viewsr	   Zmodules.api.views.indexr
   r   r   r   r   r   r   r   <module>   s   