
    =j                     \    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                    t           j                            d          }|sdS t          j                            |          }t          j                            |          }|rU|                    d           |                    d           |                    d           |                    d           ng d}t          j                            dd	d
|gd	d
|ggg dg dg|          }|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|            |S t                              dt           j         d           dS )u   
        Получение пользователя по webhook токену из CmfAccessToken.
        Токен передается через ?token=... параметр.
        tokenNparentexpiration_datelast_used_attype)r   r   r   r   ORhash=)
is_revokedr!   F)r   r!   r   )filterfieldsz'Expired Webhook token: expiration_date=WARNING)levelid==)
user_localr(   TzAuth Webhook Token: hash=   z..., person=z$Invalid Webhook token: request.args=)requestargsr   r   	CmfPerson
hash_tokenhash_token_legacyappendCmfAccessTokenr   datetimenowgdebugr   r'   )r   r$   webhook_tokenwebhook_token_hashwebhook_token_hash_legacyaccess_tokenauth_persons          r   get_token_personzCmfWebhook.get_token_person   s     ((11 	4#-88GG$*$4$F$F}$U$U! 	KMM(###MM+,,,MM.)))MM&!!!!JJJF ,00S"45S";<
 +**(((  1 
 
  	#+ 0LxO`OdOdOfOf0f0f`,B^``hqrrrt !*..t\%8%;<>X>X>XY /  K  #e4Frr4JeeXceefff"" 	
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  )	r4   r5   current_personr+   r,   r   r   rC   call)r   webhook_namer$   r   responses        r   cls_callzCmfWebhook.cls_callO   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]^^^^<<>>r<   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   rG   z): plugin notfound by code zplugin code=rI   rJ   z): webhook z mismatch plugin.webhook rH   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.)rB   r+   r,   r   r4   r5   r   r   CmfPluginGitr   webhook_calleval_bzpythonloggingwarningCmfEvagitRepourllibparseunquoteschedule_deferred_job	sync_repor'   	Exception	exception)selfplugin_coderS   rU   rW   repo_urlrX   es           r   rL   zCmfWebhook.callf   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   r;   rO   rL    r<   r   r   r   
   sx          [ 9 9 9 [9v   [,* * * * *r<   r   )r2   rb   flaskr   cmf.includemodules.automation.fieldsr   r   rq   r<   r   <module>ru      s                1 1 1 1 1 1F F F F F' F F F F Fr<   