
    h                     D    d dl Z d dlZd dlmZ d dlT  G d d          ZdS )    N)quote)*c                       e Zd Zd Zedefd            Zd Zd Zd Z	d Z
	 	 dd	ed
edej        dej        def
dZed             ZddZddZed             Zd Z	 ddZddZdS )Driverc                     i | _         d S N)_reposselfs    ./modules/git/evagit.py__init__zDriver.__init__	   s        sc                 D    | ot           j                             |           S r   )datetimefromtimestamp)r   s    r   _parse_datetimezDriver._parse_datetime   s    7X&44Q777r   c                     d S r    r
   s    r   process_webhook_requestzDriver.process_webhook_request       r   c                     || j         vr*t          j                            |dg          | j         |<   | j         |         S )Nurl)idfields)r	   modelsCmfEvagitRepoget)r   ext_ids     r   get_repozDriver.get_repo   s@    $$"("6":":feW":"U"UDK{6""r   c                     g }t           j                            dg          D ]:}|| j        |j        <   |                    |j        |j        |j        d d           ;|S )Nr   )r   )namer   r   default_branch)r   r   listr	   r   appendr"   r   )r   resultrepos      r   available_reposzDriver.available_repos   sx    (--eW-== 	) 	)D#'DK MM	'x"&	( ( ) ) ) )
 r   c                     |                      |          }d t          j                            |dg          D             S )Nc                 8    g | ]}|j         |j        j        d dS ) )r"   shar   )r"   commitr,   ).0branchs     r   
<listcomp>z'Driver.get_branches.<locals>.<listcomp>%   sG     ` ` `
  }( ` ` `r   z
commit.sha)	parent_idr   )r    r   CmfEvagitBranchr$   )r   r   r'   s      r   get_brancheszDriver.get_branches#   sU    }}V$$` `
 !055P\~5^^` ` ` 	`r   Nr,   pathsinceuntilauthorc              #   :  K   t           j                            |          }|                    |          D ]a}|d         |d         d|d         |                     |d                   |d         |d         |d	         |d
         |d         |d         dV  bd S )N)r   )rev
commit_shar+   commit_messageauthored_datecommit_authorcommit_author_emailparents	additions	deletionstotal)r"   r,   r   textdateauthor_nameauthor_emailr?   r@   rA   rB   )r   r   r   fetch_commitsr   )	r   r   r,   r4   r5   r6   r7   r'   r-   s	            r   iter_commitszDriver.iter_commits,   s       #''6'22((S(11 	* 	*F|,l+/0,,VO-DEE%o6 &'< =!),#K0#K0* * * * * *	* 	*r   c                 |   i d|j         dt          |j                  ddd|j        j         d|j        j        j        d|j        j        j        d|j        j         d	|j        j        j        d
|j        j         ddd|j        j        d|j	        d|j
        j        j        dt          |                                          dk    d|j
        j        j        dk    ddd|                     |j                  |j        o|j        j         |j        o|j        j         |j        o|j        j        ddS )Nr"   r   numberr+   head_branch_name	head_repohead_shabase_branch_name	base_reporE   author_loginauthor_ext_idrC   status	mergeabler   merged	merge_sha	merged_at)merged_by_namemerged_by_loginmerged_by_ext_idr   )r"   strr   branch_fromparentr-   r,   	branch_to
cmf_authorrC   rR   status_codecodelenfetch_conflictsr   rV   	merged_by)clsmrs     r   _mr2dictzDriver._mr2dict?   s   
BG
c"%jj
 b
  3	

 .1
 -1
  1
 ,/
 2=-
 B
 R]-
 BG
 bi+0
 R//1122a7
 bi+0H<
  !
" ,,R\::#
$ !l@r|/@!|A0A " @+
 
 
 	
r   c                     g d}ddd|gdd|gg}t           j                            ||          }|                     |          S )Nz	parent.idzbranch_from.namezbranch_from.commit.shazbranch_to.namer^   rc   rV   	closed_byrC   rR   zstatus.status_code.codebranch_to.parentbranch_from.parentORrj   ==rk   filterr   )r   CmfEvagitMergeRequestr   rf   )r   r   rJ   _fields_filterre   s         r   get_merge_requestzDriver.get_merge_requestY   s`      
 *D&9<PRVX^;_`)--WW-MM}}R   r   Tc                 |     g d}ddd|gdd|gg} fdt           j                            ||          D             S )Nrh   rl   rj   rm   rk   c                 :    g | ]}                     |          S r   )rf   )r.   re   r   s     r   r0   z-Driver.get_merge_requests.<locals>.<listcomp>l   s%    nnnbb!!nnnr   rn   )r   rp   r$   )r   r   	only_openrq   rr   s   `    r   get_merge_requestszDriver.get_merge_requestsd   sf      
 *D&9<PRVX^;_`nnnnF,H,M,MU\el,M,m,mnnnnr   c                     d S r   r   )webhook_names    r   _webhook_name_url_tagzDriver._webhook_name_url_tagn       r   c                     d S r   r   )r   r   ry   s      r   _get_webhook_by_namezDriver._get_webhook_by_namer   r   r   Fc                     d S r   r   )r   r   webhook_urlry   insecure_sslsecretwebhook_ext_id_kwargss           r   setup_webhookzDriver.setup_webhooku   r{   r   c                     d S r   r   )r   r   ry   r   r   s        r   cleanup_webhookzDriver.cleanup_webhooky   r   r   )NNNNNr   )T)FNN)NN)__name__
__module____qualname__r   staticmethodrZ   r   r   r    r(   r3   r   rH   classmethodrf   rs   rw   rz   r}   r   r   r   r   r   r   r      sx          83 8 8 8 \8  # # #
	 	 	` ` ` 8<\`* *"*14*$*4<4E*VY* * * *& 
 
 [
2	! 	! 	! 	!o o o o   \   fj        r   r   )r   urlliburllib.parser   cmf.includer   r   r   r   <module>r      sq               r r r r r r r r r rr   