U
    1zh                     @   s6   d dl Z d dlZd dlmZ d dlT G dd dZdS )    N)quote)*c                   @   s   e Zd Zdd ZeedddZdd Zdd	 Zd
d Z	dd Z
d"eeejejedddZedd Zd#ddZd$ddZedd Zdd Zd%ddZd&d d!ZdS )'Driverc                 C   s
   i | _ d S N)_reposself r	   ./modules/git/evagit.py__init__	   s    zDriver.__init__sc                 C   s   | ot j | S r   )datetimeZfromtimestampr   r	   r	   r
   _parse_datetime   s    zDriver._parse_datetimec                 C   s   d S r   r	   r   r	   r	   r
   process_webhook_request   s    zDriver.process_webhook_requestc                 C   s,   || j kr"tjj|dgd| j |< | j | S )Nurl)idfields)r   modelsCmfEvagitRepoget)r   ext_idr	   r	   r
   get_repo   s    
zDriver.get_repoc                 C   sD   g }t jjdgdD ]*}|| j|j< ||j|j|jd d q|S )Nr   )r   )namer   r   Zdefault_branch)r   r   listr   r   appendr   r   )r   resultrepor	   r	   r
   available_repos   s    
zDriver.available_reposc                 C   s&   |  |}dd tjj|dgdD S )Nc                 S   s   g | ]}|j |jjd dqS ) )r   shar   )r   commitr    ).0branchr	   r	   r
   
<listcomp>%   s
   z'Driver.get_branches.<locals>.<listcomp>z
commit.sha)Z	parent_idr   )r   r   ZCmfEvagitBranchr   )r   r   r   r	   r	   r
   get_branches#   s    
zDriver.get_branchesN)r    pathsinceuntilauthorc           	      c   sp   t jj|d}|j|dD ]P}|d |d d|d | |d |d |d |d	 |d
 |d |d dV  qd S )N)r   )ZrevZ
commit_shar   Zcommit_messageZauthored_dateZcommit_authorZcommit_author_emailparents	additions	deletionstotal)r   r    r   textdateauthor_nameZauthor_emailr*   r+   r,   r-   )r   r   r   Zfetch_commitsr   )	r   r   r    r&   r'   r(   r)   r   r!   r	   r	   r
   iter_commits,   s    zDriver.iter_commitsc                 C   s   |j t|jd|jj |jjj|jjj|jj |jjj|jj d|jj|j	|j
jjt| dk|j
jjdkd| |j|jo~|jj |jo|jj |jo|jjddS )Nr   r   merged)r   r   numberZhead_branch_nameZ	head_repoZhead_shaZbase_branch_nameZ	base_repor0   Zauthor_loginZauthor_ext_idr.   statusZ	mergeabler2   Z	merge_sha	merged_atZmerged_by_nameZmerged_by_loginZmerged_by_ext_idr   )r   strr   Zbranch_fromparentr!   r    Z	branch_to
cmf_authorr.   r4   Zstatus_codecodelenZfetch_conflictsr   r5   	merged_by)clsmrr	   r	   r
   _mr2dict?   s,    
zDriver._mr2dictc                 C   sN   ddddddddd	d
dddg}ddd|gdd|gg}t jj||d}| |S )N	parent.idbranch_from.namebranch_from.commit.shabranch_to.namer8   r;   r5   	closed_byr.   r4   status.status_code.codebranch_to.parentbranch_from.parentOR==filterr   )r   CmfEvagitMergeRequestr   r>   )r   r   r3   _fields_filterr=   r	   r	   r
   get_merge_requestY   s"              zDriver.get_merge_requestTc                    sR   ddddddddd	d
dddg}ddd|gdd|gg} fddt jj||dD S )Nr?   r@   rA   rB   r8   r;   r5   rC   r.   r4   rD   rE   rF   rG   rH   c                    s   g | ]}  |qS r	   )r>   )r"   r=   r   r	   r
   r$   l   s     z-Driver.get_merge_requests.<locals>.<listcomp>rI   )r   rK   r   )r   r   Z	only_openrL   rM   r	   r   r
   get_merge_requestsd   s               zDriver.get_merge_requestsc                 C   s   d S r   r	   )webhook_namer	   r	   r
   _webhook_name_url_tagn   s    zDriver._webhook_name_url_tagc                 C   s   d S r   r	   )r   r   rP   r	   r	   r
   _get_webhook_by_namer   s    zDriver._get_webhook_by_nameFc                 K   s   d S r   r	   )r   r   Zwebhook_urlrP   Zinsecure_sslZsecretwebhook_ext_id_kwargsr	   r	   r
   setup_webhooku   s    zDriver.setup_webhookc                 K   s   d S r   r	   )r   r   rP   rS   rT   r	   r	   r
   cleanup_webhooky   s    zDriver.cleanup_webhook)NNNNN)N)T)FNN)NN)__name__
__module____qualname__r   staticmethodr6   r   r   r   r   r%   r   r1   classmethodr>   rN   rO   rQ   rR   rU   rV   r	   r	   r	   r
   r      s>   
           




     
r   )r   Zurlliburllib.parser   Zcmf.includer   r	   r	   r	   r
   <module>   s   