
    6i                     \    d dl Z d dlZd dlmZ d dlT d dlmZ  G d dej                  ZdS )    N)Response)*)cmf_webhookc                   X    e Zd Zed             Zedd            Zed             Zd ZdS )
CmfWebhookc                    t                               dd          5  t          j                            d          }|s/t                              ddd                                          }d d d            n# 1 swxY w Y   |S )	Nz&CmfLock:CmfWebhook:create_person_group   )timeoutwebhook)codeTu   Webhook группа)r   systemname)cmfutilCmfLockmodelsCmfPersonGroupgetsave)clsgroups     *./modules/automation/models/cmf_webhook.pywebhook_person_groupzCmfWebhook.webhook_person_group   s    __FPR_SS 	o 	o)--9-==E o--9TPf-ggllnn	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o s   AA;;A?A?Nc                 F   t           j                            d          }|sdS t          j                            |          }|rU|                    d           |                    d           |                    d           |                    d           ng d}t          j                            |dd	|
          }|r|j        rM|j        t          j	        
                                k     r&t                              d|j         d           dS t          j                            dd|j        j        gg dg|          }|r-t                              d|dd          d| d|            |S t                              dt           j         d           dS )u   
        Получение пользователя по webhook токену из CmfAccessToken.
        Токен передается через ?token=... параметр.
        tokenNparentexpiration_datelast_used_attype)r   r   r   r   Fr   )hash
is_revokedr   fieldsz'Expired Webhook token: expiration_date=WARNING)levelid==)
user_localr%   T)filterr!   zAuth Webhook Token(   z...): hash=z	, person=z$Invalid Webhook token: request.args=)requestargsr   r   	CmfPerson
hash_tokenappendCmfAccessTokenr   datetimenowgdebugr   r$   )r   r!   webhook_tokenwebhook_token_hashaccess_tokenauth_persons         r   get_token_personzCmfWebhook.get_token_person   s     ((11 	4#-88GG 	KMM(###MM+,,,MM.)))MM&!!!!JJJF ,00#	 1 
 
  	#+ 0LxO`OdOdOfOf0f0f`,B^``hqrrrt !*..t\%8%;<>X>X>XY /  K  #vmBQB.?vvL^vvitvvwww"" 	
Ew|EEYWWWt    c                    t                               dt           j         dt          j                    t          j                            d          }|s,t                               d           t          ddd          S g d	}|                     ||
          }|s|                     ||          }|s3t                               d|            t          d| ddd          S |j        t           j        k    rAt                               d|j         dt           j                    t          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content_type)	hook_type
token_user	eval_code	eval_file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  )	r1   r2   current_personr)   r*   r   r   r?   call)r   webhook_namer!   r   responses        r   cls_callzCmfWebhook.cls_callE   st   	Wq/?WWWWXXX|''// 	SGG?@@@13\RRRRXXX''|F';; 	@gg<g??G 	aGGTlTTUUU?|???S_````!111GGg'.'9g gTUTdg gh h h =sQ]^^^^<<>>r8   c                    | j         dv rt          j                            d          }|s0t                              d|  d           t          ddd          S t          j                            |d	d
g          }|s6t                              d|  d|            t          d| ddd          S |j	        | k    rEt                              d|  d|  d|j	                    t          d|  d|j	         dd          S |
                                }n| j         dk    r|                                 }d|i}n| j         dk    rjt          j                            d          t          j                            d          }}|dvr6t                              d|  d|            t          d| ddd          S t          j                            t          j                            |                    }|s7t                              d|  d| d           t          d| ddd          S 	 t%          t          j        j        |j        g            dd| d!i}n# t*          $ r?}t                              d|  d"|            t          d#| d$d          cY d%}~S d%}~ww xY wt                              d|  d&| j                     t          d'd$d          S |S )(ug   Без полиморфного наследования мало смысла в этом методе)githubgitlabpluginzCmfWebhook.call(z): plugin code absentzplugin arg absentr:   r;   r<   r   r   rC   z): plugin notfound by code zplugin code=rE   rF   z): webhook z mismatch plugin.webhook rD   bzPythonresultevagit_synceventrepo)pushz): unsupported event zUnsupported event: .i  )urlz): repo zRepo )r*   z synced successfullyz): zRepo sync error: i  Nz): unsupported hook_type z&Unsupported hook_type. Show error log.)r>   r)   r*   r   r1   r2   r   r   CmfPluginGitr   webhook_calleval_bzpythonloggingwarningCmfEvagitRepourllibparseunquoteschedule_deferred_job	sync_repor$   	Exception	exception)selfplugin_coderO   rQ   rS   repo_urlrT   es           r   rH   zCmfWebhook.call\   s   >111!,**844K UF4FFFGGG 3S|TTTT(,,+vyFY,ZZF hY4YYKYYZZZ F{ F F FZfgggg~%%Pt P P $P P?E~P PQ Q Q  NtNNfnNNPSbnp p p p((**FF^z))''))F'FF^},,%l..w779I9I&9Q9Q8EJ&& U4 U Ue U UVVV >e > > >R^____'++0D0DX0N0N+OOD ^ U4 U U U U UVVV < < < <cP\]]]]Y%f&:&DDG;WWWW"$JH$J$J$JK Y Y Y!!"AT"A"Aa"A"ABBB 7A 7 7<XXXXXXXXXY GGVtVVdnVVWWWEsYeffffs   =.I, ,
J564J0*J50J5)N)__name__
__module____qualname__classmethodr   r7   rK   rH    r8   r   r   r   
   sx          [ / / / [/b   [,* * * * *r8   r   )r/   r^   flaskr   cmf.includemodules.automation.fieldsr   r   rm   r8   r   <module>rq      s                1 1 1 1 1 1| | | | |' | | | | |r8   