U
    r;d                     @   s6   d dl mZ d dlT d dlmZ G dd dejZdS )    )Response)*)cmf_webhookc                   @   s:   e Zd Zedd Zed
ddZedd Zdd	 ZdS )
CmfWebhookc              	   C   sD   t jddd, tjjdd}|s6tjdddd }W 5 Q R X |S )	Nz&CmfLock:CmfWebhook:create_person_group   )timeoutwebhook)codeTu   Webhook группа)r	   systemname)ZcmfutilZCmfLockmodelsZCmfPersonGroupgetZsave)clsgroup r   *./modules/automation/models/cmf_webhook.pywebhook_person_group   s
    zCmfWebhook.webhook_person_groupNc                 C   sL   t jd}|rHtj|}tjj||d}td| d| d |S d S )Ntoken)Zwebhook_token_hashfieldsz CmfWebhook.token_person: person(z) by token_hash())requestargsr   r   Z	CmfPersonZ
hash_tokengdebug)r   r   r   Z
token_hashZtoken_personr   r   r   get_token_person   s    zCmfWebhook.get_token_personc                 C   s   t dt j dtj  tjd}|sBt d tddddS d	d
dddg}| j||d}|sp| j||d}|st d|  td| ddddS |jt jkrt d|j dt j  tddddS | }|S )NzCmfWebhook.cls_call: person z, args: r   z(CmfWebhook.cls_call: webhook name absentzwebhook name absent  
text/plainZcontent_type	hook_type
token_userZ	eval_codeZ	eval_fileZeval_file_pathr	   r   )r   r   z/CmfWebhook.cls_call: webhook not found by name webhook 
 not found  z(CmfWebhook.cls_call: webhook token_user z mismatch current_person znot authorized. Show error logi  )	r   r   Zcurrent_personr   r   r   r   r   call)r   Zwebhook_namer   r   Zresponser   r   r   cls_call   s&    
zCmfWebhook.cls_callc                 C   s  | j dkrtjd}|s:td|  d tddddS tjj|d	d
gd}|s~td|  d|  td| ddddS |j	| krtd|  d|  d|j	  td|  d|j	 dddS |
 }nB| j dkr|  }d|i}n&td|  d| j   tddddS |S )ug   Без полиморфного наследования мало смысла в этом методе)ZgithubZgitlabpluginzCmfWebhook.call(z): plugin code absentzplugin arg absentr   r   r   typer   r    z): plugin notfound by code zplugin code=r"   r#   z): webhook z mismatch plugin.webhook r!   ZbzPythonresultz): unsupported hook_type z&Unsupported hook_type. Show error log.i  )r   r   r   r   r   r   r   r   ZCmfPluginGitr   Zwebhook_callZeval_bzpython)selfZplugin_coder&   r(   r   r   r   r$   /   s2    

  


zCmfWebhook.call)N)__name__
__module____qualname__classmethodr   r   r%   r$   r   r   r   r   r      s   

r   N)Zflaskr   Zcmf.includeZmodules.automation.fieldsr   r   r   r   r   r   <module>   s   