
    Y~h!                     d    d dl Z 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)Repo)*)cmf_evagit_discussionc                   V    e Zd Zej        j        dgz   Zed             Zd Zd Z	d Z
dS )CmfEvagitDiscussionplace_discussionc           	         t           j                            |          }t           j                            |g d          }|j        |j        |j        ||d t          |          d}t                                           }	||	_	        t          j        |                                                                           d| |	_        ||	_        ||	_        |	                                 |	S )N)id)base_sha
source_sha
target_sha)r
   fields)r   	start_shahead_shaold_pathnew_pathold_linenew_line_0_)modelsCmfEvagitMergeRequestgetCmfEvagitMergeRequestDiffr   r   r   intr   parenthashlibsha1encode	hexdigest	line_codeoriginal_positionpositionsave)
clsmr_iddiff_idfilename	line_textline_nummrdiffposition_data
discussions
             0./modules/evagit/models/cmf_evagit_discussion.pyr   z$CmfEvagitDiscussion.place_discussion   s    )---77/33wGoGoGo3pp   H
 
 //11

"),y/?/?/A/A"B"B"L"L"N"N]]S[]]
'4
$+
    c                    |                      g d           | j        j        j        j        }t	          |j                  }t          j                    5 }|                    |          }|	                                5 }|
                    ddd           |
                    ddd           d d d            n# 1 swxY w Y   |j                            | j        j        j                   t          | d| j        d	          d
          5 }|                                }d d d            n# 1 swxY w Y   | j        d         s	 d d d            d S |                                 }| j        d         t%          |          k    r(|| j        d         dz
           |k    r	 d d d            d S | j        d         |                     ||          c| j        d<   | j        d<   | j        d         rot)          j        || j        d         dz
                                                                                      d| j        d          d| j        d          | _        |                                  d d d            d S # 1 swxY w Y   d S )N)z parent.branch_from.commit.parentzparent.branch_from.namer"   r!   r    )r   usernameu   Системаemailzsystem@example.com/r   rr      r   _)load_fieldsr   branch_fromcommitr   pathtempfileTemporaryDirectorycloneconfig_writer	set_valuegitcheckoutr2   openr"   	readlinesget_original_linelenfind_new_liner   r   r   r   r    r#   )	selfbd_repofs_repotmp_dircloned_repor?   filelinesoriginal_lines	            r.   recalc_positionz#CmfEvagitDiscussion.recalc_position%   s    ! ! ! 	 	 	
 +)07w|$$(** 	g!--00K**,, O''8HIII''9MNNNO O O O O O O O O O O O O O O O$$T[%<%ABBB>>4=#<>>DD )(() ) ) ) ) ) ) ) ) ) ) ) ) ) ) =, 	 	 	 	 	 	 	 	 !2244M}Z(CJJ665zAZ]^A^;_cp;p;p%	 	 	 	 	 	 	 	( DH=Q[C\^b^p^pq~  AF  _G  _G@DM*%t}Z'@}Z( f$+Lt}Z7PST7T1U1\1\1^1^$_$_$i$i$k$k  "f  "fnrn{  }G  oH  "f  "f  KO  KX  Yc  Kd  "f  "fIIKKK/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	si   *J /B;/J;B?	?JB?	AJD0$J0D4	4J7D4	8JAJ0CJJJc                     | j         j        j        j         }|                    | j        d         | j        d                   }|d                                         }|| j        d                  S )Nr   r   contentr   )r   r9   r:   fetch_file_contentr!   
splitlines)rH   rI   datarN   s       r.   rE   z%CmfEvagitDiscussion.get_original_lineG   s`    +)07))$*@*LdNdeoNpqqY**,,T+J788r/   c                    d\  }}d\  }}t          t          |                    D ]W}||         |k    r|dz   } nCt          j        d ||         |                                          }||k    r||k    r|}|dz   }X|p|S )N)NN)g333333?r   r6   c                     | dk    S )N  )xs    r.   <lambda>z3CmfEvagitDiscussion.find_new_line.<locals>.<lambda>X   s
    18 r/   )rangerF   difflibSequenceMatcherratio)	rH   rO   rN   full_match_line_numpart_match_line_num	thresholdmax_similarityi
similaritys	            r.   rG   z!CmfEvagitDiscussion.find_new_lineO   s    3=00$*!	>s5zz"" 	, 	,AQx=((&'!e# 01C1CU1X}]]cceeJN**zY/F/F!+&'!e#"9&99r/   N)__name__
__module____qualname__r   r   api_methodsclassmethodr   rP   rE   rG   rY   r/   r.   r   r   
   so        ';GK]J^^K  [.     D9 9 9: : : : :r/   r   )	r   r<   r]   rA   r   cmf.includemodules.evagit.fieldsr   r   rY   r/   r.   <module>rm      s                 7 7 7 7 7 7S: S: S: S: S:/C S: S: S: S: S:r/   