
    )5j)                     `    d dl Z d dlZd dlmZ d dl d dlmZ  G d dej                        Zy)    N)Response)*)cmf_webhookc                   D    e Zd Zed        Zedd       Zed        Zd Zy)
CmfWebhookc                     t         j                  dd      5  t        j                  j	                  d      }|s&t        j                  ddd      j                         }d d d        |S # 1 sw Y   S xY w)	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   sr    __EPR_S 	o))--9-=E--9TPf-glln	o 		o s   A	A++A5Nc                    t         j                  j                  d      }|syt        j                  j                  |      }t        j                  j                  |      }|rE|j                  d       |j                  d       |j                  d       |j                  d       ng d}t        j                  j                  dd	d
|gd	d
|ggg dg dg|      }|r|j                  rP|j                  t        j                  j                         k  r%t        j                  d|j                   d       yt        j                  j                  dd|j                  j                  gg dg|      }|r t        j                  d|dd  d|        |S t        j                  dt         j                   d       y)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#--88G$*$4$4$F$F}$U!MM(#MM+,MM.)MM&!JF ,,00S"45S";<
 +(  1 
 ++0L0LxO`O`OdOdOf0fA,B^B^A_`hqr !**..t\%8%8%;%;<>XY / K 34Fr4J3K<XcWdef"" 	
6w||nEYW    c                    t         j                  dt         j                   dt        j                          t        j                  j                  d      }|s#t         j                  d       t        ddd      S g d	}| j                  ||
      }|s| j                  ||      }|s*t         j                  d|        t        d| ddd      S |j                  t         j                  k7  rAt         j                  d|j                   dt         j                          t        ddd      S |j                         }|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   s!   	.q/?/?.@WX||''/GG>@13\RRX''|F';gg<g?GGGEl^TUh|nJ?S_``!1!11GG''.'9'9&::STUTdTdSegh <sQ]^^<<>r<   c                    | j                   dv rt        j                  j                  d      }|s't        j                  d|  d       t        ddd      S t        j                  j                  |d	d
g      }|s-t        j                  d|  d|        t        d| ddd      S |j                  | k7  rFt        j                  d|  d|  d|j                          t        d|  d|j                   dd      S |j                         }|S | j                   dk(  r| j                         }d|i}|S | j                   dk(  rt        j                  j                  d      t        j                  j                  d      }}|dvr-t        j                  d|  d|        t        d| ddd      S t        j                  j                  t        j                   j#                  |            }|s.t        j                  d|  d| d       t        d| ddd      S 	 t%        t        j                  j&                  |j(                  g        dd| d!i}|S t        j                  d|  d&| j                           t        d'd$d      S # t*        $ r6}t        j-                  d|  d"|        t        d#| d$d      cY d%}~S d%}~ww xY w)(ug   Без полиморфного наследования мало смысла в этом методе)githubgitlabgitflic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_coderT   rV   rX   repo_urlrY   es           r   rL   zCmfWebhook.callf   s   >><<!,,**84K*4&0EFG 3S|TT((,,+vyFY,ZF*4&0KK=YZ,{m: FZfgg~~%&tf -  $v%>v~~>NPQ  tf$=fnn=MNPSbnp p((*F2 1 ^^z)'')F'F, + ^^},%ll..w79I9I&9Q8EJ&"24&8MeW UV"5eWA >R^__''++0D0DX0N+OD"24&
* UV%z <cP\]]Y%f&:&:&D&DDGG;W"eH:5I$JK  GG&tf,EdnnEUVWDsYeff  Y!!$4TF#aS"AB"3A3 7<XXYs   #8J 	K+K
K
K)N)__name__
__module____qualname__classmethodr   r;   rO   rL    r<   r   r   r   
   sB      9 9v  ,*r<   r   )r2   rc   flaskr   cmf.includemodules.automation.fieldsr   r   rr   r<   r   <module>rv      s(        1F'' Fr<   