
    V^h                       d dl mZ d dlT d dlmZmZ d dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlZd dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZm Z  d d
l!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, eee-j.                 ee-j/                 ee-j0                 f         Z1ej2         G d d                      Z3d Z4 G d de*          Z5dS )    )cmf_context)*)cmf_hashlibcmfutilN)Path)DictOptionalListCallableUnionTypeIterator)BeautifulSoup)permutations)dedentindent)	normalize)	BaseModel)CmfPluginImportMixin)JiraApi)JiraBaseImport)JQLNormalizerc                   >    e Zd ZU dZeed<   eed<   eed<   d Zd ZdS )EpicDatauD    Данные используемые при создании epic namekeyproject_keyc                 *    t          | j                  S N)hashr   selfs    ./modules/jira/api_import.py__hash__zEpicData.__hash__&   s    DH~~    c                 "    | j         |j         k    S r   )r   )r"   others     r#   __eq__zEpicData.__eq__)   s    x59$$r%   N)__name__
__module____qualname____doc__str__annotations__r$   r(    r%   r#   r   r      sX         NN
III	HHH  % % % % %r%   r   c                       fd}|S )Nc                       fd}|S )Nc                 F   	 | j                             d            | j                                         rdS  | g|R i |}t                       |S # t          $ r? t                       | xj        dz  c_        | j                             d            Y dS w xY w)Nz================== r      u   Ошибка )
cmf_importlog	is_cancel
cmf_commit	Exceptioncmf_rollback
has_errors	log_error)objargskwargsresfuncr   s       r#   wrapperz3catch_exception.<locals>.decorator.<locals>.wrapper/   s    ""#?#?#?@@@>++-- 1d3000000
   !#(()?)?)?@@@qq	s   6A A AB B r/   )r@   rA   r   s   ` r#   	decoratorz"catch_exception.<locals>.decorator.   s)    	 	 	 	 	 	 r%   r/   )r   rB   s   ` r#   catch_exceptionrC   -   s$        " r%   c            
       b	    e Zd ZU dZeed<   eeef         ed<   de	ddf fdZ
edeeef         fd            Zd	 Zd
 Zd Zedededeee                  fd            Zd Zdeeeef                  fdZed             Zed             Zd Zedd            Zdee         fdZdee         fdZdee         defdZ	 	 ddZ ed          d             Z  ed          d              Z! ed!          d"edefd#            Z"d$ Z# ed%          d"ed&e$fd'            Z%dd(Z& ed)          d*             Z' ed+          d,             Z( ed-          d.             Z)de*j+        fd/Z,d0 Z-dd1Z.dd2Z/d3 Z0d4 Z1d5 Z2 ed6          d7             Z3 ed8          d9             Z4 ed:          d;             Z5 ed<          dd=e6fd>            Z7d?ed@efdAZ8dB Z9dC Z: edD          dE             Z; edF          dG             Z< edH          dI             Z=dJ Z>ddKZ?dLe@fdMZAdLe@fdNZB edO          dPefdQ            ZCdR ZDdS ZE edT          dPefdU            ZFdV ZG edW          dX             ZHdY ZIdZ ZJd[ ZK ed\          d]             ZL ed^          d_             ZMd` ZNda ZO edb          ddc            ZP edd          de             ZQ edf          dd=e6fdg            ZR edh          d@efdi            ZS edj          dk             ZT edl          dm             ZU edn          do             ZV edp          dq             ZW edr          ds             ZX edt          du             ZYdv ZZ edw          dxefdy            Z[dxefdzZ\d{ Z]d| Z^d} Z_d~ Z`d Zad Zbd Zcd Zdd Zed ZfddZgddZhd Zid Zjd Zkd ZldPefdZmdPefdZndPefdZodPefdZpdPefdZqd Zrd Zsd Zt ed          dede@dPefd            Zud Zvd ZwdedexfdZy	 ddedefdZzdd@edededefdZ{ddZ|d Z}eddedededefd            Z~d Zd Zd Zd Zd Zd Zd ZdefdZd Zd Z ed          d             Zd Z ed          d             Zd Z xZS )JiraAPIImportu;   Класс загрузки объектов через APIr:   _JiraAPIImport__jira_fieldsjirareturnNc                 F    t                      j        |i | || _        d| _        | j        j        rd| _        t
          j                            d          | _        d | _	        | 
                                | _        i | _        i | _        i | _        g | _        g | _        d| _        t$                              d          }| j        j        j        |_        |                    | j        j        j                   |                                  d | _        d| _        d S )Nr   	accountIdsoftdevcoder   zatlassian.rest_clientF)super__init__rG   user_keycloudmodelsCmfActivitygetdefault_activitycloud_id_get_jira_global_settingsjira_global_settingsepicsissue_relationssubtasksboardsselected_projectsr:   logging	getLoggerr4   loggerhandlerssetLevellevel_prepare_multiprocessingrF   update_fields)r"   rG   r=   r>   r`   	__class__s        r#   rO   zJiraAPIImport.__init__G   s   $)&)))!	9? 	('DM & 2 6 6I 6 F F$($B$B$D$D!
!!#""#:;;/09.4555%%'''!"r%   c                 "   | j         r| j         S | j                                                            d          }|                                rN| j        sGt          |          5 }t                              |          | _         d d d            n# 1 swxY w Y   nm| j	        
                                | _         t          |d          5 }t                              | j         |           d d d            n# 1 swxY w Y   d| _        | j         S )Nfields.jsonw+F)rF   r4   get_download_pathjoinpathexistsre   openjsonloadrG   
get_fieldsdump)r"   	file_pathfs      r#   jira_fieldszJiraAPIImport.jira_fields_   sh    	&%%O5577@@OO	 	'd&8 	'i 2A%)YYq\\"2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 "&!5!5!7!7Di&& 1!		$,a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1!&D!!s$   % BBB!C88C<?C<c                    dd l }|| _        | j                                                            d          }| j                                                            dt
                                                     }t          |d          5 }t          	                    | j        |           d d d            n# 1 swxY w Y    |j
        ||           d S )Nr   rh   zfields.json.ri   )shutilrF   r4   rj   rk   osgetpidrm   rn   rq   move)r"   fieldsrv   rr   file_path_tmprs   s         r#   update_jira_fieldsz JiraAPIImport.update_jira_fieldso   s    #O5577@@OO	99;;DDEaTVT]T]T_T_EaEabb-&& 	-!IId(!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-M9-----s   !B;;B?B?c                 ^    | j                                         D ]}|d         |k    r|c S d S )Nr   )rt   values)r"   r   fields      r#   _get_field_by_namez JiraAPIImport._get_field_by_namex   sG    %,,.. 	 	EV}$$ %	 	r%   c                 x    t          t          fd| j                                                  d           }|S )Nc                 ^    |                      di                                d          k    S )NschemacustomrT   )rs   
field_types    r#   <lambda>z2JiraAPIImport._get_field_by_type.<locals>.<lambda>   s(    !%%"--11(;;zI r%   )nextfilterrt   r~   )r"   r   r   s    ` r#   _get_field_by_typez JiraAPIImport._get_field_by_type}   sI    IIII ''))  
 
 r%   model
field_namec                 P    |sd S |                      |g          }|r|d         nd S )N)fields_namer   )import_shop_fields)r   r   r?   s      r#   _get_field_namezJiraAPIImport._get_field_name   s:     	4&&J<&@@&s1vv$&r%   c                     dd l }dd l}|| _         || _        t          j        | _        t          j        | _        | j                                        | _	        d S )Nr   )
	threadingqueueconfigIMPORT_THREADSthreading_max_forksIMPORT_DOWNLOAD_THREADSdownload_threading_max_forksr4   get_max_processesmax_processes)r"   r   r   s      r#   rd   z&JiraAPIImport._prepare_multiprocessing   sZ    "
#)#8 ,2,J)!_>>@@r%   c           
          g }ddddddddd	d
	}dddd}| j                                         D ]M\  }}d| |                    |d           }|                    |                    |d          ||d           N|S )uO    Сопоставление настроек для модели models.CmfTaskr   textprioritystatus
alarm_datedeadlinecmf_modified_atcmf_created_atstatus_closed_at)	summarydescriptionr   r   customfield_10015duedateupdatedcreatedresolutiondatez.namez.watchCountz.votes)r   watchesvoteszfields. N)model_field	json_path	ext_field)rt   itemsrT   append)r"   issue_settingsdefault_local_attrs_mappingadditional_json_pathcustom_field_keycustom_fieldr   s          r#   _get_issue_import_settingsz(JiraAPIImport._get_issue_import_settings   s    ! #!-!('0'
 '
#"  $ 
  

 /3.>.D.D.F.F 	 	*ld"2d4H4L4LM]_a4b4bddI!!:>>?OQUVV&)# #    
 r%   c                  "    dddddddddg} | S )Nr   displayNamer   r   emailemailAddressdoes_not_workactiver/   )user_settingss    r#   _get_user_import_settingsz'JiraAPIImport._get_user_import_settings   s4     #??#.AA+(CC

 r%   c                  "    dddddddddg} | S )Nr   r   r   
cmf_authorauthorr   renderedBodyr/   )comment_settingss    r#   _get_comment_import_settingsz*JiraAPIImport._get_comment_import_settings   s5     -9EE(x@@"@@	
  r%   c                     dddddddd}||v r||         S |                     d	          }t          |          d
k    rdS | j                            |d
         i                               dd          S )N   ИмяEmailu   Активныйu   Созданоu
   Автор
   Текстu   Ключ)r   r   r   r   r   bodyr   .r3   r   r   )splitlenrt   rT   )r"   jsonpathmappings      r#    _get_setting_title_from_jsonpathz.JiraAPIImport._get_setting_title_from_jsonpath   s    ##('" 
 
 w8$$>>#&&x==A2##HQK4488DDDr%   Tc                    |sd S |                     d          D ]4}t          | t                    s d S |                     |          } | s d S 5|r.t          | t                    rg d}|D ]}|| v r
| |         c S dS |rt          | t                    rg }| D ]}d|v r"|                    |d         d                    (d|v r"|                    |d         d                    Nd|v r|                    |d                    n|r"|                    t          |                     d                    |          S | S )Nr   )r   r   r   r   inwardIssuer   outwardIssue,)r   
isinstancedictrT   listr   r-   join)r<   r   to_strr   
str_fields	str_fieldresultrelated_objs           r#   _get_file_valzJiraAPIImport._get_file_val   s   
  	F#//#.. 	 	Jc4(( ''*%%C   	jd++ 	777J' * *	##y>))) $2 	$jd++ 	$F" 4 4 K//MM+m"<U"CDDDD#{22MM+n"=e"DEEEEk))MM+e"45555  4MM#k"2"233388F###
r%   c                 6   	 g 	dt           t          t          t                   f         dt          g t          t                   f         dt
          dt          f	 fd} j                            dg            j                                        	                    d          }d}d}|
                                rQ                                 D ]$}                     |d	                   D ]} |r n%                     d
          D ]} |s/d  j                            d          D             }|r|d         }|s:d  j                             j        j        d          D             }|r|d         }|st%          d          d _         || j        t*          j                   |st%          d           || j        t*          j                   ddddddg} || j        t*          j                   	                    dg d           	S )u-    Инициализация настроек objssettings_funcr   rH   c                 <   | D ]} |            }|D ]h}                     ||d                   |d<                       ||d                   |d<                       |d                   |d<   |j        |d<   i                    |j        |d           |c S d S )Nr   file_valr   titleicon)r   rz   )r   r   r   r   r   verbose_name)r   r   r   r<   obj_settingssettingr   r"   s         r#   _get_settingsz:JiraAPIImport.tmplt_import_settings.<locals>._get_settings  s      ,}+ 1 1G*.*<*<S'+BV*W*WGJ'-1-A-A%Q^I_-`-`GM*'+'L'LWU`Ma'b'bGG$&+jGFOOu'9\RRSSS


 r%   zplugin.plugin.*projectsNidusersc                     g | ]}|S r/   r/   .0r<   s     r#   
<listcomp>z7JiraAPIImport.tmplt_import_settings.<locals>.<listcomp>  s    BBBSSBBBr%   r3   limitr   c                     g | ]}|S r/   r/   r   s     r#   r   z7JiraAPIImport.tmplt_import_settings.<locals>.<listcomp>"  s    bbbSSbbbr%   )username	limit_enduS   Не найдено ни одной задачи, импорт невозможенTua   Не найдено ни одного пользователя, импорт невозможенz2022-05-22T15:22:22.593+0300r   u!   Электронная почта)r   r   r   )r   r   r   selectedObjects)r   value)r   r
   r   r   r   	TypeModelr4   load_fieldsrj   rk   rl   _get_projectsget_project_tasks_simple_getrG   
get_issues	get_usersr   r8   re   r   rR   CmfTaskr   	CmfPersonr   
CmfCommentr   )
r"   r   dump_dirtaskuserprojecttasksr   comment_exampler   s
   `        @r#   tmplt_import_settingsz#JiraAPIImport.tmplt_import_settings   s   :<
	dHTN&: ; 
	)1"d4j.)A
	JS
	X\
	 
	 
	 
	 
	 
	 
	 	##%6$7888?4466??
KK?? 	--//   2274=AA  D E((11   	 BBDI$8$8q$8$A$ABBBE  Qx 	 bbDI$7$7AS_`$7$a$abbbE  Qx 	sqrrr "dD;V^LLL 	A  A  A  AdD:F<LMMM'E6>4W'Y 'Y$02 2 3
 	ot'H&J[\\\ 	02>>???r%   c                 4   |                      | j        j        d                   }ddg g gdg}| j                            d          D ]}t          |t          j        j                 d                   D ]\  }}|d         s| 	                    ||d	                   }| 
                    |d         d
         |          }|d         d                             |d         d                    |d         d         d                             |           |S )Nimport_settingsu   Задачиzcalendar-today)r   r   titlesrows   r   rz   r   r   r   r   r  captionr  )_normalize_settingsr4   json_settingsrG   r   	enumeraterR   r  r   r   _normalize_jira_valuer   )r"   settingsr   issuenumr   r   s          r#   previewzJiraAPIImport.preview>  s)   ++DO,IJ[,\]]*4DPR]_\`aabY)))22 	3 	3E )(6>3N*OPX*Y Z Z 3 3W}- **5'+2FGG227=3I,3WY^__q	(#**7=+A)+LMMMq	&!!$++E22223 r%   r  c                     i }|D ]p}|d         s|                      ||d         d          }|                     |d         d         ||                    d                    }|||d         d         <   q|S )uC    Преобразование настроек для модели r   r   F)r   r   r   )r   r  rT   )r"   r<   r  normalized_objr   r   s         r#   _normalize_objzJiraAPIImport._normalize_objM  s     	I 	IG=) &&sGK,@&OOE..w}/El/SUZ\c\g\ghs\t\tuuECHN7=1,?@@r%   sprintkanbanc                 4   dd|j         gg}|                    d          r|                    g d           n|                    dd|g           t          j                            |          }| j        j        j        j         d|d          }t          j	        | j        t          j
        |d	         ||||                    d
          |                    d          |ddd|g          \  }}	|	r#|d	         |_        |                    d           |S )Ntree_parent_id==completeDatesys_typer   archiver#  r   ::r   r   	startDateendDate)r   parenttree_parent	list_typeplan_start_dateplan_end_dateext_idr.  
filter_objTsave_import)r   rT   r   rR   	CmfFolderr4   pluginsource_hashr   process_any_table_fieldsCmfListr   save)
r"   r)  r  parent_sys_typer+  _filterr*  r.  list_objnews
             r#   _process_listzJiraAPIImport._process_listY  sD   $dFI67::n%% 	@NN8889999NNJo>???&**'*::O*1=OOOO,EdoW]WeOUV\~QWVaT]Z`ZdZdepZqZqX^XbXbclXmXmQWGI GI W_`dflUm	o 	o 	o#  	,"6NHMMMdM+++r%   u8   Обработка наблюдателей задачиc                    d|d          d|d         d          d}g }|                      |          D ]}| j        j        r|                     |d         |          }n|                     |d         |          }|st	          d	|           ||j        k    s||j        k    s||j        k    r|                    |           ||_	        d
S )u;   Добавляем наблюдателей в задачуu$   Наблюдатели задачи r   : "rz   r   "rJ   r<   uI   _process_watchers: Не найден наблюдатель задачи N)
_get_issue_watchersrG   rQ   _get_personCmfErrorresponsibler   	cmf_ownerr   
spectators)r"   	issue_objr  r<   rG  watcherpersons          r#   _process_watcherszJiraAPIImport._process_watchersr  s    fU5\eeuXW`Gaeee
//66 
	& 
	&Gy C))'+*>C)HH))'%.c)BB vtkrttuuu...&I<P2P2PTZ^g^qTqTqf%%%%)	r%   u#   Обработка вложенийc           	      
	   ddl m} dd l}d|d          d|d         d          d}t          |d	          d
          }d}|                                r|                    |          5 }|                                D ]V}		 |	                    d          r	 | j        	                    dd           6|d         d         D ]}
|
d         |	k    r nt          j                            |	|g d          }|s#t                              | j        |d|	          }|j        r|
rO|
                    d          r-|                     |
d         | j                 |          |_        |
d         |_        |                    |	          5 }|                    d           |                    |           |                    d           |
r-|j        |
d         k    sJ d|j         d|
d          d            d d d            n# 1 swxY w Y   t-                       ny# t.          $ r7 | j                            d|	 dd|           t-                       |dz  }Y n9 t3                       | j                            d|	 d |           |dz  }Y nxY w| j        	                    dd           8# | j        	                    dd           w xY w	 d d d            n# 1 swxY w Y   |                     |          D ]}}	 |d!         }	t          j                            |	|"          }|s#t                              | j        |d|	          }|j        r|                    d           |                                 t9          j        |d#         |j                   t          j        j         j!        "                                }|#                    |j$                  }|%                                 t-                       n:#  t3                       | j                            d|	 d |           |dz  }Y nxY w| j        	                    dd           _# | j        	                    dd           w xY w|S )$Nr   )RDisku   Вложения задачи r   r?  rz   r   r@  
issue_pathz /attachments/all_attachments.zip/
attachment	processedfilename)import_originalurlurl_preview_imgurl_previewr   r)  rz   T)r4   r)  rS  r   r   rA  r   r1  sizeu   Текущий размер z != u    из метыu7   Обранужена проблема вложения uI   , размер файла не совпадает с метой из JIRAzERR-0034r3   :   Не удалось обработать вложение zERR-0035	file_namer   r)  rr   )&rdisk.rdiskrM  zipfiler   rl   ZipFilenamelistendswithr4   inc_statrR   CmfAttachmentrT   rS  rC  rP   r   r   rm   r8  upload_stream_filest_sizer7   AssertionErrorr;   r9   _get_issue_attachments
upload_dirrv   copyfull_path_fileCmfRFiledpdata_driverget_rd	get_rfile
_file_namemake_preview)r"   rH  
jira_issuerM  r]  r<   all_attach_zip_patherrorsmyzipattach_nameattach_inforP  attach_fattachment_infordiskrfiles                   r#   _process_attachmentsz"JiraAPIImport._process_attachments  s!   %%%%%%iz%/@iijQYFZ[dFeiii"j&>#`#`#`aa%%'' (	L!455 'L#(>>#3#3 &L &LK%L&//44 %$F 00{KKKKE ,6h+?+M & &K*:6+EE %  F &,%9%=%=;W` FB  FB  FB &> &C &C
) P)/)=)=ENNRCN *> *P *PJ &5 
q* S#.??8#<#< !|<@<L<L[YaMbcgcpMqwz<L<{<{J$9<G	<R
 9!&K!8!8 qH *D A A A * = =h G G G *D A A A#. !q+5+=VAT+T+T+T  Wqu  vH  Wq  Wq  NY  Z`  Na  Wq  Wq  Wq+T+T+Tq q q q q q q q q q q q q q q #) $ $ $11  3Clw  3C  3C  3C2<) 2 M M M"!$$112|oz2|2|2<) 2 M M M!00{KKKK00{KKKKM&L'L 'L 'L 'L 'L 'L 'L 'L 'L 'L 'L 'L 'L 'L 'LR  $:::FF 	D 	DOD-k:#155;y5YY
! F!'!5!5;DUY9D "6 "F "FJ - )OOO555))+++K <j>WXXX#)?#5#A#H#H#J#JE!OOJ,ABBE&&((())*tgr*t*t*4) * E E E!(({CCCC(({CCCCs   *K$H!K$5CH!
A1H;H!HH!HH! J7!>JJ7!4JJ7K$7KK$$K(+K(DPQ#5QQ##R uB   Обработка упоминаний пользователей	text_soupc                 >   ddl m}m} |j        dv rd}nd}|                    ddi          D ]}	 |j                            d	          r!|                     |j        d	                   }n|j                            d
          r!|                     |j        d
                   }n ||j        d                   } ||j                  }	|	                    d          rT| 	                    |	d         d         
                                          }
|                     |
| j                           }nt          d          t          |                    t          |j                  t          |j                  t          |j                  t          |j                            d          }|                    |j                   # t          $ r>}| xj        dz  c_        | j                            d| d| d|           Y d}~d}~ww xY wdS )u]   
        Упоминания пользователей
        confluence-userlink
        r   )urlparseparse_qsr  a  
                <a
                    class="external"
                    href="{person_href}"
                    rel="noopener"
                    target="_blank"
                    data-macros="mentions"
                    data-mention-type="person"
                    data-object-id="{person_id}"
                    data-title="{person_login}"
                    cmf_converted="true"
                >
                    @{person_name}
                </a>
            u	  
                <span class="macros-panel mentions-macros" contenteditable="false" data-id>
                    <span class="extension-container" data-layout="default" data-id>
                        <span class="extension-title" data-id>
                            @Упоминания <span class="excerpt-title" data-id>| {person_login}</span>
                        </span>
                        <span class="macros-actions" data-id>
                            <span class="macros-delete" data-id>
                                <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                                    <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                    <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                    <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                </svg>
                            </span>
                        </span>
                    </span>
                    <span class="ak-renderer-wrapper" data-id>
                        <a class="external" data-macros="mentions" data-mention-type="person" data-object-id="{person_id}" data-title="{person_login}" rel="noopener" data-id cmf_converted="true">
                            <span class="lds-ring" data-id>
                                <span data-id></span>
                                <span data-id></span>
                                <span data-id></span>
                                <span data-id></span>
                            </span>
                        </a>
                    </span>
                </span>
            class
user-hoverattrsdata-account-iddata-usernamehrefr   u[   Не найдены атрибуты для определения пользователя)	person_idperson_loginperson_hrefperson_namehtml.parserr3   uR   Ошибка конвертации упоминания пользователя : zERR-0036rA  N)urllib.parser~  r  
class_namefind_allr  rT   rC  query_get_user_info_from_dumplowerrP   r8   r   formatr-   r   loginr  r   replace_with
currentTagr:   r4   r;   )r"   r|  r<   r~  r  TMPLtagrJ  
parsed_urlr  	user_infonew_tages                r#   _process_mentionszJiraAPIImport._process_mentions  sn    	43333333>l++DD D: %%Wl,C%DD 	 	C9==!233 G!--ci8I.JKKFFY]]?33 	G!--ci.HIIFF!)#)F*;!<!<J$HZ%566Eyy(( G$($A$A%-PQBRBXBXBZBZ$[$[	!%!1!1)DM2J!K!K'  )F  G  G  G'KK"%fi..%(%6%6$'$4$4$'$4$4	     "    !34444   1$))silsspqss *        3	 	s   FG
H3HHc                 D   t           j        j        }|                    | j        j         d|           }|t          j        |          S |                     d          D ]-}|                    | j	                  |k    r|c S |                    dd          
                                |
                                k    r|c S |                    dd          
                                |
                                k    r|c S |                    dd          
                                |
                                k    r|c S |                    dd          
                                |
                                k    r|c S /t          d|           )	N:user:r   r   r   r   r   r   uQ   Не нашли информацию по пользователю в дампе )APPREDIS_DBredisrT   r4   r   pickleloadsr   rP   r  r8   )r"   user_idredis_dbr  s       r#   r  z&JiraAPIImport._get_user_info_from_dump&  s   <%LLDO$6!G!Gg!G!GHH	 <	***))'22 
	! 
	!I}}T]++w66    }}VR((..00GMMOOCC    }}Z,,2244GG    }}^R006688GMMOOKK    }}]B//55777==??JJ     Kulsuuvvvr%   u#   Конвертация ссылокr)  c                    |                     d           D ]}|j                            d          r#| j        j                            d|            @|                    d          rC|j        d                             d          r#| j        j                            d|            | j        j                            d|            |                    d          r|j        d         }n|j        d         }t          j	        
                    |                              d	          d
                             d          d         }t          j        dt          j	        
                    |                              d          d                   }|rA|d         |d         d         }t          t          fd|          d           }	|	r|	d         }t           j                            |dg|          }
|
r|                    d          r|j        d         |j        d<   |
j        |j        d<   d|j        d<   t)          j        |j        d                   }|rH|d         r@|d                             d          r%d|_        d|j        d<   d|j        d<   d|j        d<   |                    d          r.|j        d         |j        d<   |
j        |j        d<   d|j        d<   | j        j                            d|
j                    d|j                            dd          v r|j        d                             d	          d
                             d          d         }|                     |          }|rU|j        d         |j        d<   |j        |j        d<   d|j        d<   | j        j                            d|j                    d S ) Nc                 V    |                      d          p|                      d          S Nr  srchas_attrr  s    r#   r   z.JiraAPIImport._process_links.<locals>.<lambda>;  s$    #,,v2F2F2]#,,W\J]J] r%   cmf_convertedu   Уже обработали r  #u   Это якорь u&   Обрабатываем ссылку r  rO  ?r   (/attachment(?:/content)?/(\d+)(?:/)?(.*)r3   rz   rP  c                 6    |                      d          k    S Nr   r   item	attach_ids    r#   r   z.JiraAPIImport._process_links.<locals>.<lambda>N  s    $((4..I2M r%   rR  rT  )r   rz   r)  src_origTvideocontrolsz100%widthheight	href_origu   Заменили на z/people/r   )r  r  rT   r4   r`   infor  
startswithurllibparseunquoter   researchr   r   rR   rb  sgetrT  	mimetypes
guess_typer   rC  r  )r"   r|  r)  rq  r  rT  rZ  	url_matchattachmentsattach
attach_obj	mime_type
account_idrJ  r  s                 @r#   _process_linkszJiraAPIImport._process_links9  s   %%&]&]^^ 1	X 1	XCy}}_-- &++,P3,P,PQQQ||F## 	&(9(D(DS(I(I &++,F,F,FGGGO"''(VQT(V(VWWW||F## 'i'i&,,S1177<<R@FFsKKANI	"Mv|OcOcdgOhOhOnOnorOsOstuOvwwI 3%aL	(2<@f%M%M%M%M{[[]abb 3 &z 2I-22	5'Z`2aaJ <<&& 	5,/Ie,<CIj)'1~CIe$15CIo. ) 4SYu5E F FI  5Yq\ 5il6M6Mg6V6V 5#*0:	*--3	'*.4	(+<<'' 6-0Yv->CIk*(2CIf%15CIo.&++,UZ^,U,UVVVSY]]626666 Yv.44S99"=CCCHHK
))*55 X-0Yv->CIk*(.CIf%15CIo.O*//0V0V0VWWWc1	X 1	Xr%   c           
         |rd| dnd}|s|r"| j         j                            d|            | j        j        r4|d         dk    r(| j         j                            d|d                     |                     || j        t          j	        j
                 d                   }| j        j        s|d	         t          j        d
|d                   }d |D             }t          |          dk    rifd|D             }fd|D             }	|r|d         |d<   n|	r|	d         |d<   n|d         |d<   |                    |d                    |d         |d<   d| j         j        j        j         d|| j                  d}
|d	                             dd          }d}|D ]$}t          |          |k    rt          |          }%t%          t          j	        j        j        t          j	        j        j        t          j	        j        j                  }||k    rt          |          dk    r|d         |d<   d|d<   d|d<   nt          |          dk    r|d         |d<   |d         |d<   d|d<   not          |          dk    r!|d         |d<   |d         |d<   |d         |d<   n:| xj        dz  c_        | j                             d|d	          d| ddd           dd g}t          j	                            d!d"d#|
 d#g|$          }|r|j        j                            d| j         j        j        j         d          dk    r|r| j         j                            d%| d&|j                    t          j        d| j         j        j        j         d'd|j        j                  |_        |                    d()           d }n9| xj        dz  c_        | j                             d*| d+|j         d,d-d./           |sd0d!d1d2| j         j        j        j         d3gg d4g}t          j	                            d5d6|d         g|g|$          }|s|t          j	                            dd6|d         g|g|$          }t          |          dk    rK| j                             d7|d          d8t          |           d| d9d           | xj        dz  c_        g }|sE| j         j                            d:|d          d|            d	d6|d	         g|g}t          j	                            ||$          }|sd0g}tA          |t          |                    D ]}t          |          dk    rdd6|d         g}!t          |          dk    r*|!                    dd6|d         gdd6|d         gg           ^t          |          dk    r3|!                    dd6|d         gdd6|d         gdd6|d         gg           ||g}t          j	                            ||$          }t          |          dk    rR| xj        dz  c_        | j                             d;|d	          d<|d          d=t          |           d| d9d           |r	|d         }n:| j         "                    d>|d	          d<|d          d?| tF          j$                   d@}|s|rd(}d}|d         }t          j	                            d5d6|%                                g|$          r| j         "                    dA| dBtF          j&                   |d                             dC          \  }}| dD| dC| }|dz  }t          j	                            d5d6|%                                g|$          t          	                    |
|| j         d(E          }nd |fS |rqt          j        d
tO          |j(                            }dF |D             }t          |          dk    r|d         |d5<   |j)        r|D ]}tU          ||||                    |j        r|
|j        vr|j         |
 |_        n|
|_        t          j+        ,                                }t          j+        -                                }|j.        !                    |           |j.        !                    |           d(|_/        |dG         dH         D ]1}| j        j        rd|dI          d}
nd|d	          d}
d| j         j        j        j         |
 }
t          j+                            d!d"d#|
 d#gdg$          }|s+t          j+                            d	dJ|d	         gdg$          }|s*t          +                    |
| j         d(|d	         |K          }|j)        r|d	         |_0        |j        s|
|_        n|
|j        vr|j         |
 |_        |                    d()           |j.        !                    |           3|j1        r|                    d()           ||fS )LN()r   u0   Импортируем пользователя accountType	atlassianu   Неизвестный тип rz   r   z[,;\s]+r   c                 ^    g | ]*}|                                 |                                 +S r/   stripr   r   s     r#   r   z1JiraAPIImport._process_person.<locals>.<listcomp>  -    III5;;==IekkmmIIIr%   r3   c                 N    g | ]!}|                     d           d         v |"S @r   r   r   r   
user_logins     r#   r   z1JiraAPIImport._process_person.<locals>.<listcomp>  s6    "b"b"bU
ekkZ]N^N^_`Na@a@a5@a@a@ar%   c                 N    g | ]!}|                     d           d         v |"S r  r  r  s     r#   r   z1JiraAPIImport._process_person.<locals>.<listcomp>  s6    !a!a!aEu{{3?O?OPQ?RV`?`?`%?`?`?`r%   r   email_2r&      	last_name
first_namesecond_name   u?   Часть полного имени пользователя "u   " длиннее u_    символов. Фамилия, Имя и Отчество не были заполнены.zERR-0110r  obj_typer   rg_member_ofr.  LIKE%r   rz   u    ext_id пользователя N    содержит несколько ID из одного источника: z::.+?::Tr1  uP   Возможно найден некорректный пользователь ud   ,так как ext_id содержит несколько ID из одного источника: 'uq   '.Необходимо повторно импортировать локальных пользователей.zERR-0004r  
error_coder  ORzNOT LIKE%::::%r.  r   Nr  ILIKEu+   Пользователей с почтой z > zERR-0037uH   Не удалось найти пользователя с почтой u+   Пользователей с именем  (z) > uM   Не нашли пользователя среди существующих ) FuQ   Обнаружена учетная запись с дублирующим email u   , добавляем цифруr  +)r.  r  r4   rS  c                 ^    g | ]*}|                                 |                                 +S r/   r  r  s     r#   r   z1JiraAPIImport._process_person.<locals>.<listcomp>4  r  r%   groupsr   groupIdr   )r.  r4   rS  r   import_raw_json)2r4   r`   r  rG   rQ   warningr  r  rR   r  r   r  r   r   remover4  r5  rP   minr  
max_lengthr  r  r:   r;   rT   r.  r   countsubr8  r   r   r   r5   r^   INFOr  WARNINGr-   r  rS  setattrCmfPersonGroup
jira_group
user_groupr  
user_localr   
is_changed) r"   r  createupdater<   obj_msg	user_dictemailsemails_by_loginemails_by_namer.  	full_namecurrent_length_namer   max_length_namerz   rJ  not_source_hash_filterpersonsr:  
name_combo
is_creatednr  prefix_emaildomainr   r  r  
group_infogroupr  s                                   @r#   _process_personzJiraAPIImport._process_personn  s@    #+*c**** 	cV 	cO"''(a[_(a(abbb9? 	ctM2kAAO"**+aDQ^L_+a+abbb''dmF<L<Y.Z[c.dee	y 	1 fJXj)G*<==FIIIIIF6{{Q"b"b"b"bf"b"b"b!a!a!a!aV!a!a!a" 3)8);Ig&&# 3)7):Ig&&)/Ig&i0111'-ay	)$ [do,3?ZZ4CVZZZf%++C33	   	0 	0D4yy...&)$ii#'2&1(3
 

 /119~~"")21	+&*,	,'+-	-((Y1$$)21	+&*3A,	,'+-	-((Y1$$)21	+&*3A,	,'+4Q<	-(
 OOq OOO%%`R[\bRc ` `  wF ` ` `$	 &    ^$!%%fm&mmm4 & 
 
  	fm)//0bT_5K5R5^0b0b0bccfggg  &..cv c cSYS`c c   !#L$/07CLLLM'! !
 ---1$))Ggm G G {A  {HG G G  *# *     K	 :'[T_-C-J-V'['['[\&&&&"
 %))gy'9:*  *  F  9 *// '9W+=>. " 0   w<<!##O--  /L\efm\n  /L  /Lsvw~ss  /L  /L  CJ  /L  /L.8; . P P POOq(OO G WO*22 Bclmtcu  B  Bx  B  B    )F*;<.G %.33763RRG" W#'&*6y#i..*Q*Q # #J"9~~22+6A*O!$Y1!4!4 '%17JqM$J%0':a=$I0" !# !# !# !# "%Y1!4!4 '%0':a=$I%17JqM$J%2GZ]$K0" !# !# !# $2# #)"2"7"7wv"7"V"Vw<<!##OOq(OOO-- LiPVFW  L  L[del[m  L  Lsvw~ss  L  L  CJ  L  L"!, .   
  $QZFFO'' ]hqrxhy  ]  ]  ~G  HO  ~P  ]  ]  T[  ]  ]   
 	( (!
(&**77EKKMM2R[a*bb O''  )c  }B  )c  )c  )c  el  et  u  u  u+4W+=+C+CC+H+H(L&+::a::&::EFA	 &**77EKKMM2R[a*bb 
  ))27DO<@ * B B Z'' /	. Xj#fl*;*;<<FIIIIIF6{{Q%.w%7	'" % 9$ 9 9CFC38888 } '..'-}$>f$>$>FM &.99;;J.99;;J&&z222&&z222 $F"8nW5 2 2
9? 7;*Y"7;;;FF6
6 2666FQdo4;GQQQ-11(FMPVMMM9Zdgch1ii o"155fdJW]L^=_ilhm5nnE i"11?C`d9CF9K]g 2 i iE ( 4!+F!3EJ| =#)ELL5<//&+l#<F#<#<EL

t
,,,#**51111  .---z!!r%   u   Обработка группc                 4   |                      d          D ]}	 | j                                        r d S d| j        j        j        j         d|d          d}t
          j                            ddd| dgdg          }|s+t
          j                            dd	|d         gdg          }|s*t
                              |d         || j        d
|          }|j        r|d         |_	        |j
        s||_
        n||j
        vr|j
         | |_
        |                    d
           t                       | j        xj        dz  c_        <#  t                       | xj        dz  c_        | j                            d| dd           Y xY wd S )Nr  r&  r   r.  r  r  r   r  r  T)r   r.  r4   rS  r  r1  r3   u4   Не удалось загрузить группу ERR-0038r  r  )r   r4   r6   r4  r5  rR   r  rT   rS  r   r.  r8  r7   imported_object_countr9   r:   r;   )r"   
group_datar.  r  s       r#   _process_groupszJiraAPIImport._process_groupsb  s   **844  	Q  	QJQ?,,.. FFado4;Gaa:V\K]aaa-11(FMPVMMM9Zdgch1ii r"155fgzZ`Oa=blokp5qqE "11'/%#'?(,(2 2  E ( 4!+F!3EJ| =#)ELL5<//&+l#<F#<#<EL

t
,,,55:555Q1$))*mak*m*m*4?O * Q Q Q Q Q? 	Q  	Qs   EDEA Fu-   Обработка пользователейc                 j   | j         j        j                            dd          s(| j                             dt
          j                   d S t                      }|                     d          D ]}	 | j         	                                r d S | 
                    |          \  }}t                       | j         xj        dz  c_        |j        rB|j        s;|j                            d          s!|r|                    |j        j                   #  t#                       | xj        dz  c_        | j                             d| d	d
           Y xY w|rU| j         j        j                            dd          r2t)          t*          j        j        t1          |          g           d S d S d S )N
load_usersTuA   Не грузим пользователей из-за опцийrc   r   r3   z.evateam.ruu@   Не удалось загрузить пользователя r  r  r  send_invites)r=   )r4   r  r   rT   r5   r^   r  setr   r6   r  r7   r   r   r   r`  addr9   r:   r;   schedule_deferred_jobrR   r  register_personsr   )r"   new_user_emailsr  rJ  r  s        r#   _process_userszJiraAPIImport._process_users  s   ,266|TJJ 	O ckrkz{{{F%%$$W-- 	L 	LDL?,,.. FF%)%9%9$%?%?"
55:55 < <(< <V\EZEZ[hEiEi <&<#''(:;;;L1$))*smq*s*s*4{ * L L L L L  	ct<BFF~W[\\ 	c!&"2"C4P_K`K`Jabbbbbb	c 	c 	c 	cs   4DBDA Eu#   Обработка статусовc                    |                      d          D ]C}| j                                        r dS | j        j        r	|d         }n|d         d         }| j        j        j        j         d|d          }t          j        	                    |          }|s/dd|d         gg d	g}t          j        	                    |
          }|s't                              |d         | j                  }||_
        t          j        |          |_        |d         |_        |                    d           t!                       | j        xj        dz  c_        EdS )uc   
        Грузим статусы из Jira и сопостовляем с нашими
        statusesNstatusCategoryr   r&  r   r.  r   r  r%  )r   r4   Tr1  r3   )r   r4   r6   rG   rQ   r4  r5  rR   CmfStatusCoderT   r.  r   get_status_typestatus_typer   r8  r7   r   )r"   r   r3  r.  cmf_status_coder:  s         r#   _process_statuseszJiraAPIImport._process_statuses  sz    &&z22 	7 	7F((** y ?$%56$%56v>.5ASSVD\SSF$266f6EEO" K"D&.9;Q;Q;QR"("6":":'":"J"J" S"("6"6F6NBF/ #7 #S #S%+O"(<(L[(Y(YO'#)&>O   T 222LLLO11Q6111)	7 	7r%   c           	      2
    i }d }d }|d         }d |                      |          D             }t          j                            d          }|                     |          }|D ](}	| j        j        j        j         d|	d          }
t          j                            dd|
g          }|s#t                              ||
| j        d	
          }|j        rP|d          d|	d          |_	        |	                    dd          |_
        |	|_        |                    d	           |	d         d         d         }|D ]\}|                    |          }|s|d         dk    r|}|s|d         dk    r|}d| j        j        j        j         d| d| d}|||<   ]|	d         D ]}|                     ||           t          j                            dd|gg dgdg          D ]I}t          j                            dd|j        gdd|gg dg          s3|                    d	           J| j        j        j        j         d|j          |	d         D ]4}  d|d          }|d                                          }t          j                            ||!          }|s"t                              ||| j        "          }|d         |_	        |d         |_
         fd#|d$         D             }t          j                            dd%|g          |_          d|d&          }t          j                            |'          }|d(k    r|rd	|_        |                    d	)           ||_        |                    d	           6*|d*         }| j        j        j        j         d+|d          }t          j                            |'          }|sBt          j                            d,          }t                              ||| j        -          }|d         |_	        ||_        ||_        |                    d	           t          j                            |.          D ]}|                    d	/           |                                D ]{\  }}| j                                        r n\t          j                            dd0d1| d1g          }|||| j        d2d3}t          j        d4i |}|                    d	           ||S )5Nr   c                      i | ]}|d          |S r   r/   r   
issue_types     r#   
<dictcomp>zEJiraAPIImport._create_schemewf_for_simple_project.<locals>.<dictcomp>  s/     
 
 
 tZ
 
 
r%   default.system:defaultrL   r&  r.  =r%  Ttemplater.  r4   rS  r   r  r   r   r   r1  associatedWithr   
issueTypeshierarchyLevelr  :r.  workflowr   r  r3  r  r.  !=Nforcetransitionstype)rD  r.  )rD  r.  r4   c                 T    g | ]$}|                     d            d|d           %S )fromStatusReferencer&  r   )r   sworkflow_hash_ids     r#   r   zEJiraAPIImport._create_schemewf_for_simple_project.<locals>.<listcomp>  sP     + + +uu233+'EE1-B+CEE+ + +r%   linksINtoStatusReferencer0  global	only_dataworkflow_scheme
::SIMPLE::softdev:default)r?  r.  r4   )	scheme_wfTEXKOM_db_deleter  r  r  )rX  
logic_typetarget_workflowr4   cmf_model_namer/   )_get_issue_types_for_projectrR   CmfWorkflowrT   !_get_simplified_project_workflowsr4   r4  r5  rS  r   r   r  r8  _create_status	CmfStatusr   r3  deleter   r  CmfTransstatus_fromallow_empty_transition	status_toCmfSchemeWfdefault_task_workflowdefault_subtask_workflowCmfSchemeWfRuler   r6   CmfLogicType)!r"   jira_project_info	issue_mapdefault_workflow_for_taskdefault_workflow_for_subtask
project_idissue_typeswf_templateworkflows_dataworkflow_dataworkflow_ext_idrD  issue_type_idsissue_type_idr:  issue_type_ext_idr   workflow_transitiontransition_ext_idtransition_type
transitionstatus_from_ext_id_liststatus_to_ext_idrg  workflow_scheme_datascheme_wf_ext_idrX  template_wfrulelogic_type_ext_idr[  	rule_dictrN  s!                                   @r#   #_create_schemewf_for_simple_projectz1JiraAPIImport._create_schemewf_for_simple_project  sc   	$(!'+$&t,

 
"??
KK
 
 

 (,,2J,KK??
KK+ Y	2 Y	2M!%!7!>!Jccm\`NaccO)--h_5U-VVH !--(*#$(	 .   ' 0#4U#; V V}V?T V V - 1 1- D D+8($/// ++;<Q?MN!/ 8 8(__];;
 29"#349908- 5<"#34::3;0$t)?)F)R$t$tV`$t$tcp$t$t$t!/7	+,, (
3 6 6##FH5555 !*//x0*** & 0   * * '++&f.@A#T84... ,    D))))"&/"8"?"K\\x{\\'4]'C 2 2#'7$V$V;Nt;T$V$V!"5f"="C"C"E"E#_00%, 1  
 " !'!)0#'? "1 " "J
 #6f"=
"5m"D
+ + + +09+ + +'
 *0)9)>)>$d,CD *? * *
& '7#d#d:MNa:b#d#d ",008H0II	"h..9.7;I4NNTN222'0
$D1111=2B  11BC"o4;GooSghlSmoo&**2B*CC	 	 ,006G0HHK**$'? +  I
 .f5	*C	'-I	*4((( *//)/DD 	/ 	/DKKK....+4??+<+< 	( 	('x((** ,00 &*B.?*B*B*BC 1  J '(#+"o"+ I )66I66DII$I''''r%   c                    | j         j        j        j         d|j         d|d          }| j         j        j        j         d|d          }t          j                            |          }t          j        |d                   }|s(t                              ||d         | j                   }||_	        |
                    d           t          j                            d	d
|g          }|s+t          j                            dd
|gdd
|gg dg          }|s1t          j                            dd
|d         gdd
|gg dg          }|s"t                              || j         |          }||_        |d         |_        |d         |_        d|_        ||_        ddddd}|                    |d          |_        |
                    d           |S )Nr&  r   r0  r/  r   )r.  r   r4   Tr1  r.  r   r%  rD  status_coder  )rD  r4   r  r   F#a0a0a0z#3f82d8z#e36b51z#23a055)OPENIN_PROGRESS	IN_REVIEWCLOSED)r4   r4  r5  r   rR   r1  rT   r   r2  r3  r8  rb  r.  r   r   rf  r  color)	r"   jira_status_datarD  status_ext_idr.  r  r3  r   status_type_colors	            r#   ra  zJiraAPIImport._create_statusL  s+   
  ?18DooooWghlWmoo
 O*1=YYAQRVAWYY*..f.==*:;KL\;]^^ 	y ..fCSTZC[hlhw.xxK +T***!%%hm-L%MM 	%))T8,k2&&&2)  F  	%))/78T8,&&&2)  F
  	n%%xDOal%mmF%&v.&}5(-%($"	
 
 ),,[)DD%%%r%   c                     d2 fd	}d2 fd	}d3d}d }d }d|dd	|dd
|dd|dd|dd}	d|j          d}
g }t          |          D ]K\  }}|d         }|	                    |          }|r	 t           |d         d4i |          }|j         d| }t
          j                            |ddg          }|s(t
                              dd|d|| j        d|	  	        }|j        r* j        j	        
                    d| d|
 d| d           n|j        s* j        j	        
                    d| d|
 d| d           ned|j        _        |                                 t                        j        j	                            d| d|
 d|j         d |d!          d	           |                    t'          |j                              j        j	                            d"|d!          d#|             j        j	                            d"|d!          d$|            # t(          $ r:} j                            d| d|
 d%|d!          d&| d'd()           Y d}~ d}~ww xY w j        j	                            d"| d*           Mt
          j                            d+d,|gd-d.|gg d/gd0          }|D ]}|                    d1           t                       dS )5uv   
        Обработка условий перехода
        Конвертация в bzPython код
        Nc                     dj         j        j        j         d|  d}t          j                            dddd| dgdd| gg          }|st          d|  d	          d
|j         d|j         d}|S )Nr&  r  r.  r  r  r   r%  u   Группа '   ' не найденаu8               # Пользователь в Группе 'zU'
            try:
                return g.current_user.in_person_group(group_code='@')
            except:
                return False
            )	r4   r4  r5  rR   r  rT   r8   r   rM   )r  r>   group_ext_idperson_group	eval_coder"   s        r#   user_in_group_conditionzMJiraAPIImport._process_transition_conditions.<locals>.user_in_group_condition  s    V 6 = IVVUVVVL!044w(;L(;(;(;<We, 5  L   O M M M MNNN9E9J  DPCT  I r%   c                     j         j        j        j         d|  }t          j                            |          }|st          d|  d          d|j         d|j         d}|S )Nr&  r0  u
   Роль 'r  uG               # Пользователь в проектной роли 'zb'
            try:
                return g.current_user.in_project_role(self.project, role_code='r  )	r4   r4  r5  rR   CmfProjectRolerT   r8   r   rM   )jira_projectrole_idr>   role_ext_idroler  r"   s        r#   in_project_role_conditionzOJiraAPIImport._process_transition_conditions.<locals>.in_project_role_condition  s    !_3:F__J]__K(,,K,@@D Y W-@ W W WXXXHL	  QUPY  I r%   c                 h    ddl m}  |            }i } r(t          t           fd|d                   i           }n)r't          t          fd|d                   i           }|                    d          }|                    d          }|st          d p d	          d
| d| d}|S )u   
            Условие прав
            Args:
                permission_key (str): ключ права
                permission (str): название или ключ права
            r   get_datac                 6    |                      d          k    S )N	jira_coder   )permpermission_keys    r#   r   z\JiraAPIImport._process_transition_conditions.<locals>.permission_condition.<locals>.<lambda>  s    TXXk%:%:n%L r%   project_perm_permissionc                     |                      dd                                                                          k    p|                      d          k    S )N	jira_namer   r  )rT   r  )r  
permissions    r#   r   z\JiraAPIImport._process_transition_conditions.<locals>.permission_condition.<locals>.<lambda>  sP     HH["55;;==AQAQASASS C#xx44
B r%   r   rM   u   Право 'u   ' не найденоu.               # Только с правами 'zR'
            try:
                return self.project.check_project_role_access('zJ', obj=self)
            except:
                return False
            )cmf.system_datar  r   r   rT   r8   )	r  r  r>   r  system_datapermission_datapermission_namepermission_coder  s	   ``       r#   permission_conditionzJJiraAPIImport._process_transition_conditions.<locals>.permission_condition  s4    100000"(**K O "&LLLL#$=>  # #  "&    $$=>  	# 	# .11&99O-11&99O" d b~/K b b bccc/>  AP  I r%   c                  
    d}|S )Nut               # Только Исполнитель
            return self.responsible == g.current_user
            r/   r>   r  s     r#   allow_only_assigneezIJiraAPIImport._process_transition_conditions.<locals>.allow_only_assignee      I r%   c                  
    d}|S )Nur               # Только Постановщик
            return self.cmf_owner == g.current_user
            r/   r  s     r#   allow_only_reporterzIJiraAPIImport._process_transition_conditions.<locals>.allow_only_reporter  r  r%   u(   Пользователь в Группе)r  r  u3   Пользователь в Роли Проектаu   Условие Правu2   Условие Только Исполнителяu(   Условие Только Автора)z:com.atlassian.jira.workflow.condition.UserInGroupConditionz<com.atlassian.jira.workflow.condition.InProjectRoleConditionz9com.atlassian.jira.workflow.condition.PermissionConditionz7com.atlassian.jira.workflow.condition.AllowOnlyAssigneez7com.atlassian.jira.workflow.condition.AllowOnlyReporter   переход ''r  r  r&  Tcmf_deletedr.  include_deletedrz   r  z6 eval)	r]  r[  r  eval_unsaferD  r}  r4   rS  r.     Бизнес-процесс , u7   . Пользователь удалил условие K   . Изменения из импорта не будут примененыu9   . Пользователь изменил условие Fu$   . Добавлено условие : 'r  u   Условие '' Jira: ' bzPython: u5   . Не удалось создать условие ''. zERR-0127CmfTransFilterr  #   ' не поддерживаетсяr}  r=  rM   NOT INr4   rF  Nr   r  rY  r   NNr/   )r   r  rT   r   r.  rR   r  r4   r  r`   r  rS  r  r	  r8  r7   r  rM   r   r-   r8   r;   debugr   rc  )r"   
conditionsr}  rD  r  r  r  r  r  condition_maptransition_namefilter_codesr  condition_datacondition_name	conditionr  filter_ext_idtrans_filterexctrans_filterss   `                    r#   _process_transition_conditionsz,JiraAPIImport._process_transition_conditions~  s6   
	 	 	 	 	 	*	 	 	 	 	 	-	 -	 -	 -	^	 	 		 	 	 H4K K
 S6M M
 71J J
 R0H H
 H0H H#
 
. @Z_???#,Z#8#8 E	 E	C+L9N%)).99I B= &'=y'='O'O'O'O P PI'1'8$A$AC$A$AM#)#8#<#<,(,)  $= $ $L ( '-'<'<+4'/&/(,%-'1'+,0#0 (= 
( 
( $/ .66i8 i i i iT`i i i   
 *9 .66i8 i i i iVbi i i    ?D0;$))+++".33q8 q q q qAMARq qW`alWmq q q   !''L,=(>(>???O*//[9[+A[[>[[   O*//Z9[+AZZyZZ    !   O--ox o o? o oNWXcNdo oilo o"!1	 .         &,,Z~ZZZ   
 -22sJ/<0***
 ! 3 
 
 * 	7 	7L6666s   2F8H,,
I06/I++I0c                     dE fd	}d }dF fd	}d|dd|dd|dd	}|d
k    rd}t           j        j                                        }	|j         d}
t           j                            |
ddg          }|sAt                               d|j         dd|j         d|j         dddd j        d|
	  	        }|j	        r. j        j
                            d| d| d|	 d| d	           dS |j        s. j        j
                            d| d| d|	 d| d	           dS t                      }g }nJt          |t           j                  r0d|j         d}t           j        j                                        }	g }t#          |d           D ]\  }}|d!         }|                    |          }|ra	  |d"         dGi |\  }}t%          |          }|d
k    r,|                    |           |                    |           nqt          |t           j                  rV|j         d#| }t           j                            |ddg          }|s't                               dd$d|| j        d|%          }|j	        r- j        j
                            d| d| d|	 d| d	           n|j        s- j        j
                            d| d| d|	 d| d	           nod&|j        _        ||_        |                                 t3                        j        j
                            d| d| d'|	 d|j         d(|d)          d           |                    t7          |j                              j        j
                            d*|d)          d+|             j        j
                            d*|d)          d,|            B# t8          $ r8} j                            d| d| d-|d)          d.| d/           Y d}~d}~ww xY w j        j
                            d0| d1           |d
k    rC|s^|j        sU|                     d2           t3                        j        j
                            d| d| d3|	 d4|j         d5	           dS t7          |j                  !                    dd6          }d7|j         d8}d9d"                    |           d:| d;}|d<z   tG          d<"                    |          d=          z   d<z   tG          |d=          z   |_        d&|j        _        |                                  j        j
                            d| d| d>|	 d4|j         d	           nat          |t           j                  rGt           j        $                    d?d@|gdAdB|gg dCgdD          }|D ]}|                     d2           t3                       dS )Hu  
        Обработка пост-функций (действий) перехода
        Конвертация в bzPython код

        Действия для начального перехода создаются при помощи
        триггера автоматизации crud (CmfAutomationCrudTrigger),
        так как на текущий момент в бизнес-процессах нет возможности
        настраивать начальный переход.
        Nc                 4   ddddddddddd	dd
ddd}|                     |           }|st          d|  d          |d         }|d         } d| }d}| dk    rrrdk    r	|dz  }d}n                              }                    |dd          \  }	}
|	st          d d|           |d|	j         z  }d|	j         d}n| dk    r+s	|dz  }d}nt          t          fd                    d                    d          }|st          d d          |d         }t          j
                            d d!j        gg"          }t          j                            dd#| gd$d!|ggd%g&          }|D ]C}d' |j        j                                        D             }|                     |          }| n.D                    |          }|t          d| d( d)          |d| z  }n| d	k    ryrdk    r|dz  }d}noj        j        j        j         d* }t          j                             |+          }|st          d, d-          |d|j         z  }d|j         d}nd d}d.| d/|  d0| d1}||fS )2uZ   
            Пост-функция "Обновить Поле Задачи"
               ИсполнительrE  )r   r   u   Описаниеr      Приоритетr   u   Решение
resolutionu   Темаr   )assigneer   r   r  r   
   Поле 'r  r   u   # Поле Nz-1u    будет очищеноFr
  r     Пользователь '   ' не найден: u    в r  u    в Обычныйr   c                 j    t          |                     d                    t                    k    S r  r-   rT   )r   field_values    r#   r   z^JiraAPIImport._process_transition_post_functions.<locals>.update_issue_field.<locals>.<lambda>  s(    Sd1C1C-D-DKHXHX-X r%   
prioritiesu   Приоритет 'u!   ' не найден в дампеcache_schemesrP  r%  r=  r)  choicesr  c                     i | ]\  }}||	S r/   r/   )r   kvs      r#   r;  z`JiraAPIImport._process_transition_post_functions.<locals>.update_issue_field.<locals>.<dictcomp>  s    +i+i+iTQAq+i+i+ir%   ' (u   ) не найденr&  r0  u   Резолюция 'r  z            z
            self.z = z
            )rT   r8   r  r  r   rM   r   r   r   rR   CmfCustFieldConfr   cust_field_conf_schemeCmfCustFieldConfFieldr  r   r   _get_priorityr4   r4  r5  CmfResolution)r   r  r>   	field_map
field_datafield_titlecode_commentr   	user_datarJ  _priority_datapriority_namecust_field_confspriority_field_configspriority_field_configpriority_choicesresolution_ext_idr  r  r"   s    `                  r#   update_issue_fieldzLJiraAPIImport._process_transition_post_functions.<locals>.update_issue_field^  s   
 '?VV);VLL&:JOO(8,OO%/@@ I #z22J ^ \Z \ \ \]]]$W-K#F+J666LE]**" 	/kT&9&9 $@@L EE $ = =k J JI $ 4 4YuUZ 4 [ [IFA! t'(r[(r(rgp(r(rsss $86;$8$88L....EEz))" $; $88LEE$(XXXX ,,\::  % %M ) o'(m{(m(m(mnnn$1&$9M'-'>'C'C /8S7TU (D ( ($ .4-I-N-N#S*5%t-=>  !*{ .O . .* 2H 
 
-+i+i=R=Z=`=f=f=h=h+i+i+i( 0 4 4] C C ,!E - !% 2 2= A A ="+ i} i i i i i# #  !$:=$:$::LL|++" 	3kT&9&9 $@@L EE+/?+A+H+T(e(eXc(e(e%!'!5!9!9AR!9!S!SJ% c'(a{(a(a(abbb $<:?$<$<<L2
222EE*K***  !&  I k))r%   c                      d}d}||fS )Nr  uh               # Назначить автора
            self.responsible = self.cmf_owner
            r/   )r>   r  r  s      r#   assign_to_reporterzLJiraAPIImport._process_transition_post_functions.<locals>.assign_to_reporter  s    2KI k))r%   c                                          |           }                    |dd          \  }}|st          d|  d|           d}d|j         d|j         d}||fS )	NFr  r  r  u   НаблюдателиuR               # Добавить в наблюдатели пользователя z1
            person = models.CmfPerson.get(code='z:')
            self.spectators.append(person)
            )r  r  r8   r   rM   )r   r>   r  rJ  r  r  r  r"   s          r#   add_to_watcherszIJiraAPIImport._process_transition_post_functions.<locals>.add_to_watchers  s    55h??I,,YuU,SSIFA i gX g g\e g ghhh2KSYS^ 17  I
 k))r%   u&   Обновить Поле Задачи)r   r  u   Назначить автораuC   Добавить в наблюдатели пользователя)zCcom.atlassian.jira.workflow.function.issue.UpdateIssueFieldFunctionzCcom.atlassian.jira.workflow.function.issue.AssignToReporterFunctionzGcom.aeroflot.jira.agreement.workflow.function.AddToWatchersPostFunctioninitialu!   начальный переходz	::initialTr  r  uA   Начальный переход бизнес-процесса 'r  uX   Действия начального перехода в бизнес-процессе r  r  r
  
after_save)	r   r   r]  crud_action	eval_typer  r4   rS  r.  r  r  u(   . Пользователь удалил r  r  u*   . Пользователь изменил r  r3   )startr  r  r&  eval)r]  r[  r  rD  r}  r4   rS  r.  Fu   . Добавлено r  r   u   Действие 'r  r  u7   . Не удалось создать действие 'r  zERR-0126u   Пост-функция 'r  rY  u   . Удален  'uY   ', так как начальный переход не содержит действийz\'zif self.workflow.code == 'z':u3   cmf_alert(f'В задаче "{self.code}" поля uC    заполнены автоматически триггером "z"')
z    u   . Добавлен r}  r=  rM   r  r  r  r  r   r/   )%rR   CmfAutomationCrudTriggerr   r  r.  rT   r   rM   r4   r  r`   r  rS  r'  r   rd  CmfTransActionr  r   r(  r   r  r	  r  r8  r7   r  r-   r8   r;   r  is_newrc  replacer   r   r   )r"   post_functionsr}  rD  r  r  r  post_function_mapr  action_verbose_nametrigger_ext_idtriggerfield_titlesaction_eval_codesaction_codesr  post_function_datapost_function_nameactionr  r  action_ext_idtrans_actionr  trigger_nametrigger_condition_codetrigger_alert_codetrans_actionss   `                           r#   "_process_transition_post_functionsz0JiraAPIImport._process_transition_post_functionsT  s}	   Y	* Y	* Y	* Y	* Y	* Y	*v	* 	* 	*	* 	* 	* 	* 	* 	*" A/T T
 :/T T
 ^,X X
 
 ""AO"("A"N"T"T"V"V (:::N599% $! :  G   99m]e]jmmmZ9AZ ZJR-Z Z $- (* $#$() :   " &..a8 a a a a=Pa aSZa a a  
 , &..a8 a a a a?Ra aU\a a a  
 55L "
FO44 	CCCCO"("7"D"J"J"L"LL'0q'I'I'I J	 J	#C#!3L!A&**+=>>F GB-@VK-@-V-VCU-V-V*I{ &y 1 1I!Y..$((555)00;;;;#J@@ .D+5+<(E(E(E(E'-'<'@'@#0,0 -$ (A ( (  , 
+1+@+@/8+1,0)1+5+/?04'4 ,A 	, 	,L (3  O2::!mx !m !m? !m !mI\!m !m_k!m !m !m   
 ".!=  O2::!mx !m !m? !m !mK^!m !mam!m !m !m    CHL4?5>L2(--///&LLL O277!Kx !K !K? !K !K6I!K !K#/#4!K !K9?!K !K !K  
 %++C0A,B,BCCCO*//YVF^YYEWYY   O*//TVF^TTTT    !   O--ix i i? i iPVW]P^i icfi i"        &,,g0Bggg    ""$ 	~ NNDN999LLLO*22rx r r? r r(;r r?F|r r r  
 w|,,44S%@@L%S(-%S%S%S"i$))T`JaJa i iVbi i i 
 '#455w??@  +W55	6  .3G*LLNNNO"''Kx K K? K K$7K K;B<K K K    
FO44 	;"166!3
3X|4...
 !% 7  M !. ; ;##T#::::s   9HO
P-PPc           
      l   | j         j        j        j         d|j         }| d|d          }t          j                            ||ddg          }|s#t                              ||| j         d          }|j        s2| j         j        	                    d|j
         d	|j
         d
           n|d         |_
        |d         |_        fd|d         D             |_        |d                  |_        |                    d          r|d         t          t          fd|                     d                    d          }	 |                     |          |_        n9#  | j                             d d|j
         d|j
         ddd|           Y nxY w|                    d           |S )uS   
        Обработка перехода бизнес-процесса
        r&  r   rD  r.  )r.  rD  rz   TrD  r.  r4   rS     Переход '$   ' в бизнес-процессе ';   ' был изменен и не будет обновленr   r   c                      g | ]
}|         S r/   r/   )r   re  stepss     r#   r   z5JiraAPIImport._process_transition.<locals>.<listcomp>  s.     & & & k"& & &r%   fromtofieldscreenc                 j    t          |                     d                    t                    k    S r  r  screen	screen_ids    r#   r   z3JiraAPIImport._process_transition.<locals>.<lambda>  s&    s6::d+;+;'<'<I'N r%   screensN7   Не удалось установить экран ID     для перехода '!   ' бизнес-процесса 'r  ERR-0122	CmfUiFormr  r<   r1  )r4   r4  r5  r   rR   rd  rT   rS  r`   r  r   r   re  rg  r   r   r   _process_screencmf_ui_formr;   r8  )	r"   transition_datar&  rD  rN  r{  r}  screen_datar-  s	     `     @r#   _process_transitionz!JiraAPIImport._process_transition  si    #o4;GXX8;XX/JJ?43HJJ_(($ ) 
 

  	!(? $	 )  J )  	.O"**M:? M MX`Xe M M M   
 .f5JO-m<JO& & & &#26#:& & &J" $))>#?J ""=11 +M:	"NNNN((33   	-1-A-A+-N-NJ**O--wR[ w w4>Ow wfnfsw w w"!,$ .      OOO---s   
E% %4Fc                 b  6 d 66fd}6fd}i }d }d }d }i }t          |d                                       d          }	t          j                            d          }
|d         d	         }|D ].}t          j        |d
                   }| j        j        j        j	         d| }t          j                            dd|gdg          }|s/t                              ||
| j                  }|d
         |_
        |                    dd          |_        |                    d           |                    d          r|}|}|}n/|d         }|D ]$}d| j        j        j        j	         d| d}|||<   %|d         }|                     |d                   D ]H}|d         |vr|d         D ]2}|d         d         |d<   |                     ||          ||d         <   3It          j                            dd|gg dgdg          D ]I}t          j                            dd|j        gdd|gg d g!          s3|                    d"           J	 t'          j        d#|j
         d$d%          }|	                    |          }|                                st-          d&|j
         d'          t/          |d(          5 }|                                }d d d            n# 1 swxY w Y   t3          |d)          }|st5          d*          t7                      }i }|                    d+          D ]}|                    d
d,i-                              d.          }||         ||d         <   |                    d/          D ]>} | d         }!d0}"| j
        d1k    rDd2}"|                    d3|!4          } | s)| j                            d5|j
         d6|! d7|8           \|                     d
d9i-          }#|                     |!|!| d
         |#r|#                    d.          ndg |                     d:          d;         d<         |"d=          }$|$d>         !                    |d                    |                     d
d?i-          }%|%r|%                    d.          |$d@<    ||           |$dA<    ||           |$dB<   @|s0t5          dCtE          |           dDtE          |           dE          |                    dF          D ]} |                     d:          d;         d<         }&|                    |&          }'|'rd|'_#        |'                    dG           | d         }!|                     d
d9i-          }#|!| d
         |#r|#                    d.          ndg |&dHd=}$|                     d
d?i-          }%|%r|%                    d.          |$d@<    ||           |$dA<    ||           |$dB<   |$||!<   |                    dI          D ]} |                     d:          d;         d<         }&| d         }!|                     d
d9i-          }#|!| d
         |#r|#                    d.          ndg |&dJd=}$ ||           |$dA<    ||           |$dB<   |$||!<   | j        $                    dKtE          |           dLtJ          j&                   |'                                D ]d}(|(dM         dJk    rdJ})n5| (                    |(||          })| )                    |(dA         |)|N           | *                    |(dB         |)|N           e# t4          $ r3}*| j                            dO|j
         dP|* dQ|8           Y d }*~*(d }*~*ww xY w|d         d
         }+| j        j        j        j	         d|d         d          },t          j+                            d
d|+gg dRddS| j        j        j        j	         dTgg!          }-|-s t          j+                            |,U          }-|d         dV         }.|-sBt          j+                            dW          }/t          +                    |/| j        dX          }-|-j,        r|+|-_
        |.                    dd          |-_        ||-_-        ||-_.        ||-_/        g }0|d         d         }|D ]}d| j        j        j        j	         d|d          d}t          j0                            ddSdY| dYg!          }1|0!                    |1           |dZ         r|1|-_1        |d[         r|1|-_2        |0|-_3        |,|-_4        |.|-_5        |-                    d           n(| j        j6        7                    d\|-j
         d]           g }2|8                                D ]\  }3}t          j0                            ddSdY|3 dYg!          }1t          j9                            d^d|1gd_d|-gg!          }4|4rZ|4j,        sS| j        j6        7                    d`|-j
         da|4j:         db|1j
         dc           |2!                    |4j:                   |4st          j9                            d^d|1gd_d|-gg ddg dRgde          }4|4rT| j        j6        7                    d`|-j
         da|4j:         db|1j
         df           |2!                    |4j:                   8t          9                    dg|1|-| j        h          }4||4_;        |4                    d           |2!                    |4j:                   t          j9                            didj|2gd_d|-gg dRgde          }5|5D ]}4|4                    dk           ty                       |-S )lNc                     t          j        dd|           } t          j        dd|           } t          j        dd|           } |                                 S )ul   
            Преобразует строку в snake_case из любого формата
            z[\.\-\s]r  z([a-z0-9])([A-Z])z\1_\2z([A-Z])([A-Z][a-z]))r  r  r  )arg_names    r#   to_snake_casez7JiraAPIImport._process_wf_scheme.<locals>.to_snake_case  sO     vk399Hv2HhGGHv4hIIH>>###r%   c                     g }|                      d          D ]Y}i }|                    d          D ]*} |d                   }|                                ||<   +|                    |           Z|S )Nz$restrict-to > conditions > conditionargr   selectr  get_textr   )r  r  r  r  r?  r<  r=  s         r#   _get_action_conditionsz@JiraAPIImport._process_wf_scheme.<locals>._get_action_conditions  s    J#]]6  2 2	 "$$--e44 > >C,}S[99H/2||~~N8,,!!.1111r%   c                     g }|                      d          D ]Y}i }|                    d          D ]*} |d                   }|                                ||<   +|                    |           Z|S )Nz:results > unconditional-result > post-functions > functionr?  r   r@  )r  r  functionfunction_datar?  r<  r=  s         r#   _get_action_post_functionszDJiraAPIImport._process_wf_scheme.<locals>._get_action_post_functions  s    N"MML  5 5 !##,,U33 = =C,}S[99H.1llnnM(++%%m4444!!r%   project_dir	workflowsr<  rL   jira_workflow_schememappingsr   rV  r.  r=  r  r.  r?  r4   r   r   Tr1  defaultrA  r&  r   rq  r.  r/  r   rD  r   r  r3  rE  r%  rG  	workflow_.xmlreplace_spacesu,   XML файл бизнес-процесса 'u   ' не найденrxmlur   Не удалось получить список переходов между статусами в виде XMLzsteps > stepzjira.status.idr  r  z)actions > action, actions > common-actionordinaryzcommon-actioncommonr  r8  u7   В XML разметке бизнес-процесса 'u%   ' не найден common-action ID zERR-0121rA  zjira.descriptionzresults > unconditional-resultr   step)r   r   r   r'  r(  rJ  r'  zjira.fieldscreen.idr)  r  r  u   Из XML получено u    статусов и u'    переходов между нимиzglobal-actions > actionrS  rR  zinitial-actions > actionr  u   Настраиваем u1    переходов между статусамиrJ  )r}  rD  u   Не удалось импортировать переходы между статусами для бизнес-процесса «u   »: ERR-0067r  r  r  r0  r  rW  )r?  r4   rS  r  defaultIssueTypesubTask*   Схема бизнес-процесса '[   ' была изменена после импорта и не будет обновленаr[  rX  -   В схеме бизнес-процесса '   ' правило )    для логического типа 'j   ' было изменено или добавлено вручную и не будет обновленоr  r=  Tr  V   ' было удалено вручную и не будет восстановленоr  r]  r[  rX  r4   rM   r  rY  )=r   rk   rR   r_  rT   r   short_str_encr4   r4  r5  r   r   r8  _get_statuses_for_projectra  rb  r   r3  rc  r   safe_filenamerl   FileNotFoundErrorrm   readr   r8   r   rA  findrB  r;   
setdefaultr   r   rf  r5   r^   r  r~   r9  r  r  rh  rS  ri  rj  default_epic_workflowrl  default_task_logic_typedefault_subtask_logic_typestrict_task_logic_typer.  r  r`   r  r   rk  rM   r\  r7   )7r"   project_inforC  rG  rn  default_wf_for_taskdefault_wf_for_subtaskdefault_wf_for_epicall_statusesworkflows_dirrs  rt  ru  workflow_name_hashrv  rD  rw  rx  ry  rr  r:  jira_statusr   workflow_filenameworkflow_filers   workflow_xmlrT  
jira_stepsjira_transitionsrW  jira_status_idr  	action_idaction_typeaction_descriptionr7  action_screen_idaction_steprM  jira_transitionr}  r  wf_scheme_namewf_scheme_ext_id	wf_schemewf_scheme_infor?  rn  r[  current_rulesr  r  rules_for_deletionr=  s7                                                         @r#   _process_wf_schemez JiraAPIImport._process_wf_scheme  s   	$ 	$ 	$	 	 	 	 		" 	" 	" 	" 	" 	"!%" \-899BB;OO(,,2J,KK%&<=jI+ _	D _	DM!,!:=;P!Q!Q!%!7!>!JjjVhjjO)-- #7 z .  H  6!--_{gkgv-ww -f 5)--mR@@HMMMdM+++  ++ 	<&.#&.#)1&&!.|!<%3 < <M(kT_-C-J-V(k(kZg(k(k(k%3;I/00 (5K"<<UYHZ<[[ a a
d#;66#-j#9 a aK4?@P4QRW4XK 016:6I6I+W_6`6`LT!233a
 !*//T88TVlVlVl7m8E 0 H H * * '++]D&J\4]5?x4PRhRhRh4j+ k k D))))sD$+$93333#'% % %! !. 6 67H I I$++-- +,}[c[h,},},}~~~--- ,#$6688L, , , , , , , , , , , , , , , $L%88 Z#  %Y  Z  Z  Z!VV
#% JJ~66 "_ "_D%)YYf>N5OY%P%P%Y%Y`d%Y%e%eN-9.-IJtDz*"&++.Y"Z"Z _ _$*4L	&0!;/99*2K%(XXh9X%E%EF#) ) $ 9 9%V^f^k %V %VJS%V %V$.(0	 !: !" !" !" !)-3[[HZ?[[-\-\**:*E*E%&/(.vZl/t/A/J/JQU/J/V/V/Vrt(*&,mm4T&U&UVW&XY_&`(3 
+ 
+ (/66tDzBBB+1;;fF[=\;+]+](+ c=M=V=V]a=V=b=bOM:8N8Nv8V8V5<V<VW]<^<^(899?_@ " g#  %fZ  %f  %fgjk{g|g|  %f  %f  %f  g  g  g!jj)BCC F FF"(--0P"Q"QRS"TU["\K"{33A F370...$*4L	-3[[HZ?[[-\-\*"+$*6NVh+p+=+F+FT+F+R+R+Rnp$&"-$,+ + ,2;;fF[=\;+]+](+ c=M=V=V]a=V=b=bOM:8N8Nv8V8V5<V<VW]<^<^(896E(3!jj)CDD B BF"(--0P"Q"QRS"TU["\K &tI)/FDV;W)X)X&' &vRd'l'9'B'B'B'N'N'Njl ") )' 'O 5K4J64R4ROL18R8RSY8Z8ZO$452A$Y//##  %GcBR>S>S  %G  %G  %G  IP  IU  V  V  V'7'>'>'@'@  O&v.);;%.

%)%=%=+&$& &
 ;;+L9'1%- <    ;;'(89#-!) <    !*  D D D))  +I  s{  s@  +I  +I  FG  +I  +I*4( * D D D D D D D DD
 &&<=fE"o4;Gww<XnKoptKuww
 &**n-***6do&<&C&O#T#T#TU + 
 
	  	H*..6F.GGI%&<=fE 	)--3D-EEH**!? $ +  I $ 	+IN+//rBBIN.AI+1GI..AI+%'"&'=>|LK) 	F 	F
$j)?)F)R$j$jV`aeVf$j$j$j!#044$f.F2C.F.F.FG 5  
 '--j99901 C8BI5i( F;EI8/EI,/I(6I%NNtN,,,,O"**9Y^ 9 9 9   +4??+<+< ,	, ,	,'x,006KcO`KcKcKc8d0eeJ)--!3
3 #y1 .  D  D0 &..@IN @ @&*i@ @ZdZi@ @ @  
 $$TY/// -11%sJ7$c95222222	 %) 2    O*22p	 p p*.)p p^h^mp p p  
 "((333--#,)'#	 .   $,D II$I'''  ++++ $388=1c9-***
 ! 9 
 
 ' 	/ 	/DKKK....s>   A0]!K-!]!-K1	1]!4K1	5Q*]!!
^+(^^c                 $   d}t          d          5  	 | j                                        rn5|                                }|dk    rn||                     ||          z  }Od d d            n# 1 swxY w Y   |                    |           d S )Nr   Finit_views_and_dsTDONE)r   r4   r6   rT   _process_issueput)r"   issue_queueissue_queue_errorsr  rs  r  s         r#   _process_issue_threadz#JiraAPIImport._process_issue_thread  s    5111 	> 	>>?,,.. #))F??$--eW===>	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	v&&&&&s   AA00A47A4u   Обработка теговc           	      L   ddl m} t                      }|                     |d         |                     |d                             D ]Z}| j                                        r d S |d                             d          r!|                    |d         d                   }[|D ]}|	                    dd          	                    d	d
          } ||dd          }	 dddd| dgdd|gddd| dgg}t          j                            |          }|s1t                              |          }|                    d           t                       # t          $ r;}	t                       | j                            d| d|	 dd           Y d }	~	d }	~	ww xY wd S )Nr   translitr   r   rz   labelsr  r  r  r   ruTlanguage_codereversedr  aliasr  r@  "%r   r%  r   r1  u*   Не удалось создать тег r  zERR-0134CmfTagr  )transliterater  r'  r   _count_project_tasksr4   r6   rT   unionr  rR   r  r8  r7   r8   r9   r;   )
r"   ro  r  tagsr  tag_name
name_aliasr:  tag_objr  s
             r#   _process_tagszJiraAPIImport._process_tags  s   ******uu++L,>dF_F_`lmq`rFsFs+tt 	= 	=E((** X""8,, =zz%/(";<< 	 	H''S1199#rBBH!($NNNJ#W.>(.>.>.>?"GX6#W.@*.@.@.@AC !-++7+;; 3$mmm::GLLTL222   ))PPPQPP)% *        	 	s   #A8E
F!&1FF!u)   Обработка приоритетовc                 *   | j         j        j        j         d|d          }t          j                            dd| dg          }i }|                     d          D ]J}|d         |d	         vr|d
         D ].}|d         }|                     |          }||d         }|||<   / |D ]f}	t          j        	                    d|	          }
|
s$t                              ddd|	| j                   }
||
_
        |
                    d           gd S )Nr&  r   r.  r  r  r%  priority_schemesr   projectKeysr  r   r   r[  r  )r  r   orig_captionr)  r4   Tr1  )r4   r4  r5  rR   r  r   r   r  r  rT   r  r8  )r"   ro  cust_field_conf_ext_idr  r  priority_schemer   r  priority_keycust_field_confcust_field_conf_fields              r#   _process_prioritiesz!JiraAPIImport._process_priorities=  sn   $(O$:$A$M!e!eQ]^bQc!e!e!277'VlSoSoSo?p7qq#//0BCC 		 		OE"/-*HHH+L9 6 6 ( 0#11-@@'#+D>L(5%%/ 	9 	9O$*$@$D$D*]l$D$m$m!( (.(D(D0#!5*# )E ) )% -4!)!&&4&8888	9 	9r%   u5   Обработка решений(резолюций)c           
      j   |                      d          D ]}| j                                        r d S |d         }|                    d          p|d         }| j        j        j        j         d| }t          j                            |          }|s#t                              || j        |d          }|j        r2||_	        |d	         |_
        ||_        |                    d
           n)| j        j                            d| d| d| d           | j        xj        dz  c_        d S )Nresolutionsr   untranslatedNamer   r&  r0  T)r.  r4   r  rS  r   r1  u   Резолюция 
 (Jira ID r  ug   ') была изменена. Изменения из импорта не будут примененыr3   )r   r4   r6   rT   r4  r5  rR   r  rS  r   r   r  r8  r`   r  r   )r"   r  resolution_idresolution_namer  resolution_objs         r#   _process_resolutionsz"JiraAPIImport._process_resolutions\  s   **=99 	7 	7J((** &t,M(nn-?@@VJvDVO#'?#9#@#L _ _P] _ _#155=N5OON! !'!5!5,#$.$(	 "6 " " - 
&5#&0&?#1;.###5555&..a. a a -a a2Aa a a   O11Q61119	7 	7r%   u   Импорт фильтров
is_processc                 d    |s! j         j                            d           d S  fd}t          j                    }d}                     d          D ]} j                                         r d S |d         }|d         } j         j        j        j         d| }t          j
                            |g d	          }	|	s"t          
                     j         |d
          }	|	j        r:	 ||	_        |                    d          |	_        |                    di                                j                  r-                     |d          j                 |	          |	_        d}
d}t%                      }t%                      }|d         D ]y} |||	          }|s|dk    rd}
d} j        j        r|                    |           >|d         r|                    |           \|d         r|                    |           z|                    dg           D ]%} |||	          }|r|                    |           &t-          |          |	_        t-          |          |	_        t3          d ||z  D                       }|rd}
d}|
|	_        ||	_        ||	_        |	                    d
           t=                       n# t>          $ rN}tA                        xj!        dz  c_!         j         "                    d| d| d| dd            Y d }~n1d }~ww xY w j         j                            d!|	 d"| d#| d$           |dz  }t          j                    |z
  }||z  } j         j        #                    d%|d&d'| d(|d)d*tI          |d+z             d,	           d S )-Nu.   Импорт фильтров отключенc                    d}	 | d         }|dk    ro| d         d         }dj         j        j        j         d| d}t          j                            dddd	| d	gdd|gg
          }|st          d| d          n|dk    r| d         d         }| d         d         }| d         d         }j         j        j        j         d| }	t          j                            ddd|	 dg
          }|s&j         j        	                    d| d| d           n|dk    r|                     di                               j
                  r| d         j
                 }
| d                             d          }| d                             d          }	                     |
          }n$# t          $ r}t          | d          d}~ww xY w                    |dd          \  }}|st          d|p| d|
 d          n|dk    rd}nO# t          $ rB}xj        dz  c_        j                             d |j         d!| d"|#           Y d}~nd}~ww xY w|S )$u  
            Получает объект (группу, проект, пользователь), которому
            необходимо предоставить доступ к фильтру

            Args:
                share_permission (dict): данные объекта прав
                task_filter (obj): объект фильтра

            Returns:
                _type_: _description_
            NrJ  r  r   r&  r  r.  r  r  r%  u"   Не найдена группа 'r  r  r   r   r  r  r  u~   Не удалось добавить разрешение на доступ к фильтру. Не найден проект r  u=   '. Возможно он еще не импортированr  r   H   . Возможно пользователь был удален в Jira.Fr  u,   Не найден пользователь 'r  r  loggedinr3   u_   Не удалось добавить разрешение на доступ к фильтру 'r  zERR-0129r  r<   )r4   r4  r5  rR   r  rT   r8   
CmfProjectr`   r  rP   r  r  r:   r;   r   )share_permissiontask_filtershareeshare_permission_type
group_namer  rq  r   project_nameproject_ext_idrP   	user_nameuser_display_namer  r  r  r"   s                   r#   _get_shareez3JiraAPIImport._process_filters.<locals>._get_sharee  s    F?(8(@%(G33!1'!:6!BJ#c(>(E(Q#c#cU_#c#c#cL#266 %w0CL0C0C0CD#Wj9  7  F " 'NNNN   +i77!1)!<T!BJ"29"=e"DK#3I#>v#FL(,(>(E(Q%a%aU_%a%aN#.22 (&2K2K2K2KL 3  F " .66Z>IZ ZNZZ Z Z   *V33(,,VR88<<T]KK 4  07FH 0 8 < <V D DI(8(@(D(D](S(S%$($A$A($K$K		$   '"lll   !% 4 4!$$ !5 ! !IFA
 " 'O ) >->O OCKO O O  
 +j88'F   1$))E*5*:E E?BE E)#	 *         Ms=   FH F1 0H 1
G;GGAH 
I 8II r   filtersr   r   r&  r   rS  r  r.  rz   Tr4   r.  rS  r   ownerrA  privatesharePermissionsr  readonlyrV  editvieweditPermissionsc              3   J   K   | ]}t          |t          j                  V  d S r   )r   rR   r  r   s     r#   	<genexpr>z1JiraAPIImport._process_filters.<locals>.<genexpr>	  sC       & & #3(9::& & & & & &r%   fullr1  r3   u0   Ошибка обработки фильтра 'z' (ID: z). zERR-0130CmfBqlFilterr     Фильтр r  r  uc   ') был изменен. Изменения из импорта не будут примененыu4   Импорт фильтров выполнен за .3fu
    сек.: r  z.2fu   /с | ~<   u   /мин))%r4   r`   r  time	monotonicr   r6   r4  r5  rR   r  rT   rS  r   r   rP   rC  rF  r'  rG   rQ   r(  r   rG  	executorsanyperm_policy
view_scoper  r8  r7   r8   r9   r:   r;   r  int)r"   r  r  t1filter_countfilter_data	filter_idfilter_namer  r  r  r  rG  r  r  r  edit_permissionhas_projectr  t2
proc_speeds   `                    r#   _process_filterszJiraAPIImport._process_filters|  s    	O"**+[\\\FO	 O	 O	 O	 O	b ^++I66 ^	 ^	K((** #D)I%f-K#5<HWWIWWM -11$   2  K  $11#($( 2  
 * HB'2K$'2}'E'EK$"w3377FF 040@0@'0? + 1A 1 1- #,K!*J!$J #I
 -88J,K 7 7(!,-={!K!K% %$!Z//*4K)1J$9? 7&NN62222/7 7 )f 5 5 5 5!1&!9 7 *v 6 6 6 ,7??;Lb+Q+Q 2 2!,_k!J!J! 2%MM&111-1*-=-=K*,0OOK)"% & &#-	#9& & & # #K # .&,%-
.9K+-7K*2=K/$$$666LLLL     NNNOOq(OOO--r;rr_hrrmprr#-!/ .         &..aK a a9 a a a a a   ALL^"!B&
##U2U U UU U)TU U69*r/6J6JU U U	
 	
 	
 	
 	
s   .GK
L$ALL$project_structro  c                 
   t           j                            dd|d         gddg          }|r|j        j        |d         k    s|j        rW|d         |j        vrH|d          d|d          d|d<   | j        j                            d|j	         d	|d                     n(|j        s!|d         |_        |
                                 d
|d<   d|d<   d|d<   d|d<   |                     |          |d<   t           j                            ddd|d          dg|                                          }|s/t                               | j        |d         |d         d
          }|j        }|j        rT|D ] }|dk    r	t          ||||                    !|                    d          rd|_        |
                                 n#| j        j                            d| d           |r9t           j                            |          D ]}|                    d
           |                     |d                   D ]}| j        j        j        j         d|d          }t           j                            |          }	|	s-t           j                            g ddd|d         gg          }	|	s(t                               |d         | j        d
          }	||	_        |d         |	_	        |                    d           |	_        |	
                    d
!           t           j                            ||	"          }
|
s"t                               ||	| j        #          }
g |
_        |

                    d
!           |                    d$g           D ]}|d%         d&k    r| j        j        r"|                     |d'         d(                   }nY	 |                     |d                   }n<#  | j                            d)|	 d*|d          d|d+          dd,|-           d }Y nxY w|r|
j                            |           | j        j                            d.|            |d%         d/k    r+| j        j        rd|d0         d1          d}nd|d          d}d| j        j        j        j         | }t           j                             ddd| dgdg          }|s+t           j                             dd2|d         gdg          }|rZ|j        s||_        n||j        vr|j         | |_        |
                    d
!           |
j                            |           | j                            d3| d4d5|-           | xj!        d6z  c_!        tE          d7          |

                    d
!           | #                                 | $                    |8           | %                    |          |_&        | '                    |          |_(        | )                    |          |_*        | +                    |           | j        j        rr|d9         }|r| ,                    |          |_-        ng| j        j        j        j         d|d:         d          }t           j.                            |          |_-        n| /                    |          |_-        |j        r9d|_0        d|_1        d|_2        d|_3        d|_4        |
                    d
!           | #                                 | 5                    ||           | 6                    ||           t           j7                            |d;d
<          }|s4t           7                    d=|d;d
>          }|
                    d
!           tq                       | 9                    |           | j        :                                rd S tq                       | ;                    ||           | #                                 | <                    ||           | j        xj=        d6z  c_=        | #                                 |S )?Nr   r   r[  r.  r  r  r  u   Проект с именем u8    уже существует! Переименуем в Ttask_allow_multiple_sprintsFsl_only_owner_approvesl_deny_no_approvesl_task_only_owner_closeui_form_schemer  r  )r4   r.  r   rS  	isPrivater  u"   Настройки проекта u    были изменены пользователем. Изменения из импорта не будут примененыr)  rY  r   r&  r0  r  r%  )r   r4   rS  r   r1  )r)  project_role)r)  r  r4   actorsrJ  atlassian-user-role-actorr  rJ   uX   Не удалось найти и добавить пользователя в роль u    проекта: r   zERR-0039rA  uR   Не удалось привязать пользователя к проекту zatlassian-group-role-actor
actorGroupr  r  u<   Не найдена группа пользователей u#    для проектной ролиzERR-0040r3   u&   Неизвестный тип роли)ro  
simplifiedrJ  epic)r*  r#  include_systemEpics)r   r*  r#  system)>rR   r  rT   r[  r   r.  r4   r`   r  r   r8  _process_screen_schemekeysr  rS  r  r  r  r   rc  _get_project_rolesr4  r5  r  r   CmfProjectRoleAssignmembersrG   rQ   rC  r;   r   r  r:   r8   _calc_progressr  _process_permissionsproject_perm_scheme_process_security_levelssecurity_level_scheme_process_field_conf_schemer  r  r  rX  rh  r  
show_lists	show_blog
show_pfeed	show_disk	show_chat_process_versions_process_componentsr3  r7   _process_tasksr6   _process_boards_process_sprintsr   )r"   r  ro  project_objr  r   r  	role_infor.  r  role_assignactorr  	sub_groupproject_simplifiedr  epics_folders                    r#   _process_projectzJiraAPIImport._process_project=	  s3
   '++FD.QWBX3Y4@(3K , M M 		#%(N<,HHH ' I,:8,DKL^,^,^,:6,B)a)anU]F^)a)a)av&&.. 0e{O_ 0e 0eLZ[aLb0e 0e f f f f ' #%3H%="  """8<45 38.//4+,5:12 ,0+F+F|+T+T'( '++HfFe.YaJbFeFeFe3f3A3F3F3H3H , J J 	_ ++t~^fOg1?1GY] , _ _K#& 	% ? ?(??S.*=>>>>,, 4*3'O"**][ ] ] ]  
  	3++;+?? 3 3T2222 00d1CDD ?	/ ?	/I.5AVVYt_VVF(,,F,;;D u,009O9O9ORXZ^`ijp`qQr8s0tt w,,)F2CPTP_qu,vv DK!&)DI!m44DIII$I''' 599[_9``K V$99[_EI_ : V V"$K... #x44 *N *N=$???y (#//k0B;0OPP	(#'#3#3E&M#B#BDD( O55!L{ !L !L#(=!L !L49-4H!L !L !L *$/	 6    $(DDD U#+2248888.66  8T  MR  8T  8T  U  U  U  U6]&BBBy 8!HeL&9)&D!H!H!H!7eFm!7!7!7U$/"8"?"KUVUUF & 5 9 9(FTaX^TaTaTaAbltku 9 v vI$ z$*$9$=$=fgW\]cWdEeownx$=$y$y	  -(/ M/5I,,#9+;;;2;2B/LF/L/LI,!4888#+229====11  3]qw  3]  3]  3]2<+ 2 O O O1,#$LMMM....555 +/*C*CL*Q*Q' -1,I,I,,W,W) .2-L-L\-Z-Z* 	  ... 9? 	J!-l!;! 	X
 )-(P(PQ](^(^%% '+o&<&C&O##S_`vSwx|S}## (.(:(>(>FV(>(W(W%%$($;$;L$I$IK!& 	/%*K"$)K!%*K"$)K!$)K!...|[999  {;;; '++# , 
 

  	0!++'	 ,  L $///L)))?$$&& 	F 	\;777lK888--2--s   O667P/c                 d   dd l }|                    dddd| j        j        j         d| j        j         d|d          d	| d
| dgddt          dd          t          dd                    }| j                            d|j         d| d| d           | j                                         |S )Nr   z/usr/bin/python3z	manage.pyshellz&plugin = models.CmfPluginJira.get(id='z(');retcode = plugin.process_issue_fork('z', 'r   z', r  z);Tz"/var/log/eva-import-subprocess.loga+z&/var/log/eva-import-subprocess.err.log)	close_fdsstart_new_sessionstdoutstderru"   Запущен процесс PID z (start=z, limit=r  )	
subprocessPopenr4   r4  r   rm   r5   pid
log_detail)r"   ro  r  r   r#  procs         r#   _execute_taskzJiraAPIImport._execute_task
  s   "K9O9R  * 0<T0B GL PU   "<dCC@$GG   
 
 	jjjSXjjbgjjjkkk""$$$r%   c                 T   d|d          d|d          d|d          d}t           j        }|r| j        j                            d           |                     |d         |	          }|s$| j        j                            | d
           d S | j        j                            | d| d| j                    fdd} || j                  }g }t          | j                  D ];}| 	                    |||          }	||z  }|
                    |	           ||k    r n<||k     rt          j        d           t          |          D ]n}	|	                                }
|
V| xj        |
z  c_        |                    |	           | 	                    |||          }||z  }|
                    |           o||k     t          |          D ]2}	|	                                 |	j        r| xj        |	j        z  c_        3| j        j                            | d           d S )Nu   Проект 'r   r  r   r  r   r  u   Будет выполнена обработка только новых или обновленных задач. Для обработки всех задач измените значение параметра 'IMPORT_ONLY_NEW_OR_UPDATED')only_processinguO   . Нет новых/обновленных задач для обработкиuJ   . Обработка задач в несколько процессов: rO  c                 t    t          j        | |z            }|t          j        k    r | |dz             S |S )Nr3   )mathceilr   IMPORT_OBJ_CNT)
task_countr   
chunk_sizecalc_obj_limits      r#   r1  z4JiraAPIImport._process_tasks.<locals>.calc_obj_limit0
  sB    :#=>>JF111%~j-!2CDDD!!r%   r   r3   u2   . Закончили обработку задач)r   IMPORT_ONLY_NEW_OR_UPDATEDr4   r`   r  r  r  r   ranger(  r   r  sleepr   pollr:   r  communicate
returncode)r"   ro  project_msgonly_new_or_updatedtask_cntr  r   processr  r'  r7  new_procr1  s               @r#   r  zJiraAPIImport._process_tasks
  s   l|F';llT@RllVbchVilll$? 	O"**R  
 ,,/ - 
 

  	O"'';  )H  )H  )H  I  I  IF##  F  Ffn  F  Fqu  rD  F  F	
 	
 	
	" 	" 	" 	" 	" x);<<t)** 	 	A%%lE5AADUNENN4   x   hJqMMMW - -!YY[[
)OOz1OONN4(((#11,uMMHUNENN8,,, h MM 	3 	3D 34?2##{$f$f$fgggggr%   u#   Обработка проектовc           
      &   t           j                            d          j        j        }|                                 D ]}	 |d         d | j        D             vr| j                                        r d S |                    di           }|r!| 	                    || j
                           }nddd}|d	         d
k    r!t           j                            d          }ns|d	         dk    r!t           j                            d          }nF|d	         dk    r!t           j                            d          }nt          d|d	          d          d| j        j        j        j         d|d          d|d<   |d         |j        j        |d         ||d         ||d         |d}|                     ||           # t          $ rB t!                       | xj        dz  c_        | j                            d| dd           Y w xY wd S )NrK   rL   r   c                     g | ]
}|d          S r8  r/   r   s     r#   r   z3JiraAPIImport._process_projects.<locals>.<listcomp>[
  s    -Z-Z-ZCc$i-Z-Z-Zr%   leadzdefault_import_jira@evateam.comdefault_import_jira)r   r   projectTypeKeybusinesszproject.base:defaultsoftwarezproject.agile:defaultservice_deskzproject.servicedesk:defaultu$   ERROR! Проекты с типом u3    временно не поддерживаютсяr&  r.  r   r   r   )r   r[  r   activitytask_code_prefixrF  r.  r  r3   u<   Не удалось импортировать проект zERR-0041r  r  )rR   rS   rT   r   r   r   r]   r4   r6   rC  rP   rl  r8   r4  r5  r  r9   r:   r;   )r"   rE  ro  project_leadrF  r[  r  s          r#   _process_projectszJiraAPIImport._process_projectsV
  s   %))y)99<B ..00 *	M *	ML)M%-Z-Z4CY-Z-Z-ZZZ?,,.. FF+//;; @ $ 0 0dm1L M MII*K)>!@ !@I 01Z??!'!4!8!8>T!8!U!UJJ!"23zAA!'!4!8!8>U!8!V!VJJ!"23~EE!'!4!8!8>[!8!\!\JJ# S|L\?]  S  S  ST T T)qdo.D.K.W)q)q[ghl[m)q)q)qX&(0",-"5(7 ((4U(;!**84'3	" 	" %%nlCCCC M M M1$))*wiu*w*w*4| * M M M M MMM*	M *	Ms    GG9EGAHHu   Обработка досокc                    ddd}dddddd	d
}ddddd}t           j                            d|dg          }|s$t                               d||d| j                  }|j        sd|_        |                                 |d         }|                     |          D 	]h}	 | j                                        r dS |d         }	|d         }
| j        j        	                    d|	 d|
            |d         d         }d}|d         d         }|r|d         }|d         }| j        j
        j
        j         d| }t           j                            |g d          }|s"t                               | j        |d           }|j        rM||_        d!|_        d"|_        |j                            |           ||_        |                    d#           n)| j        j                            d$| d%| d| d&           g }|d'         }|d(         ddd)         D ]}|d         }|d         }| j        j
        j
        j         d| d| }t           j                            |g d*          }|s"t                               | j        |d           }|j        r,||_        d+|_        ||_        |                    d#           n)| j        j                            d,| d%| d| d-           |                    |           g }|d.         d/         ddd)         D ]}|d         }|d         }| j        j
        j
        j         d| d| }t           j                            |g d*          }|s"t                               | j        |d           }|j        r2|d         |_        d+|_        ||_        |                    d#           n)| j        j                            d0| d%| d| d&           |                    |           | j        j
        j
        j         d|	 |d1<   t           j                            d1d2|d1         gd3d2|ggg d45          }|s(t                               |d1         | j        d6          }|j        r|d         |_        ||_        ||_        |                    |d7                   |_        ||_        ||_        ||_        |                    |d8         d	          |_        |                    |d9         d          |_        d|_        |d         |_        |                    d#           t?                       n)| j        j                            d:| d%|	 d|
 d-           tA          tC          d; |d<         d=                   d          }tA          tC          d> |d<         d=         ddd)                   d          } | rd?| d@<   |rdA|d@<   d}!t           j"        #                    |g dBC          }"|"D ]`}#|#j        j$        pi }$|$                    dD          }%|#j        r|%r2|%|#j%        k    r'| j        j                            dE| dF           dG}! nag }&dH}%|d<         d=         D ]}'	 |'d         }(|'d         })| j        j
        j
        j         d|( }*t           j"                            d1d2|*gd3d2|ggdIdJgdK          }#|#s9t           "                    ||*| j        dL          }#|#                    d#           |&                    |#j&                   |#j'        r*| j        j                            dM|# d%|( d|) dN           |#j        j$        pi }$|#j        r|)|#_        |'dO         |#_(        |'dP         |#_)        g }+|'dQ         D ]},| j        j
        j
        j         d|,d          }-t           j*                            |-R          }.|.s*| j        +                    dS|# d%|( d|) dT|, dU|V           o|+                    |.           |+|#_,        |'dW         rdX|#_-        n+|'dQ         sdY|#_-        n|'                    d@dZ          |#_-        |$.                    |'           n)| j        j                            dM|# d%|( d|) d-           |!r|%|#_%        |#j%        |$dD<   |$|#_        |#                    d#           t?                       |%dHz  }%m# t^          $ r?}/ta                       | j        +                    d[|( d|) d|/ d\|V           Y d}/~/d}/~/ww xY wt           j"        #                    d]d^|&gd3d2|gg d_gd`          }0|0D ]}'|'1                    da           |0r"| j        j                            db|0            t?                       | j        xj2        dcz  c_2        	4#  ta                       | j        +                    dd| de|V           Y 	gxY wdS )fu  
        https://bcrm.carbonsoft.ru/desk/favorites/Document/DOC-007367#spec-006348-b
        https://developer.atlassian.com/cloud/jira/software/rest/api-group-board/#api-rest-agile-1-0-board-boardid-quickfilter-get

        Только для Jira Server.
        Если с доской связано несколько проектов,
        то в каждом проекте создаются одинаковые доски с единым основным фильтром 
        zboard.scrum:defaultzboard.kanban:default)scrumr  z	1 queriesz2 userstoryz
3 assigneez4 epicz	5 projectz7 none)r   parentChildr  r  r  nonez1 -1wz2 -2wz3 -4wz6 none)z-1wz-2wz-4wNONEu
   Доскиtree_node_is_branchrW  N)r   r)  r*  r#  r4   Tr   r   u!   Обработка доски ID r  r  r   r   r&  )r   rG  rS  r  r  r  r  rV  r1  u   Основной фильтр z (ID u;   ) был изменен и не будет обновленswimlanesConfig	swimlanesr  r  embeddedu   Дорожка uA   ) была изменена и не будет обновленаquickFilterConfigquickFiltersu   Быстрый фильтр r.  r=  r)  )r)  r*  kanban_bql_filterswimlane_bql_filtersquick_bql_filters
limit_dayskanban_board_columnsr  r  r.  r4   rS  rJ  swimlaneStrategyoldDoneIssuesCutoff   Доска c                 $    | d         o| d          S NmappedStatusesisKanPlanColumnr/   columns    r#   r   z/JiraAPIImport._process_boards.<locals>.<lambda>c      v.>'?'aO`HaDa r%   rapidListConfigmappedColumnsc                 $    | d         o| d          S r^  r/   ra  s    r#   r   z/JiraAPIImport._process_boards.<locals>.<lambda>j  rc  r%   z#00875ar  z#42526e)r4   r  ordernor)  rz   rg  u.   Порядок колонок на доске up    был изменен и не будет обновлен. Упорядочите колонки вручнуюF  r  r  )r   rz   r  r)  r.  r4   rS  u   Колонка uG   ) была удалена и не будет восстановленаr  maxr_  r0  u   Для колонки u!   ) не найден статус zERR-0124rA  r`  r  z#6b778cz#0052ccu5   Не удалось создать колонку ID zERR-0042rM   r  r  r  rY  uC   Удалены колонки, отсутствующие в Jira: r3   u:   Не удалось импортировать доску zERR-0043)3rR   r3  rT   r4   rN  r8  _get_project_boardsr6   r`   r  r4  r5  r  rS  r   r  r  rG  r   r  r  CmfKanbanBoardr)  r*  r[  rT  rV  rU  swimlane_typerW  "kanban_board_quick_filters_visibler7   r   r   CmfKanbanBoardColumnr   r   rg  rM   r  min_sizemax_sizer1  r;   mapped_status_codesr  r  r8   r9   rc  r   )1r"   ro  r  
board_typeswimlane_type_mappinglimit_days_mappingboard_folderrq  boardboard_id
board_nameboard_configrT  board_filterboard_filter_idboard_filter_namekanban_filter_ext_idrU  swimlanes_configswimlaneswimlane_idswimlane_nameswimlane_ext_idswimlane_filterrV  quickfilterquickfilter_idquickfilter_namequick_filter_ext_idquick_filter	board_objfirst_column_with_statuseslast_column_with_statusesupdate_column_orderboard_columnsboard_columncolumn_datacolumn_ordernocurrent_columnsrb  	column_idcolumn_namecolumn_ext_idrs  r   r  status_globalr  columns_for_deletions1                                                    r#   r  zJiraAPIImport._process_boards
  sq    +,
 

 "($"!
 !
 	
 
 '++)* , 
 

  	!++!"'? ,  L / 	 /3L,!$'
--j99 I	G I	GEHG?,,.. FF ;"6]
&++PPPJPP    %V}X6 %)!$V}X6 &24&8O(4V(<%.2o.D.K.W+l+l[j+l+l((.(;(?(?3      )@ ) )% - ,2,?,?'+#7,0 -@ - -)
 )8 1B).8>)57?)4)4;;KHHH<H)9)..4.@@@@.66Y=N Y Y#2Y Y6GY Y Y   (*$#/0A#B  0 =ddd C A AH"*4.K$,V$4M)-)?)F)R&q&qVa&q&qeo&q&qO&,&9&=&=.      '> ' 'O + *0*=*='+#2,0 +> + +
 '6 	/<,5?2:B7',,,>>>>.66_o _ _K _ _S` _ _ _   )//@@@@ %'!#/0C#D^#TUYUYWYUY#Z ; ;K%0%6N'26':$-1_-C-J-V*x*xZh*x*xlv*x*x'#)#6#:#:2      $; $ $L ( '-':':'+#6,0 (; ( (
 $3 
,7,?)2</7B4$))d);;;;.66Y< Y Y#1Y Y5EY Y Y  
 &,,\::::%)_%;%B%N"\"\RZ"\"\h"155!3h8!34	 	 	 6  	  !  & 5 5$X#'?(, !6 ! !I
 , %*6]IN'2I$,8I)+5>>%-+H+HI(2CI/2CI/5II2.C.G.G();< / /I+ ,>+A+A$%:; , ,I( DHI@05fI-NNtN444LLLLO*22[i [ [h [ [* [ [ [   .2aa$%67H  . .* -1aa$%67H2N  - -) - C9B-g6- D:C.w7
 '+# & ; @ @$   !A ! ! %2  L".">"D"JK%0__Y%?%?N(3
)
.<@T.T.T.66TY T T T  
 /4+"$!%*+<=oN Z ZFY$*4L	&,Vn+/?+A+H+T(c(cXa(c(c'-'B'F'F!)3 >!)3	 :$
 !2 -$ -1 (G 
( 
(  , @+1+F+F'0'4+/?04	 ,G , ,L )--$-???'..|/@AAA'3 % O2::!i, !i !iY !i !iR] !i !i !i   %&2&B&H&NB'7 %0;L-4:5ML14:5ML124/*01A*B J J37?3I3P3\0n0n`fgk`l0n0n060D0H0HP]0H0^0^'4 !-$(O$=$=)S )S )ST] )S )Sal )S )SJP)S )S(2,5	 %> %& %& %& %- 3 : := I I I I?RL<  &&78 T5> 2 2%+,<%= T5> 2 2 6<ZZ5S5S 2'..v6666 O2::!c, !c !cY !c !cR] !c !c !c  
 / J3AL0 6B5IK	27B4$))d);;;"&$.$   $11uT]uualuupsuu& ) 2         (.'B'G'G?;!3	2222
 %) (H ( ($ 3 9 9FMM4M8888' O*22t^rtt   55:555G))*ngl*n*n*4+ * G G G G GQ
I	G I	GsL   "g>WgCc6)g*F
c64g6
d? 4d:4g:d??Bg0hu#   Обработка спринтовc                 N   t           j                            dd|gg dgdg          }t           j                            dd|gg dgdg          }t           j                            d          }|                     |d	                   D ]}| j                                        r d S | j        j        j        j         d
|d	          }t           j	                            dd|gdd|ggg d          }|s#t           	                    |d| j        |          }|j
        r\||_        |d         |_        | j        j        s/|                    dd          r|xj        d|j         dz  c_        |                    d          |_        |                    d          |_        ||_        |j        r|                    d           |d         dk    r'||_        |j                            d          |_        n2||_        |d         dk    r|j                            d          |_        |j        j        s'd|j        _        |j                            d           |j        r|                    d           t5                       d}	| j        j                            d|j         d t;          |d!                               |d!                                         D ]\  }
}|d"         }|d#         }| j        j        j        j         d
|
 }t           j                            |g d$%          }|r|                    d&          r| j        j        j        j         d'|j          }t           j!                            |g d(%          }|s!t           !                    || j        )          }d*|_"        d+|j#         d,|j         d-|_$        ||_%        |j        r|                    |j&         .           |j'        dk    r2t;          |j(                  d/k    r|j)        *                    |           Z|j)        *                    |           v|d	         |d	         k    rO| j        +                    d0|d          d1| d2|
 d3|d          d2|d"          d4tX          j-        5           |	d/z  }	| xj.        d/z  c_.        | j        /                    d0|d          d1| d2|
 d6d7|8           |	r*| j        /                    d0|d          d9|	 d:d;|8           |                    d           |d         dk    r|j&        s t           j0        1                    |<          sq|j                            d=          |_        |                    d           | j        j                            d>|j         d?           |2                                 t5                       | j        xj3        d/z  c_3        | j        4                    d@dA           d S )BNr*  r   )r#  r   r  rN  r  r"  zlist.agile_sprint:defaultrL   r   r&  r.  r=  r)  )
r.  r   r[  rS  r  rD  r,  r-  r*  r   T)r.  rS  r4   r[  r   multiprojectFr  r  r'  r(  r1  stateclosedr  r   r  r   u0   Добавляем задачи в спринт r  issuesr   r  )listsr.  cache_status_typeagile_story_pointszop_gantt_task.sched_durationzop_gantt_task.sched_workzop_gantt_task.actual_workr  r!  z::comment-sprint:)	log_levelr   r)  )r.  r4   r  uB   Задача была в архивном спринте <a href="" target="_blank"></a>rS  r3   u   В спринт 'u5   ' не удалось добавить задачу 'r  u   ) проекта 'u\   ). Возможно проект или задача еще не импортированы.r%  u$   ). Задача не найдена.zERR-0044r  uX   ' не удалось добавить задачи из других проектов: u]   . Возможно проекты или задачи еще не импортированы.zERR-0133)	task_listr  u   Запуск спринта "r@  r  rQ  )5rR   r3  rT   rl  _get_all_sprintsr4   r6   r4  r5  r7  rS  r[  r   rG   rQ   rF  r,  r-  r  r	  r8  r*  rD  get_default_statusr   rN  r7   r`   r  r   r   r  r.  r  r  r  r   r)  r  r  r  r  r   r5   r^   r  r:   r;   CmfListHistoryOTRr   do_startr   ra  )r"   ro  r  sprint_folderarchive_foldersprint_logic_typer  r.  
sprint_objexternal_tasks_countissue_id
issue_data	issue_keyissue_projectissue_ext_idr  comment_ext_idcomments                     r#   r  zJiraAPIImport._process_sprints  s   (,,"D+68T8T8TU)* - 
 
  )--"D+68U8U8UV)* . 
 
 #/339T3UU++L,>?? B	< B	<F((** .5ASSVD\SSF++sF+sK0   ,  J$  J#^^64\`\k  xI^  J  J
) 6(9
%"(.
 y L6::ne+L+L LOO'KK,H'K'K'KKOO-3ZZ-D-D
*+1::i+@+@
(-3
*( 6OOO555'?h..-;J*(2(;(N(Nx(X(XJ%%-:J*g(22,6,?,R,RS`,a,a
)!-A BAEJ*>*//D/AAA( 6OOO555LLL#$ O"''  )F[e[j  )F  )Fnqrx  zB  sC  oD  oD  )F  )F  G  G  G(.x(8(>(>(@(@ 2 2$*&u-	 *9 5"&/"8"?"KYYxYY~))'   *    "zz.11 8,0O,B,I,U)u)uhlhs)u)u"("3"7"7~VuVuVu"7"v"v& k&,&7&7~Z^Zi&7&j&jG,-)(l3=?(l (lV`Ve(l (l (l)-"- G#LLw~3ELFFF1X==#dj//UVBVBV&.55d;;;"*11$7777!$'=+>>>O''uF6N u uNWu u\du u+8+@u uERSXEYu u u  ' (    )A-((OOq(OOO--=F6N = =NW= =\d= = = $.& .     $ ))sv s sH\s s s  *" *    OOO--- w8++& ,.4.F.L.LWa.L.b.b , %/$7$J$J6$R$R
!D111&++,^JO,^,^,^___##%%%LLLO11Q611O$$X{;;;;EB	< B	<r%   c                 &    |sd}|sd}| d| d| S )Nu   Не указаноr  u    ➔ r/   )r"   r  	old_value	new_values       r#   _simple_html_diffzJiraAPIImport._simple_html_diff  s8     	.-I 	.-I88Y88Y888r%   c                 d   |dk    rd S 	 |                      |          }n4#  | j                            d| ddd           t          j        cY S xY w|                     |dd|          \  }}|s| j        j        j                            d	          r]t          j
                            | j        j        d	         
          }| j                            d| d| t          j                   n=| j                            d| ddd           t          j        }| xj        dz  c_        |S )Nunknownu6   Не найден пользователь user_id = "u9   ", в дампе, указываем системногоzERR-0045CmfUserr  FrA  default_user_idr8  uA   ", ставим пользователя по умолчанию r%  uc   ", указываем системного , в дампе, указываем системногоr3   )r  r4   r;   gsystem_userr  r  r   rT   rR   r  r5   r^   r  r:   )r"   r  r<   r  rJ  r  s         r#   rC  zJiraAPIImport._get_person  s   i4	!0099DD	!O%%  'b_f  'b  'b  'b&09 & F F F=   ((ue(EE	 	%,2667HII %)--1NO`1a-bb##  %p]d  %p  %p  hn  %p  %p  x  xG#  H  H  H  H))  +Pcj  +P  +P  +P*4y * J J J1$s	     /A	dump_pathc                    |                     d          }|                                rjt          |d          5 }|D ]>}t                              |          }|d         |d         k    r|c cd d d            S ?	 d d d            n# 1 swxY w Y   t          |d          5 }|                    t                              |          dz              d d d            n# 1 swxY w Y   |S )Ngroups.jsonrS  r   r  r	  )rk   rl   rm   rn   r  writedumps)r"   r  r  groups_pathrs   rowr<   s          r#   _dump_groupszJiraAPIImport._dump_groups  s   ((77 	#k3'' #1 # #C**S//CV}F33"

	# # # # # # # # 4## # # # # # # # # # # # # # # +t$$ 	-GGDJJu%%t+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s)   4B	;B		BB$1C!!C%(C%c                    	 |                      |          S # t          $ rC 	 |                    d          }|                                rkt	          |d          5 }|D ]?}t
                              |          }||| j                 k    r|c cd d d            cY S @	 d d d            n# 1 swxY w Y   | j        	                    |          }|r\t	          |d          5 }|
                    t
                              |          dz              d d d            n# 1 swxY w Y   |cY S Y d S #  | j                            d| t          j                   Y Y d S xY ww xY w)N
users.jsonrS  r  r	  uM   Неудалось сдампить пользователя по ключу r%  )r  r8   rk   rl   rm   rn   r  rP   rG   get_user_infor  r  r4   r5   r^   r  )r"   r  r  
users_pathrs   r  r<   r  s           r#   _get_user_infozJiraAPIImport._get_user_info  sX   	V00999 	V 	V 	VV&//==
$$&& +j#.. +!#$ + +C"&**S//C&#dm*<<<'*

	+ + + + + + + + + +  =++ + + + + + + + + + + + + + + !I33G<<	 %j$// =1

9 5 5t ;<<<= = = = = = = = = = = = = = =$$$$% % %V##$}t{$}$}  FM  FU#  V  V  V  V  V  V  V!	Vs    E%9D23B,D2E%B, D2,B0	0D23B0	4/D2#1D D2 D$	$D2'D$	(D2,E%2+E!E%!E%u,   Обработка журнала работr  c                 ,   | j         j                            d           d|d          d|d         d          d}|                     |          D ]}t	                      }d|d	<   | j         |d
<   |                    di                               | j                  r6|                     |d         | j                 |          |d<   |d         |d<   |                    di                               | j                  r+|                     |d         | j                 |          |d<   ||d<   |d         |d<   |d         dz  |d<   |                    dd          |d<   | j         j        j        j	         d|d          |d<   ||d<   d|d<   t          j                            |d                    }|sXt          j        d$i |}|j        j        t          j        |j        j        !          z   |_        |                    d"#           d S )%Nu*   Загружаем журнал работu%   Журнал работ задачи r   r?  rz   r   r@  r  r   r4   r   rA  r   rF  updateAuthorcmf_modified_byr)  started
start_datetimeSpentSecondsr  
time_spentr  r   r   r&  r   r.  r  r   remaining_estimater0  )minutesTr1  r/   )r4   r`   r  _get_issue_worklogsr   rT   rP   rC  r4  r5  rR   CmfTimeTrackerHistoryr  r   datetime	timedeltar  end_dater8  )r"   r  r  r<   worklogtimetracker_historyhistorys          r#   _process_issue_worklogz$JiraAPIImport._process_issue_worklog  sV   ##$PQQQfeElffhXaHbfff//66 	/ 	/G"&&&,4)04-{{8R((,,T];; U484D4DWXEVW[WdEekn4D4o4o#L13F|3T#K0{{>2..224=AA {9=9I9I'R`JabfboJpvy9I9z9z#$56,0)07	0B-078J0Kb0P-*1++i*D*D'/3/E/L/X,k,k\cdh\i,k,k)5< 1289 45266>QRZ>[6\\G / 6MM9LMM#*#5#;h>P$+$6$<?> ?> ?> $> ...+	/ 	/r%   c                    |                     d          D ]}|                    d          }|                    |j                   |                                 |                    |           |                    dg           }d |D             }|s
|dgz   |d<   |d                             dd          d         }|d	| gz   |d<   d
S )uF   
        Конвертирует "Фрагмент кода"
        prerM   r  c                 <    g | ]}|                     d           |S )zcode-)r  )r   class_s     r#   r   z/JiraAPIImport._convert_code.<locals>.<listcomp>  s+    WWWVF<M<Mg<V<VW&WWWr%   zlanguage-noner   -r3   z	language-N)r  r  extendcontentsclearr   rT   r   )r"   r|  r  code_tag	class_tag
code_classrM   s          r#   _convert_codezJiraAPIImport._convert_code  s     %%e,, 	@ 	@C ((00HOOCL)))IIKKKJJx   ,,IWWyWWWJ @(O+<<G!!}**32215(,>,>,>+??G	@ 	@r%   c                    |s|S t          |d          }|                     ||           |                     |||           |                     |           d                    d |j        j        D                       }|S )Nlxmlr   c                 ,    g | ]}t          |          S r/   r-   )r   cs     r#   r   z/JiraAPIImport._convert_text.<locals>.<listcomp>
  s    @@@1A@@@r%   )r   r  r  r  r   r   children)r"   r   r<   datar|  s        r#   _convert_textzJiraAPIImport._convert_text   s     	K!$//	y#...IsD1119%%%ww@@	(?@@@AAr%   u8   Обработка комментариев задачиc                    d|d          d|d         d          d}d}d}|                      |          D ]}|dz  }| j        j        j        j         d	|d
          }t          j                            |          }|r(|j        s!| j                            d| d|           s|s$t                              ||| j        d          }n|	                    dg           |                    di                               | j
                  r9|                     |d         | j
                 |          |_        |j        |_        |                    di                               | j
                  r-|                     |d         | j
                 |          |_        |d         |_        |d         |_        ||_        |                     |d         ||          |_        ||_        |                    d          r|dz  }|d         d         dk    rNt          j                            |d         d                   }	|j                            |	           d|_        n8| j                            d|d          d|           | xj        dz  c_        m|                    d          rTt5          t7          d |d                   i           }
|
                    di                               d d!          |_        |j        r|                    d"           | j                            d#d$           | j                            d%| d&|            d S )'Nu$   Комментарий задачи r   r?  rz   r   r@  r   r3   r&  r   r0  uN   Комментарий уже есть, и правился в системе zERR-0046rA  Trj  z**r   r  r   r   r   
visibilityrJ  r  r   r  uL   Ошибка обработки приватного комментария zERR-0047
propertiesc                 4    |                      d          dk    S )Nr   zsd.public.commentr   )ps    r#   r   z7JiraAPIImport._process_issue_comments.<locals>.<lambda>:  s    !%%,,2E"E r%   internalFr1  r  rQ  u   Обработано u:    комментариев, из них приватных ) _get_issue_commentsr4   r4  r5  rR   r  rT   rS  r;   r   rP   rC  r   rF  r  r   r   r)  r  r   r  r  rG  r   r  r:   r   r   r	  r8  ra  r5   )r"   r  r  r<   cntprivate_cntr  r.  cmf_commentr  sd_public_comments              r#   _process_issue_commentsz%JiraAPIImport._process_issue_comments  s   eU5\eeuXW`Gaeee//66 1	= 1	=G1HC.5ATTWT]TTF +//v/>>K ;#> ))  +I  |G  +I  +I*4$ * @ @ @ 0$//tFW[Wfx|/}}''///{{8R((,,T];; ?)-)9)9'(:KDM:Z`c)9)d)d&(3(>%{{>2..224=AA p.2.>.>w~?VW[Wd?ekn.>.o.o+*1)*<K')0);K& "&K#11'.2I;X]^^K*1K'{{<(( 
q <(0F::!044',:OPW:X4YYD*11$777*.K''O--  /U  ~E  FR  ~S  /U  /U.8d . D D DOOq(OO {{<(( `$(EE-  % %! '8&;&;GR&H&H&L&LZY^&_&_#% 3  T 222O$$Y<<<<  AC  A  As~  A  A  	B  	B  	B  	B  	Br%   c                    t           j                            dd|gg dgddg          }|rD|j        r|j        r6|j        rdnd}| j        j                            d	| d
| d| d           d S |s8t                               || j        d          }|                    d           t           j	        
                    dd|gdg dg dggd          }|r(| j        j                            d	| d
| d           d S t           j	                            |          D ]}|                    d           |d         }ddddd}d}	d}
t          j        dt          j                  }|                    |          D ]}|                                \  }}}}}|                                }|r[d                    d |                    d           D                                                       }|                    dd!          }n|}|t-          |          |||d"}|	d#z  }	|d$k    r|
d#z  }
t           	                    |||||                    |d          | j        d|%          }|                    d           t          j        d&t          j                  }|                    |          }|r}|                                \  }}|                                |_        |rDd!                    d' |                    d           D                                                       }||_        |	|_        |
|_        ||_        |                    d           d S )(Nr)  r=  r  Tr  )r   r  rz   u   Удаленu   Изменен   Задача u   . Чек-лист . uf    пользователем. Изменения из импорта не будут применены)r)  r4   rS  r1  r  )rS  r=  Fra  r  u   . Пункты изменены пользователем. Изменения из импорта не будут примененыr  rY  r   r  r  r  CANCEL)r  ~r  xr   z{(?P<status>[x~+-])(?P<mandatory>!)?\s*(?:\[(?P<custom_status>[^\]]+)\]\s*)?(?P<name>[^\n]*)(?P<description>(?:\n>[^\n]*)+)?r	  c              3   B   K   | ]}||                                 V  d S r   r  r   lines     r#   r  z3JiraAPIImport._process_checklist.<locals>.<genexpr>  sD       ( ((JJLL( ( ( ( ( (r%   z
>r  )r   	mandatorycustom_statusr   r   r3   r  )
cache_taskr)  r   r   r   r4   rS  r  z6#\s*(?P<header>[^\n]*)(?P<description>(?:\n>[^\n]*)+)?c              3   B   K   | ]}||                                 V  d S r   r  r  s     r#   r  z3JiraAPIImport._process_checklist.<locals>.<genexpr>  sD       ' ''JJLL' ' ' ' ' 'r%   )rR   CmfChecklistrT   rS  r  r4   r`   r  r8  CmfChecklistItemr  r   rc  r  compileMfinditerr  r  r   r   r  boolr  r   r   checklist_items_countchecklist_items_done_countr  )r"   checklist_datarH  	checklist
action_msgmodified_itemr  	items_strstatus_mappingitems_countitems_done_countitems_patternmatchr   r  r  r   r   r   	item_dataheader_patternheaders                         r#   _process_checklistz JiraAPIImport._process_checklistF  ss   '++3	**** !!? , 
 
	  	-i7 	-9;P 	-+4+@VFVJO"**]	 ] ]Y ] ]* ] ] ]   F 	-++ ? $ ,  I
 NNtN,,,/443	*333... ! 5 

 

  	O"**]	 ] ]Y ] ] ]   F+00	0BB 	/ 	/DKKK...."7+	 	
 
 
0 D
 
 #++I66 #	( #	(EBG,,..?FI}dK::<<D #"ii ( ( + 1 1% 8 8( ( (   %''	 
 #**455" !!)__!.* I 1K}} A% **$ %))&&99? $ ) + 	 	D II$I''''0D
 

 %%i00 		)"',,..FK#\\^^IN !hh ' ' + 1 1% 8 8' ' '   %''	 
 )IN*5	'/?	,$2	!4(((((r%   u0   Обработка плагинов задачиc                     |                      |          D ],}|d         dk    r|d         r|                     ||           -d S )Nr   z&com.railsware.SmartChecklist.checklistr   )_get_issue_propertiesr   )r"   r  rH  issue_propertys       r#   _process_propertiesz!JiraAPIImport._process_properties  sa    "88?? 	C 	CNe$(PPPUcdkUlP''	BBB	C 	Cr%   c                    g }|d                              dg           |d                              dg           z   }|D ]}| j        j        j        j         d|d          }t          j                             |          }|s0| j                            d| dd	
           | xj        dz  c_        |                    |           ||_	        d S )Nrz   fixVersionsversions
::version:r   r0  u!   Не найдена версия zERR-0050r7  r  r3   )
rT   r4   r4  r5  rR   r7  r;   r:   r   fix_versions)r"   r  rH  r)  r'  versionr.  version_objs           r#   _process_issue_versionsz%JiraAPIImport._process_issue_versions  s    ?&&}b99E(O<O<OPZ\^<_<__ 
	- 
	-G.5A\\WUY]\\F .,,F,;;K %))AAA& *   
 1$,,,,!-	r%   c                 j   g }|d                              dg           }|D ]}| j        j        j        j         d|d          }t          j                             |          }|s0| j                            d| dd	           | xj        d
z  c_        |                    |           ||_	        d S )Nrz   
componentsr&  r   r0  u%   Не найден компонент zERR-0051CmfComponentr  r3   )
rT   r4   r4  r5  rR   r/  r;   r:   r   r.  )r"   r  rH  issue_componentsr.  	componentr.  comp_objs           r#   _process_issue_componentsz'JiraAPIImport._process_issue_components  s    8_((r::
# 
	. 
	.I.5AVVYt_VVF*..f.==H %))GIGG+ *   
 1$##H----/	r%   c           	      F   ddl m} g }|d                             dg           }|D ]}|                    dd                              dd          } ||d	d
          }	 dddd| dgdd|gddd| dgg}t          j                            |          }	|	s/t                              |          }	|	                                 |                    |	           # t          $ r-}
| j	        
                    d| d|
 d|           Y d }
~
d }
~
ww xY w||_        d S )Nr   r  rz   r  r  r  r  r   r  Tr  r  r  r  r@  r  r   r%  r  u+   Не удалось создать тег 'r  zERR-0125r  )r  r  rT   r  rR   r  r8  r   r8   r4   r;   r  )r"   r  rH  r  r  r  labelr  filter_r  r  s              r#   _process_issue_tagsz!JiraAPIImport._process_issue_tags  s   ******x$$Xr22 	 	EMM#s++33C<<EHU$FFFEg}5}}}5We,g}5}}}5	 m''w'77  --U-33CHHJJJC       ))Q%QQCQQ)! *         	s   "A=C  
D*#DDu.   Обработка истории задачиc                    d|d          d|d         d          d}d | j         t          j        j                 d         D             }|d         d	         D ]}| j        j        j        j         d
|d          }d }|                    d          r)|                     |d         | j	                 |          }n"| j        j
                            d|            |d         |d|d}|d         D ]n}	|	d         }
|                    |	d                   }|r
|d         rd}
|                     |
|	d         |	d                   }d|vr||d<   ^|d          d| |d<   ot          j                            |g d          }|s"t                              | j        d|          }|D ]}t          ||||                    |j        r|                    d           d S )Nu   История задачи r   r?  rz   r   r@  c                      i | ]}|d          |S )r   r/   )r   r   s     r#   r;  z2JiraAPIImport._process_history.<locals>.<dictcomp>	  s    sssU5>5sssr%   	changelog	historiesz	::historyr   r   rA  u   Аудит без автора r   r3   )r   r   r  r)  r   r   r   r   
fromStringtoStringr   z<br>)r   r   r  r)  r   r  T)r4   rS  r.  r1  )r  rR   r  r   r4   r4  r5  rT   rC  rP   r`   r  r  r  r  r	  r8  )r"   r  rH  r<   jira_map_fieldsr  r.  r   r  r  r  r   diffhistory_commentr   s                  r#   _process_historyzJiraAPIImport._process_history  s]   ]U5\]]uXy?Y]]]ssdmFNLg>hiq>rsss[)+6 "	7 "	7G.5A[[GTXM[[FJ{{8$$ \!--gh.?.NTW-XX

&../ZQX/Z/Z[[[)0);:deqz{{G( 
0 
0w-'++DM:: !U=1 ! G--gtL7I4PZK[\\((&*GFOO)0 '0 '0)-'0 '0GFOO$/33   4 	 	O # u"("3"3t`dms"3"t"t < <gcl;;;;) 7$$$666E"	7 "	7r%   u]   Обработка связей с документами Wiki и веб-страницамиc                    g }|                     dg           D ]U}| j        j        j        j         d|d          }|d         }|d         }|st          j                             |          }|s#t                              ||| j        d          }|j        r7|d	         |_        |d
         |_        ||_	        |
                    d           |d         dk    r|                     d          dk    rvt          j        d|d
                   }	|	rY|	                    d          }
t          j                             ddd|
 g          }|s;|                    |           d|d<   W||_        d S )Nremotelinksr&  r   objectapplicationr0  Trj  r   rT  r1  rJ  zcom.atlassian.confluencerelationshipz	Wiki Pagez$/pages/viewpage.action\?pageId=(\d+)r3   r.  r  r  r%  rQ  )rT   r4   r4  r5  rR   CmfLinkrS  r   rT  r  r8  r  r  r  CmfDocumentr   local_links)r"   r  rH  rI  
remotelinkremotelink_ext_idremotelink_objremotelink_applinkr  page_iddocs               r#   _process_remotelinksz"JiraAPIImport._process_remotelinks.  s   ))M266  	3  	3J#'?#9#@#L b bPZ[_P` b b'1N'6N! 3~))1B)CC !>>(0#'?(,	 *  D ' 0 .w 7DI-e4DH+5D(II$I///v&*DDDNN>22kAA 	"I>Z_K`aa 3#kk!nnG ,006?QX??8[0\\C ! &&s+++.2J{+ +	r%   c                    i }|                      d          }|rE|d                             |d                   r$|d                             |d                   |d<   |                      d          }|rE|d                             |d                   r$|d                             |d                   |d<   |sd S 	 |                    d |D                        |D ]#}t          |j        j        |||                    $|j        j        j        r|j                            d	           d S d S # t          $ r8 | j	        
                    d
| d| ddd           | xj        dz  c_        Y d S w xY w)Nz1com.atlassian.jpo:jpo-custom-field-baseline-startrz   r   sched_start_datez/com.atlassian.jpo:jpo-custom-field-baseline-endsched_finish_datec                     g | ]}d | S )zop_gantt_task.r/   r   rs   s     r#   r   z0JiraAPIImport._process_gantt.<locals>.<listcomp>k  s!    "G"G"GA#7A#7#7"G"G"Gr%   Tr1  u8   Не удалось импортировать Гант u    для задачи 'r  zERR-0112CmfGanttTaskr  r3   )r   rT   r   r  op_gantt_taskr   r	  r8  r8   r4   r;   r:   )r"   r  rH  ganttbaseline_start_fieldbaseline_end_fieldr   s          r#   _process_ganttzJiraAPIImport._process_ganttV  s     $66? 
  
   	XE(O$7$78LT8R$S$S 	X(-h(;(;<PQU<V(W(WE$% "44=
 
  	W%/"5"56H6N"O"O 	W).x)<)<=OPT=U)V)VE%& 	F	!!!"G"G"G"G"GHHH L L	/5ueElKKKK&,7 ?',,,>>>>>? ? 	! 	! 	!O%%t5tthqttt' &   
 OOq OOOOO	!s    A1D5 5>E76E7c                    | j         j        j        j         d|d          }t          j                            |dg          }|s$t                              |d|| j         d          }| j                            | j        j        d|d	                    }d
| d| d|_	        |j
        r|                    d           d S d S )Nz
::comment:r   r   r  r  T)r)  r  r.  r4   rS  z/browse/r   u<   Задача импортирована из Jira: <a href="r  r  r1  )r4   r4  r5  rR   r  rT   rG   
url_joinerrT  r   r	  r8  )r"   rH  r  r  r  r  s         r#   _add_comment_link_to_issuez(JiraAPIImport._add_comment_link_to_issuey  s    O29E^^QVW[Q\^^#''!8 ( 
 
  	'' %? $ (  G y##DIM3LeEl3L3LMM;; ;04; ; ; 	  	+LLTL*****	+ 	+r%   u   Обработка задачиc           	      h   d}|d         }d| d|d         d          d}|                      || j        t          j        j                 d                   }||d<   | j        |d	<   d
|d<   | j        j        j        j         d|d          |d<   ||d<   |d         	                    d          r| j        j        j        j         d|d         	                    d          d          }t          j
        	                    |          |d<   |d         sI| j                            d|d         	                    d           dd           | xj        dz  c_        |                     d          }	|	r$|d         	                    |	d                   |d<   |d         	                    d          r|                     |d         	                    d          	                    | j                  |          |d<   |d         s| xj        dz  c_        | j                            d|d         	                    d           dd           | j                            d|d         	                    d          	                    | j                   t"          j        d
d
           |d         	                    d           r|                     |d         	                    d           	                    | j                  |          |d!<   |d!         s| xj        dz  c_        | j                            d"|d         	                    d            dd           | j                            d"|d         	                    d           	                    | j                   t"          j        d
d
           |d         	                    d#          r|                     |d         	                    d#          	                    | j                  |          |d$<   |d$         s| xj        dz  c_        | j                            d%|d         	                    d#           dd           | j                            d%|d         	                    d#          	                    | j                   t"          j        d
d
           nd&|d$<   |d         d'         d         |d         d(         	                    d)          }
|
r|d         d(         d          d* }n}d| j        j        j        j         d| d}t          j        	                    dd+d,| d,g-          |d.<   |j        j        	                    d/          }| j        j        r|
r|j        j        	                    d          }|                     |          }t3          t5          fd0|          d&          }| j        j        j        j         d|d          }t          j        	                    dd1|g-          }n|d2         }|d3         }|	                    |          }| j        j        j        j         d| }t          j        	                    dd+| d4g-          }nt3          t5          fd5|d6                   d&          }|r	|d7         }n|d8         d2         }t9          j        |          }| j        j        j        j         d9| }t          j        	                    dd1|g-          }||d:<   | j        j        j        j         d|j         d|d         d;         d          }t          j        	                    dd1|gd<g=          |d;<   |d;         j         |d><   |d         	                    d?          r| j        j        j        j         d|d         d?         d          }t          j!        	                    |          |d?<   |d?         sI| j                            d@|d         	                    d?           dAd           | xj        dz  c_        |"                    dBd&          }|r|dC         dD         }| j        j#        $                    dE| dF|            tK          j&        | j        t          j        |ddG|d         gH          \  }}|| '                    ||          z  }|j(        r|)                    g dI           | *                    |||          |_+        |pg }|D ]}|j,        -                    |           | .                    ||           | /                    ||           | 0                    ||           | 1                    ||           | 2                    ||           |j3        dJk    rOt          j4        	                    |dKd
dLgM          }||_5        |j6        sd
|_6        |7                    d
N           |d         dO         |_8        | 9                    ||           ||_        |j:        r|7                    d
N           tw                       | <                    ||           | =                    ||           n#| j        j#        >                    d| dP           | ?                    ||           |d         dQ         dR         r| @                    ||           | jA        	                    dS          r| B                    ||           tw                       | j        C                    dTdU           t          |dV                   E                    dW          }|F                                r|G                                 |S )Xu   
        Общая логика обработки которая потом разделяется на задачи и эпики
        r   r   r  r  rz   r   r  r)  rE  Tapprovedr&  r   r.  rM   securityr0  perm_security_levelu:   Не найден уровень безопасности zERR-0048r  r  r3   zStory Pointsr  reporterrA  rF  uB   Не найден автор(постановщик) задачи zERR-0049)	anonymousexc_infocreatorr   u>   Не найден создатель(автор) задачи r  rE  u6   Не найден исполнитель задачи N	issuetyper  r  rC  r  r  r%  r[  rJ  c                 0    | d         d         d         v S )Nr@  r   rA  r/   wfissuetype_ids    r#   r   z.JiraAPIImport._process_issue.<locals>.<lambda>  s    <26F3G3J<3X#X r%   r=  defaultWorkflowissueTypeMappingsr  c                     | d         v S )NrA  r/   rj  s    r#   r   z.JiraAPIImport._process_issue.<locals>.<lambda>  s    |r,/?? r%   rK  r   r  rV  rD  r   r3  r  r  r  u'   Не найдена резолюция zERR-0116r   renderedFieldsr   u4   Создание/обновление задачи 'z': r   r/  )
r   r)  r.  r  rI  logic_prefixr*  r   rG  r  z	task.epicr  rN  r*  r#  r  rz   r1  r   u[    была изменена пользователем и не будет обновленаr  totaltimeTrackingEnabledr  rQ  rN  .processing)Hr  r  rR   r  r   rU   r4   r4  r5  rT   CmfSecurityLevelr;   r:   r   rC  rP   r5   r^   ERRORrl  r  r   rG   rQ   r`  r   r   r_  r   rd  r   rb  r3  r  popr`   r  r   r6  r{  rS  r   r  r   r  r   r,  r3  r7  r\  rQ  rq  r3  r*  rN  r8  r   rK  r	  r7   rA  r_  r  r$  r  rX   r  ra  r   rk   rl   unlink) r"   r  r  sprintsrs  r  r<   normalized_issuer.  story_p_fieldsimplified_projectissuetype_ext_idr  r  rq  rt  ru  rv  rD  default_workflowissue_type_mappingsworkflow_nameru  r  r  
issue_textrH  r  r  r  	flag_filerl  s                                   @r#   r  zJiraAPIImport._process_issue  s2   
 %L	IiIIE(OI,FIII  ..udmFND_6`ai6jkk%,"'+'<$'+$(,(>(E(Q%b%bUZ[_U`%b%b"#, ?z** 	%.5AllU8_EXEXYcEdEdeiEjllF6<6M6Q6QY_6Q6`6`23#$9: %))  +Iglmugvgzgz  |F  hG  hG  +I  +I*4y * J J J1$//?? 	^5:8_5H5HW[I\5]5]12 ?z** 	M,0,<,<U8_=P=PQ[=\=\=`=`aean=o=oux,<,y,y[)#K0 M1$))  +Qotu}o~  pC  pC  DN  pO  pO  +Q  +Q*4y * J J J##  %^inowixi|i|  ~H  jI  jI  jM  jM  NR  N[  j\  j\  %^  %^  `g  `m  y}  HL#  M  M  M ?y)) 	H-1-=-=eHo>Q>QR[>\>\>`>`aean>o>oux-=-y-y\*#L1 H1$))  +Lkpqykzk~k~  @I  lJ  lJ  +L  +L*4y * J J J##  %Yejksetexex  zC  fD  fD  fH  fH  IM  IV  fW  fW  %Y  %Y  [b  [h  tx  CG#  H  H  H ?z** 	3.2.>.>uX?R?RS]?^?^?b?bcgcp?q?qwz.>.{.{]+#M2 A1$))  +Echiqcrcvcv  xB  dC  dC  +E  +E*4y * J J J##  %R]bck]l]p]pq{]|]|  ^A  ^A  BF  BO  ^P  ^P  %R  %R  T[  Ta  mq  |@#  A  A  A.2]+X{3D9"8_Y7;;LII 	,"'/)"<T"BSS\SS+b!7!>!JbbN^bbb)/)<)@)@f&>*;&>&>&>? *A *
 *
&  '6<@@AWXX9? !	W! f$4:>>tDD
!%!G!G
!S!S $XXXX&  ! ! &*_%;%B%N"g"gR_`dRe"g"g!-11(C9Y1ZZ#78I#J &:;N&O# 3 7 7FV W W%)_%;%B%N"a"aR_"a"a!-11(FLcLcLc9d1ee ????(4   M  P -f 5 4V <=N O!,!:=!I!I!%!7!>!JjjVhjjO)--h_5U-VVH'/$?18DxxxxW\]eWfgoWpquWvxx%+%5%9%9c=1!? &: &
 &
" 1A0J0V,-?|,, 		%#'?#9#@#L u uPUV^P_`lPmnrPs u u-3-A-E-EM^-E-_-_\*#L1 %))aeHo>Q>QR^>_>_aa& *   
 1$%))&$77
 	@/0?J##${[d${${iy${${|||+DOV^ $(8(BC
 
 
	1 	$++Iu===$ F	!! # # #    "//
IuMMIN mG! / /&&v.... ((	::: **5)<<< $$UI666 y111 %%eY777 %44%/33 '##'12	  4     )5	%#7 87;L4 %%$%777 */x9I)JI& ""9e444(-I%# 14000LLL !!%333 ++Iu====O"** G	  G  G  G  
 	  	222 ?9%g. 	;((E::: $(()>?? 	:''	5999  555 |,--66}EE	 	r%   u&   Обработка всех задачc                     | j                                         }|D ]3}| j                                        r d S |                     |           4d S r   )rG   r   r4   r6   r  )r"   r  r  s      r#   _process_issueszJiraAPIImport._process_issues{  sb    %%'' 	' 	'E((** &&&&	' 	'r%   u3   Обработка связей всех задачc                    |s!| j         j                            d           dS t          t	          d | j                                                  d          }t          j                    }| 	                                D ]1}| 
                    |d         |                     |d                             D ]}| j                                         r  dS |d                             d          }|r!|d                             |d                   nd}| j         j        j        j         d|d          }|r\| j         j        j        j         d|d          }	| j                            |	g           }
|
                    |           |
| j        |	<   n<|r:| j                            |g           }
|
                    |           |
| j        |<   |d                             d	g           }|D ]}| j         j        j        j         d|d          }d
|v rI||d         d|d<   | j         j        j        j         d|d
         d          |d
         d<   || j        |<   pd|v rH||d         d|d
<   | j         j        j        j         d|d         d          |d         d<   || j        |<   3t          j                    |z
  }| j         j                            d|dd           | j                             dt+          | j                              t          j                    }t,          j                            d          }t,          j                            d          }| j        D ]T}	| j                                         r dS t,          j                            ddd|	gdd|	ggddg          }|s$| j         j                            d|	 d           q| j        |	         D ]}t,          j                            |ddg          }|s$| j         j                            d| d           L	 |j        |j        k    rt,          j                            g ddd d!|gd"d!|ggd d!|gd"d!|gggg#          }|D ]E}||_        |                    d$%           | j         j                            d&| d'| d(           F||_        |                    d$%           n| j         j                            d)| d*| d+           |j         d,| }t,          j                            |-          }|s:t,                              ||||| j         .          }|                    d$%           # t@          $ r?}| j         !                    d/| d0| d1d2d34           | xj"        d5z  c_"        Y d}~d}~ww xY wVtG                       t          j                    |z
  }| j         j                            d6|dd           d7d8dd9d:}| j         j                            d;t+          | j        $                                                      t          j                    }| j        %                                D ]\  }}| j                                         r dS 	 | j         j        j        j         d|d<         d          }|                    |d<         d=                   }|r!t,          j                            |          }n t,          j                            |-          }|s/t,          j                            d=d|d<         d=         g#          }|sjt,                              || j         |d<         d=         >          }|d<         d?         |_&        |d<         d@         |_'        |                    d$%           t,          j                            |d         d         dg          }|s@| j         j                            dA|d         d          dB|d         d          dC           t,          j                            |d
         d         dg          } | s@| j         j                            dD|d
         d          dB|d
         d          dC           +| j         j        j        j         d|d          }!t,          j                            |!dEg          }|s"t,                              ||!| j         F          }|j        j(        d7k    r|j        | k    s| j        |k    rjt,          j                            d          |_        |j        | k    r| }|}n| j        |k    r|}| }| j         j                            d&| d'| d(           ||_)        | |_*        |                    d$%           H#  | xj"        d5z  c_"        | j         !                    dG|d<          dH|d         d          dB|d         d          dI|d
         d          dB|d
         d          dJdKd34           Y xY wtG                       t          j                    |z
  }"| j         j                            dL|"dd           t          j                    |z
  }#| j         j                            dM|#dd           dS )NuD   
        Постобработка связей задач
        uF   Отключена обработка связей всех задачNc                 \    |                      di                                d          dk    S )Nr   r   z'com.pyxis.greenhopper.jira:gh-epic-linkr   )rs   s    r#   r   z2JiraAPIImport._process_relations.<locals>.<lambda>  s(    !%%"--11(;;?hh r%   r   r   rz   r)  r&  
issuelinksr   r   )r.  r   r   r.  uD   Анализ связей всех задач выполнен за r      сек.u   Подзадачи: zsystem.additional_parentrL   zsystem.linkr  r   rM   r  r  uP   Не удалось связать задачи, возможно задача 'u#   ' не попала в импортparent_taskr  )relation_type.coder=  system.finish:finishin_linkr=  out_linkr%  Tr1  u,   Тип связи родительской 'u$   ' и дочерней задачи 'ud   ' изменен с 'Блокируется/Блокирует (ОО)' на 'Относится к'.u   У задачи 'u3   ' эпик(родительская задача) 'uo   ' из другого проекта. Создана связь 'Дополнительный родитель'z:additional_parent:r0  )r  r  relation_typer.  r4   u<   Не удалось создать связь задачи 'u&   ' с дочерней задачей 'r  zERR-0114r  r  r3   uG   Создание связей подзадач выполнено за r  zsystem.duplicatezsystem.clone)Blocks	DuplicateRelatesClonersu   Связи: rJ  r   )r.  r4   r   inwardoutwardu=   Не удалось найти входящую задачу r  u   ). Возможно задача не попала в импорт или находится в проекте, который еще не импортирован.u?   Не удалось найти исходящую задачу r  )r  r.  r4   u.   Не удалось создать связь z. in_link: z), out_link: r  zERR-0052uA   Создание связей задач выполнено за uL   Обработка связей всех задач выполнена за )+r4   r`   r  r   r   rt   r~   r  r  r   r   r  r6   rT   r4  r5  r[   r   rZ   r  r5   r   rR   CmfRelationTyper  r  CmfRelationOptionr   r  r8  r  r.  r8   r;   r:   r7   r   r   in_type_nameout_type_namerM   r  r  )$r"   r  epic_link_fieldtotal_t1r  r  issue_parentissue_epic_keyr.  parent_ext_id	sub_tasksissue_links
issue_linklink_ext_idanalysis_t2subtasks_t1additional_parent_relationlink_relationr  child_ext_id
child_task	relationsrelation_optionrelation_ext_idr  subtasks_t2	map_namesrelations_t1issue_relationrelation_coder  r  r  
rel_ext_idrelations_t2total_t2s$                                       r#   _process_relationsz JiraAPIImport._process_relations  s   
  	O"**+stttF hh ''))  
 
 >##))++ 	G 	GG//TE^E^_fgk_lEmEm/nn G G?,,.. FFF$X228<<O^!hx!4!4_T5J!K!K!Kdh O29EVVtVV 	>'+'='D'P$h$hT`aeTf$h$hM $ 1 1- D DI$$V,,,3<DM-00# > $ 1 1." E EI$$V,,,4=DM.1 $Ho11,CC"- 	G 	GJ%)_%;%B%N"d"dR\]aRb"d"dK$
22@FuUZ|5\5\
>2AEAWA^Aj  ?P  ?Pnx  zG  oH  IM  oN  ?P  ?P
=1(;<F,[99':55?EeTYl4[4[
=1BF/BXB_Bk  @R  @Roy  {I  pJ  KO  pP  @R  @R
>28<<F,[9	G+G> n&&1##lS^llll	
 	
 	
 	G3t}3E3EGGHHHn&&%+%;%?%?E_%?%`%`".222FF!] W	) W	)M((**  .,,t]3T=1
 !), -  K  &..i6Ci i i    $m < D) D)#^//')95 0  
 " O*22l:Fl l l   8) #*j.@@@$*$<$A$A S S S$(&/k%BZQTV`Da$b&/j%AJPSU`Ca$b!"$ %B 	% 	%	 09  O<IO9+00T0BBB O2::!F{ !F !FEO!F !F !F    2=
."D9999.66i
 i iP[i i i  
 .9-?*b*bT`*b*b*0*B*F*Fo*F*^*^. C.4.F.F(2)4.H'6+/? /G / /O ,00T0BBB  ) ) )O--MWb M M?IM M M"!*	 .    OOq(OOOOOOO){D)L 	n&&4##oVaoooo	
 	
 	
  6"4 - . 	
 	##$U3t7K7P7P7R7R3S3S$U$UVVV~''/3/C/I/I/K/K Y	 Y	+O^((** V O29EggX^I_`dIegg )nV.DV.L M M  N$*$:$>$>M$>$R$RMM$*$:$>$>f$>$M$MM$ v$*$:$>$>vtUcdjUklrUsFt$>$u$uM$ 9$*$:$:&UYUd@Nv@VW]@^ %; %` %`M1?1G1QM.2@2H2SM/!&&4&888 .,,).9(C)? -    O*22}).9%@} }DRSaDbckDl} } }  
 !>--)-8B)? .     O*22})-8?} }CQR_C`aiCj} } }  
  $ 6 = Icc^\`Macc
"(":">">%01 #? # # ' &,&>&>&3)#'? '? ' 'O $16:PPP ,88H<PT[<[<[ 5;4J4N4NTa4N4b4bO1*h66&.%,

!-88&-%-
O*22~{ ~ ~=G~ ~ ~   +2'+3($$$66661$))t^TZE[ t t .~ >u Et tIWXfIghpIqt t!/!>u!Et tIWXeIfgoIpt t t & *      	~'',6##jP\jjjj	
 	
 	
 >##h.##q[cqqqq	
 	
 	
 	
 	
s5   D;U??
W	4WW1Fg	A.g9DgA5iu)   Обработка компонентовc                    t           j                            |dddg          }|sJ d|             |                     |d                   D ]}	 |j        sd|_        |                                 | j                                        r dS | j        j        j        j	         d|d          }t           j
                            |g d	
          }|s"t           
                    || j        d          }||_        |d         |_        ||_        |                    d          r7|                     |d         | j                 d|d                    |_        nd|_        |d         dk    r|j        |_        nE|d         dk    r|j        |_        n,|d         dk    r|j        |_        n|d         dk    rd|_        |j        r|j        r|                    d           |                    dd          rs|j        s |                                 d|j        _        |j        j        r@|                    dd          |j        _        |j        j                            d           t5                       | j        xj        dz  c_        H#  t9                       | xj        dz  c_        | j                            d| dd           Y xY wdS )uG  https://docs.atlassian.com/software/jira/docs/api/REST/1000.824.0/#api/2/project-getProjectComponents
        Пока грузим как списки, после доработки будут отдельные обекты

        Args:
            project_info (dict): проект из джиры как есть
        r.  TrN  rr  uV   Данный тип проекта не поддерживает компоненты r   Nr&  )descr_documentdefault_ownerdefault_responsiblerS  r*  r)  r  rY  r   r?  u   Компонент rA  assigneeTypePROJECT_DEFAULTPROJECT_LEADCOMPONENT_LEAD
UNASSIGNEDr1  r   r   r3   u3   Ошибка загрузки компонента ERR-0053r/  r  )rR   r3  rT   _get_project_componentsrN  r8  r4   r6   r4  r5  r/  r)  r   r*  rC  rP   r  rE  r  rF  rS  r	  r  create_descr_document
text_draftr   r7   r   r9   r:   r;   )r"   ro  r  r*  r1  r.  components_lists          r#   r  z!JiraAPIImport._process_components  s    &**{\jn  yN  xO*  P  P  	D  	D  D  vB  D  D  	D  	D  	D55l46HII 2	O 2	OI1O"6 '6:K3$$&&&?,,..  O29EZZSWZZ"("5"9"9 Qj Qj Qj"9 #k #k ' {&,&9&9TXTcuy&9&z&zO)4&'0'8$.9+==(( 9484D4D!&)$-8E)F2CEE 5E 5 5O11
 59O1^,0AAA:E:QO77~..@@:E:OO77~.2BBB:I:WO77~.,>>:>O7"2 ;7Q ;#((T(:::==33 T*9 N'==???IM6F&5E TDMMMR_acDdDd6A'6<AAdASSS55:555O1$))*k`i*k*k*4~ * O O O O Oc2	O 2	Os   ;JHJA Ku   Обработка версийc                    t           j                            d|dg          }t           j                            d|dg          }|                     |d                   D ]}	 | j                                        r d S | j        j        j        j         d|d          }t           j                            |g d	          }|s"t                               || j        d
          }|j	        rgt           j
                            d          |_        ||_        |d         |_        |                    dd          |_        |                    d          |_        |                    d          |_        |j        j        |_        ||_        |j        r|                    d
           |d         r||_        n||_        |j        j        s'd
|j        _        |j                            d
           |j        r;|d         s|d         r|                    d           n|                    d           |j        r|                    d
           n#| j        j                            d| d           t9                       | j        xj        dz  c_        ?#  t=                       | xj        dz  c_        | j                             d| dd           Y xY wd S )NreleaserN  )r#  r*  rz   r$  r   rN  r(  )
r.  r   r)  r[  r   r,  r-  rD  r*  r   r  TrY  zlist.release:defaultrL   r   r   r   r'  releaseDater1  archivedreleasedr  r  u   Релиз |    был изменен пользователем. Изменения из импорта не будут примененыr3   u+   Ошибка загрузки версии r  r7  r  )!rR   r3  rT   _get_project_versionsr4   r6   r4  r5  r7  rS  rl  r[  r)  r   r   r,  r-  rX  default_release_workflowrD  r  r	  r8  r*  rN  set_default_statusr`   r  r7   r   r9   r:   r;   )r"   ro  r  release_folderr  r*  r.  version_lists           r#   r  zJiraAPIImport._process_versions  s`   )--#)* . 
 

  )--#)* . 
 

 11\$=O1PP ?	J ?	JG>J?,,.. FF O29E``QXY]Q^``%~11!    2     $ s#)>>DOmq>#r#rL/  .4.A.E.EKa.E.b.bL+*5L'(/L%(/M2(F(FL%3:;;{3K3KL018]1K1KL.,7,A,ZL)3:L0#. <$))d);;;z* B3A003A0'3G HGK0D$055$5GGG#, D":. D'*2E D(;;HEEEE(;;FCCC#. <$))d);;;O*22el e e e  
 55:555J1$))*aX_*a*a*4y * J J J J J}?	J ?	Js   'J"HJ""A K%u*   Обработка JQL в фильтрахc           
         t          |           }t          | j        j        j        j                  }t          j                    }t          j        	                    g dg dgg d          }|D ]:}d|j
         d|j         d}|j        s|j        j                            d          }|s|j        j                            d	          }|s|j        j                            d
          }t          j                            | j        j        j        j        j                  }|j        j                            di                               dd          }	|r
|j        |	vr|s	 | j                            d           | j                            d|            |                    ||          \  }
}|
|_        t.                              |d          |_        |                    d           t7                       | j                            d|            | j                            d|
            | j                            d|            # t8          $ r?}t;                       | j                            d| d| d| dd           Y d}~4d}~ww xY wt          j                    |z
  }| j        j                             d|dd            dS )!uP   
        Пост обработка JQL в фильтрах задач
        r  )rS  r   T)r  ubqlbqlr   r  r@  " (r  jqlr  jqlQueryapplinkrpcUrlr   2--------------------------------------------------u   ФИЛЬТР: Fensure_asciiTr1  zJQL:	zUBQL:	zBQL:	r  u0   : ошибка преобразования JQL r   zERR-0066r  r  NuC   Обработка JQL в фильтрах выполнена за r  r  )!r   r-   r4   r4  r5  r  process_timerR   r  r   r   rM   r  r   rT   r  r  r~  ext_urlnetlocr5   get_modifiedr  rn   r  r  r8  r7   r8   r9   r;   r`   r  )r"   r  r5  r  task_filtersr  
filter_msgr  r  applink_urlr  r  r  r  s                 r#   _process_jql_in_filtersz%JiraAPIImport._process_jql_in_filters  s8   
 D!!$/07CDD  *//***/// >== 0 
 
 ( %	 %	KE[-EE+2BEEEJ. /599%@@E G#39==gFF #39==jII#\224?3I3P3X3^__
)9?CCIrRRVVW_acdd Z.kAA ##H---##$AZ$A$ABBB,,UK@@	c#' "&**Su*"E"E  T 222##$4U$4$4555##$4d$4$4555##NSNN3333   ))nJnn`ennilnn+ *           2%##$zjl$z$z$z$z{{{{{s   ,C3I!!
J*+4J%%J*u   Обработка аудитаc                     dS )u)   
        Грузим аудит
        Nr/   r!   s    r#   _process_auditzJiraAPIImport._process_auditS  s	     	r%   u2   Обработка логических типовc                 $
   dddddddddddddddd}|                      d          D ]}| j        j                            d|            | j                                        r d	S |d
         }| j        j        j        j         d| }ddd| dg}|                    d          r@|d         d         d
          d| }| j        j        j        j         d| }d|ddd| dgg}t          j	                            |ddg          }d| j        j        j        j         d}|rt          t          j        ||j        j                            dk    ro| j        j                            d| d|j                    t          j        |dt#          |j                            |_        |                    d           d	}|                    d|d                                                   }	|d                                         }
|sI| j        j                            d |	 d!           t          j	                            dd"|	gddg          }|r\|j        sd| d|_        nd| dt#          |j                  vr|                    d          rHd| j        j        j        j         d|d
          d}|j        j                            |d          |_        d| |j         }t          t          j        ||                    dk    rJ| j                            d#|	 d$| j        j        j        j         d!d%|d&'           | xj        dz  c_        n||_        |
|	k    r#|
|j        vr|j                            |
           |                    d           t3                       | j        j                            d(|	 d)           |                    |	                                          }|s(|                    |
                                d          }| j        j        r|d*         d+k    rd}n|d*         dk    rd}n
|d,         rd}t          j	                            d-d.|gd/g          }t          	                    |	|d0         d1|t#          |j                  d| d| j        2          }|	|
k    r|
g|_        |                                 t3                       | j        xj        dz  c_        d	S )3u$   Маппим issueType в logic_typeztask.sub:defaultztask.userstory:defaulttask.agile:defaultztask.bug:defaultztask.epic:default)zsub-tasksubtasku   подзадачаz
user story	userstorystoryu   историяr  u   задачаbugu   багu   ошибкаdefectu   эпикr  rr  u-   Обрабатываем тип задачи Nr   r&  r.  r  r  r  scoper  rC  r  r  r  r  z::\d+)::r3   u   ext_id типа задачи r  r   TrS  r  r   u2   Поиск типа задачи по имени 'r  r  uW   Ошибка объединения одноименных типов с именем 'u*   ': одинаковый источник 'zERR-0118rl  )r<   r  u   Тип задачи 'u2   ' не найден. Создание новогоrB  r  r  rM   r   ui_colorr   r  )r   r   r]  r?  r  r.  r4   )r   r4   r`   r  r6   r4  r5  rT   rR   rl  r   r  findallr.  r   r  r  r-   r8  r  r  r;   r:   r  r   r7   r  rG   rQ   r  r   )r"   	name2coder:  rx  r  r6  issue_type_scope_idr[  ext_id_patternissue_type_nameissue_type_aliaslogic_type_ext_id_oldlogic_type_ext_id_mergedtemplate_coder?  s                  r#   _process_issue_typez!JiraAPIImport._process_issue_type[  sH   
 +)"421-6(0%(.(+'
 
	$ **=99 |	7 |	7JO"''(dXb(d(deee((**  't,M#'?#9#@#L _ _P] _ _)E/@)E)E)EFG~~g&& 	 *4G)<Y)G)M&_&_P]&_&_#'+'='D'P$i$iTg$i$i!v'C->'C'C'CD  ,00 '* 1  J
 V$/"8"?"KUUUN"
>:3D3JKKLLqPP &..gJ g gS]Sdg g   %'F>2s:CT?U?U$V$V
!$///!
(nn-?FASTTZZ\\O)&17799 &++[[[[   $044"G_=$g. 5  

   !( E(B->(B(B(BJ%%/+///s:;L7M7MMM!~~g.. 0vT_5K5R5^0v0vblmqbr0v0v0v-,6,=,C,K,K1 - -
)
 0[4E/ZzGX/Z/Z,2:n6NOOPPSTTT11s  wF s sFJoF\FcFos s s& *%3 2    1,,D
) %77(
0@@@$++,<===$///O"''kkkk   &MM/*?*?*A*ABBM  ^ ).>.D.D.F.FH\ ] ]y 7./255$6MM 01Q66$7Mi( 7$6M*..m4"| /  H  ,,$.!*!X.//1-111? -  J "222$4#5
 OOLLLO11Q6111y|	7 |	7r%   u2   Обработка бизнес-процессовc                 	    i }                      d          D ]}|||d         <                         d          D ]} j                                        r dS  j        j                            |d         d                      j        j        j        j         d|d         d          d|d         d          }t          j        	                    |          sBt          j        	                    d	
          }t                              || j                  |d         _
        |d         d         _                            d           |d         D ]$}                     ||d                             %t          j                            ddgg dgdg          D ]I}t          j        	                    dd|j        gddgg dg          s3|                    d           J|d         D ]} j                                        r  dS  j        j        j        j         dj         d|d          }t          j        	                    |          }	|	s#t                              | j        d          }	|	j        s1 j        j                            d|	j         dj         d           |d         |	_        |d         |	_
         fd|d         D             }
t          j                            dd |
g          |	_        t/          |	j                  t/          |
          k    s
J d!             j        j        j        j         dj         d|d"          }t          j        	                    |          }|d#                                         }|d$k    r|rd|_        |                    d%           ||	_        |	                    d&          r|d&         d         t7          t9          fd'                      d(                    d          }	                      |          |	_        n9#   j                            d) d*|	j         d+j         d,d-d./           Y nxY w|	                    d           tA                        j        xj!        d0z  c_!        dS )1u   Импортируем workflowr.  r   rI  Nr   r&  entityIdr0  r  rL   rL  r   Tr1  rD  r   r  r3  r  rE  r%  rG  rI  )r.  rD  r!  r"  r#  r$  c                 V    g | ]%}j         j        j        j         d j         d | &S )r&  )r4   r4  r5  r   )r   str"   rD  s     r#   r   z3JiraAPIImport._process_workflow.<locals>.<listcomp>*  sR      +R  +R  +Rsudo.D.K.W+n+n[c[f+n+njl+n+n  +R  +R  +Rr%   r'  r.  rP  uN   DEV: Fatal Вероятно, сломали создание статусов!r(  rJ  rR  rS  r,  c                 j    t          |                     d                    t                    k    S r  r  r+  s    r#   r   z1JiraAPIImport._process_workflow.<locals>.<lambda>8  s&    3vzz$/?/?+@+@C	NN+R r%   r.  r/  r0  r1  r  r2  r3  r4  r3   )"r   r4   r6   r`   r  r4  r5  rR   r_  rT   r   r   r8  ra  rb  r   r3  rc  r   rd  rS  r  re  r   r  rf  rg  r   r   r5  r6  r;   r7   r   )r"   jira_statusesrv  jira_workflowworkflow_idtemplate_workflowr   r  r{  r}  r~  r  rg  r|  r8  r-  rD  s   `              @@r#   _process_workflowzJiraAPIImport._process_workflow  s      ++J77 	; 	;K/:M+d+,,!--k:: M	7 M	7M((** O"''=+>v+F(HIII!_3:F  K  K-X\J]^dJe  K  Kivw{i|  ~H  jI  K  KK)--[-AAH z$*$6$:$:@T$:$U$U!!--[K\imix-yy)-8HM)$/7HMMMdM+++  -Z8 P P##M+d2C$DhOOOO *//T88TVlVlVl7m8E 0 H H * * '++]D&J\4]5?x4PRhRhRh4j+ k k D))))#0#? 22 22?,,.. FFF'+'='D'P$z$zT\T_$z$zcrswcx$z$z!#_008IT\0]]
! !'!)0#'?(,	 "1 " "J "1 O*22U:? U U`h`m U U U   "1&"9
"1-"@
 +R  +R  +R  +R  +R  zI  JP  zQ  +R  +R  +R')/)9)>)>xQUWnFo)>)p)p
&:122c:Q6R6RRRR  UeRRR&*o&<&C&O#y#yS[S^#y#ybqrvbw#y#y ",008H0II	"1&"9"?"?"A"A"h..9.7;I4NNTN222'0
$"&&x00  / 9$ ?I"&RRRR ,,Y77  # #K	151E1Ek1R1R
..11{V_ { {8B{ {jrjw{ { {&%0 ( 2      D1111LLLO11Q6111[M	7 M	7s   5Q4Ru    Обработка схем БПc                 (   |                      d          D ]}| j                                        r d S | j        j        j        j         d|d          }t
          j                            dd| dg          }|sJ d|d                      | j        j        j        j         d|d	          }t
          j                            |
          }|sCt
          j                            d          }t
                              ||| j        d          }|j	        rT|d         |_
        |                    dd          |_        ||_        ||_        ||_        |                    d           n(| j        j                            d|j
         d           g }|d                                         D ]\  }}	| j        j        j        j         d| }
t
          j                            ddd|
 dg          }t
          j                            dd|gdd|gg          }|rZ|j	        sS| j        j                            d|j
         d|j         d|j
         d           |                    |j                   |st
          j                            dd|gdd|gg dg dgd           }|rT| j        j                            d|j
         d|j         d|j
         d!           |                    |j                   St
                              d"||| j        #          }| j        j        j        j         d|	 }t
          j                            dd| dg          }||_        |                    d           |                    |j                   t
          j                            d$d%|gdd|gg dgd           }|D ]}|                    d&           t5                       | j        xj        d'z  c_        d S )(NrU  r&  rm  r.  r  r  r%  u+   Не импортировался workflow r   r0  rW  rL   Tr>  r   r   r   r1  r[  r\  rn  r  r[  r=  rX  r]  r^  r_  r`  ra  r  r  rb  r  rc  rM   r  rY  r3   )r   r4   r6   r4  r5  rR   r_  rT   rh  rS  r   r   ri  rj  r  r8  r`   r  r   rl  rk  rM   r   r\  r   rc  r7   r   )r"   rU  default_task_workflow_ext_idri  r  r  r?  r  logic_type_idr  r  r[  r  rv  rD  r  s                   r#   _process_workflow_schemez&JiraAPIImport._process_workflow_schemeK  s'   #//0ABB _	7 _	7O((** .2o.D.K.W++[jk|[}++($*$6$:$:8VXtUyUyUyBz$:${${!(||*|XghyXz*|*||||"&/"8"?"Kff_cOdff*..6F.GGI !-117H1II"..%+#$(	 /  	 ( !0!8	!0!4!4]B!G!G	2G	/5J	2,;	)40000&..= = = =   M0?@S0T0Z0Z0\0\ /0 /0,}'+'='D'P$c$cTa$c$c!#044XvOkUfOkOkOk<l4mm
-11%sJ7$c95 2     4 O*22D	 D D*.)D D^h^mD D D  
 "((333 !155)3
;(#y9666666	  )- 6  D  !.66tIN t t.2it tblbqt t t  
 &,,TY777 !11'0#-"+#'?	 2  D &*_%;%B%N"a"aR_"a"a!-11(FLcLcLc9d1ee'/$		d	+++$$TY//// "(!7!<!<X}5 #y1...
 !% "= " " + 3 3T2222LLLO11Q6111_	7 _	7r%   c                     t           j        j        }|                     d          D ]S}|                    | j                  }|                    | j        j         d| t          j
        |                     Td S )Nr   r  )r  r  r  r   rT   rP   r'  r4   r   r  r  )r"   r  r  r   s       r#   _cache_all_userszJiraAPIImport._cache_all_users  s~    <%))'22 	V 	VI--..CLLDO.;;c;;V\)=T=TUUUU	V 	Vr%   u   Простой дампr   c                    t          j                    }| j                                                            | d          }| j                                                            | d          }|                                rt                              |           t          |d          5 } |            D ]G}| j        xj	        dz  c_	        |
                    t                              |          dz              H	 d d d            n# 1 swxY w Y   t          j        ||           | j                            d           t          j                    |z
  }| j        j                            d|j         d	|d
d           d S )N.jsonz.json.dirtyr  r3   r	  TrS  u
   Дамп 'u   ' выполнен за r  r  )r  r  r4   rj   rk   rl   rw   r  rm   json_object_countr  rn   r  rv   ry   r8  r`   r  r)   )	r"   api_funcr   r  rr   r{   rs   r  r  s	            r#   _simple_dumpzJiraAPIImport._simple_dump  s   ^O5577@@DPP	99;;DDEYEYEYZZ 	!IIi   -&& 	0!xzz 0 011Q611

3$.////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	M9---t,,,^"##$l1B$l$l\^$l$l$l$lmmmmms   0ADDDc              #   $  K   | j                                                             | d          }|                                rJt	          |d          5 }|D ]}t
                              |          V  	 d d d            n# 1 swxY w Y   d S )Nr  r+)r4   rj   rk   rl   rm   rn   r  )r"   r   rr   rs   r  s        r#   r   zJiraAPIImport._simple_get  s      O5577@@DPP	 	*i&& *! * *C**S//))))** * * * * * * * * * * * * * * ts   "BB	B	c              #     K   | j                                                             d          }|                                rt                              |          D ]}|                    d          r|                    d          r&| j         j                            d| d|            St          | d| dd          5 }t                              |          V  d d d            n# 1 swxY w Y   d S d S )Nr   .dirty.metau(   Пропускается каталог rO  
/info.jsonr  )r4   rj   rk   rl   rw   listdirr`  r`   r  rm   rn   ro   )r"   rH  rq  rs   s       r#   r   zJiraAPIImport._get_projects  sR     o7799BB:NN 	' jj55 ' '
&&x00 &&w// O*001v\g1v1vjt1v1vwww[AA:AAA4HH 'A))A,,&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	'' 's   C//C3	6C3	c                 T    |                                  D ]}||d         k    r|c S d S r  )get_projects)r"   rq  ro  s      r#   get_projectzJiraAPIImport.get_project  sH     --// 	$ 	$L\$///#### 0	$ 	$r%   c                     | j                                                             d|d          }t          |d          5 }t                              |          cd d d            S # 1 swxY w Y   d S )Nr   workflows.jsonr  )r4   rj   rk   rm   rn   ro   )r"   rq  workflows_filers   s       r#   r`  z/JiraAPIImport._get_simplified_project_workflows  s    ::<<EE
$4
 
 .$'' 	 199Q<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   A&&A*-A*c              #      K   | j                                                             d|          }t          | dd          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nr   /issue_types.jsonr  r4   rj   rk   rm   rn   r  r"   rq  rH  rs   r  s        r#   r^  z*JiraAPIImport._get_issue_types_for_project  s      o7799BB:zZZ[333T:: 	&a & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   "A33A7:A7c              #      K   | j                                                             d|          }t          | dd          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nr   /statuses.jsonr  r  r  s        r#   re  z'JiraAPIImport._get_statuses_for_project        o7799BB:zZZ[000$77 	&1 & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r  c              #      K   | j                                                             d|          }t          | dd          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nr   /roles.jsonr  r  r  s        r#   r  z JiraAPIImport._get_project_roles  s      o7799BB:zZZ[---t44 	& & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r  c              #   4  K   | j                                                             d|d          }t                              |          D ]L}t          | d| dd          5 }t                              |          V  d d d            n# 1 swxY w Y   Md S )Nr   r\   rO  r  r  r4   rj   rk   rw   r  rm   rn   ro   )r"   rq  	board_dirry  rs   s        r#   rl  z!JiraAPIImport._get_project_boards  s      O5577@@ZYabb	

9-- 	# 	#H99X9994@@ #Aiill"""# # # # # # # # # # # # # # #	# 	#   #BB	B	c              #   4  K   | j                                                             d|d          }t                              |          D ]L}t          | d| dd          5 }t                              |          V  d d d            n# 1 swxY w Y   Md S )Nr   rz  rO  r  r  r#  )r"   rq  sprints_dir	sprint_idrs   s        r#   r  zJiraAPIImport._get_all_sprints  s      o7799BB:z[deeK00 	# 	#I<<y<<<dCC #qiill"""# # # # # # # # # # # # # # #	# 	#r%  c              #      K   | j                                                             d|          }t          | dd          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nr   /versions.jsonr  r  r  s        r#   r  z#JiraAPIImport._get_project_versions  r  r  c              #      K   | j                                                             d|          }t          | dd          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nr   /components.jsonr  r  r  s        r#   r  z%JiraAPIImport._get_project_components
  s      o7799BB:zZZ[222D99 	&Q & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r  Fc                    d}| j                                                             d|d          }|                                rt	          |                                          D ]a}|                                s|j                            d          r2|r(|                    d                                          s\|dz  }b|S )Nr   r   r  r  r  ru  r3   )	r4   rj   rk   rl   r   iterdiris_dirr   r`  )r"   rq  r*  r   	tasks_dirtask_dirs         r#   r  z"JiraAPIImport._count_project_tasks  s    O5577@@ZY`aa	 	 OO3355  (( =))*=>> " 8+<+<]+K+K+R+R+T+T 
r%   r   ri  c              #     K   | j                                                             d|d          }|                                s'| j         j                            d| d|            d S d}t          |                                          D ]}|                                s|j	        }|
                    d          r4|r(|                    d                                          s^||k     r|dz  }j|||z   k    r d S t          |                    d	          d
          5 }	t                              |	          V  d d d            n# 1 swxY w Y   |dz  }d S )Nr   r  u   Каталог u    отсутствует. Возможно он был удален или еще не создан. Необходимо повторно запустить импорт проекта r   r.  ru  r3   	info.jsonr  )r4   rj   rk   rl   r`   r  r   r/  r0  r   r`  rm   rn   ro   )
r"   rq  r  r   r*  r1  r   r2  task_idrs   s
             r#   r   zJiraAPIImport.get_project_tasks  s     O5577@@ZY`aa	!! 	O"**u) u uhru u   FY//11 	 	H??$$ mG 344  x'8'8'G'G'N'N'P'P u}}
%%h''44d;; #qiill"""# # # # # # # # # # # # # # #QJEE#	 	s   (EE	E	c                    |d         d         }i }|d         D ]}|d         dvr|d                                          D ]l\  }}|                    |d|i          }|                    di           }|                    |d                   st          |d	                   ||d         <   m|                                D ]}i }	|d                                          D ]<\  }}
|	                    |
t                                }|                    |           =i |d<   |	                                 D ]4\  }}t          |          d
k    r||d         d<   $|D ]}||d         |<   5d |                                D             |d<   |S )u   
        Создает структуру схемы экранов проекта из данных плагина "Smart Jira Configuration"
        schemesissueTypeScreenSchemeglobalActionsr   )BROWSEPROJECTSCREATEISSUES
EDITISSUESr.  issueTypeIdactionsr,  r3   rM  c                     g | ]}|S r/   r/   )r   r  s     r#   r   z<JiraAPIImport._get_project_screen_scheme.<locals>.<listcomp>Z  s    'H'H'Ha'H'H'Hr%   rr  )r   rj  rT   r  r~   r'  r(  r   )r"   smart_configscreen_schemerr  r  rx  r   r:  r>  issue_type_screensr-  r,  issue_type_screens                r#   _get_project_screen_schemez(JiraAPIImport._get_project_screen_scheme;  s    %Y/0GH "?3 	A 	AFd|#SSS(.y(9(?(?(A(A A A$u(33MMS`Cabb
$//	2>>{{6$<00 A,/h,@,@GF4L)	A &,,.. 	F 	FJ!#%/	%:%@%@%B%B # #!	+66y#%%HH

6""""$&Jy!.@.F.F.H.H F F*!7w<<!##7HJy))4% F FF4EJy)&11F	F (I'H;3E3E3G3G'H'H'Hm$r%   c                    t          |d                                       d          }|                                rt          j        |           |                                 |d         d         }|D ]}|d         }	 | j        j                            d| d           | j	        
                    t          j                            |                    }t          j        d| d	d
          }|                    |          }t!          |d          5 }	|	                    |           d d d            n# 1 swxY w Y   # t$          $ r/}
| j                            d| d|
 ddd           Y d }
~
d }
~
ww xY wd S )NrH  rI  rJ  rK  r   u(   Дамп бизнес-процесса 'u   ' как XMLrO  rP  TrQ  zwb+uB   Не удалось получить бизнес-процесс 'u   ' как XML: rX  r_  rq   r  
error_type)r   rk   rl   rv   rmtreemkdirr4   r`   r  rG   get_workflow_as_xmlr  r  quoter   rf  rm   r  r8   r;   )r"   ro  rt  rt  ru  r  ry  rw  rx  rs   r  s              r#   _get_project_workflows_as_xmlz+JiraAPIImport._get_project_workflows_as_xml^  s   \-899BB;OO!! 	)M-(((%&<=jI+ 	 	M)&1M&++,rWd,r,r,rsss#y<<V\=O=OP]=^=^__$+$93333#'% % %! !. 6 67H I I-// *1GGL)))* * * * * * * * * * * * * * *   )){Yf{{vy{{*%	 *        	 	s=   BED<0E<E 	 EE 	E
F$E<<Fc                    d | j                             |          D             }g }|r| j                             |          }nF| j                             d          }|                    dt          |d                   d           d |D             }i }|D ]}t          |d	                   }	t          |d
                   }
| j                             |
          D ]n}|                    |d         |d         i d          }|	dk    r&|D ]"}||v r||d         |d         d|d         |<   #S|	|d         |d         d|d         |	<   o|S )Nc                 8    g | ]}t          |d                    S r8  r  r9  s     r#   r   z>JiraAPIImport._get_field_config_issue_type.<locals>.<listcomp>|  s5     
 
 
 
4 !!
 
 
r%   rN  T)
is_defaultrM  r   )r=  fieldConfigurationIdc                 P    g | ]#}|d          dk    t          |d                    $S )r=  rM  r  )r   field_configurations     r#   r   z>JiraAPIImport._get_field_config_issue_type.<locals>.<listcomp>  s@     
 
 
#"=1Y>> #M233>>>r%   r=  rP  )r   contextisHidden
isRequired)issuetypeIdrT  rU  rS  )rG   get_issue_for_project"get_field_configuration_issue_typeget_field_configr   r-   get_field_config_fieldsrj  )r"   field_configuration_scheme_idrq  issue_types_projectfield_configuration_mappingfield_config_defaultissue_types_schemefields_usedrR  rx  field_configuration_idr   
field_usedr:  s                 r#   _get_field_config_issue_typez*JiraAPIImport._get_field_config_issue_typez  s   
 
"i===TT
 
 
 ')#( 		*.)*V*VWt*u*u''#'9#=#=#=#N#N '..#,,/0DT0J,K,K   
 
'B
 
 
 #> 	 	 3M BCCM%()<=S)T%U%U"::;QRR  (33$K#Dk#%  
 !I--&9  
%);;;$ ,6(-j(9*/*== =
9-j99	 (5$)*$5&+L&9< <Jy)-88'2 r%   c                    | j                             |          }|                     ||          }|                                D ]}|d         }|                    d          s!| j                             ||          }|s?| j                             ||          }	 | j                             ||          }nt# t          $ rg}	i }| xj	        dz  c_	        d| d| d|	 }
t          |	d          r|
d|	j        j         z  }
| j                            |
d	d
d           Y d}	~	nd}	~	ww xY w| j                             ||          }|                    d          r>|d                                         D ]!\  }}|                    |           |||d<   "Y|D ]<}|d                             |          }|s |                    |           |||d<   =|S )u   
        Возвращает список используемых полей в проекте
        в виде сруктуры как через плагин "Smart Jira Configuration" в box версии
        r   customfield_r3   u9   Не удалось получить опции поля u    в контексте r  responsez HTTP: Response text -> zERR-0109r  rq   rF  NisAnyIssueTyperS  options)rG   &get_project_field_configuration_schemerc  r~   r  !get_field_context_project_mappingget_field_contextget_field_context_optionr8   r:   hasattrrf  r   r4   r;   #get_field_context_issuetype_mappingrT   r   r  )r"   rq  r[  r`  rb  field_used_id
context_idrS  context_optionr  
error_textcontext_issuetypesrx  context_issue_types                 r#   _get_project_fields_usedz&JiraAPIImport._get_project_fields_used  s   
 )-	(X(XYc(d(d%778UWabb%,,.. *	G *	GJ&t,M ++N;; DD]T^__J i11-LLG!%!C!CMS]!^!^   !#1$ SYf  S  S  @J  S  S  NQ  S  S
3
++ Q"PS\=N"P"PPJ))4%	 *         "&!N!N}^h!i!i{{+,, G9CI9N9T9T9V9V G G5M#5&--g666%18F*95G
 &8 G GM)3I)>)B)B=)Q)Q&- ! &--g666%18F*95G s    B<<
D-AD((D-c              #      K   |d          d}t                               |          D ]}|dk    r	|| d| dV  d S )NrN  z/attachmentsall_attachments.ziprO  )rZ  rr   )rw   r  )r"   r  attachments_pathrZ  s       r#   rf  z$JiraAPIImport._get_issue_attachments  sy      #L1???$455 	[ 	[I111 );K8Y8Yi8Y8YZZZZZZ	[ 	[r%   c              #      K   |d          d}t          |d          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )NrN  z/comments.jsonr  )rm   rn   r  )r"   r  comments_file_pathrs   r  s        r#   r  z!JiraAPIImport._get_issue_comments  s       %l 3CCC$d++ 	&q & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   "AAAc                     |d          d}t          |d          5 }t                              |          }d d d            n# 1 swxY w Y   |pg S )NrN  z/worklog.jsonr  rm   rn   ro   )r"   r  rz  rs   r?   s        r#   r  z!JiraAPIImport._get_issue_worklogs  s     %l 3BBB$d++ 	q))A,,C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	ybs   AA
Ac                     |d          d}t          |d          5 }t                              |          cd d d            S # 1 swxY w Y   d S )NrN  z/properties.jsonr  r|  )r"   r  properties_file_pathrs   s       r#   r"  z#JiraAPIImport._get_issue_properties   s    "'"5GGG&-- 	 99Q<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    AA
Ac                     |d          d}t          |d          5 }t                              |          cd d d            S # 1 swxY w Y   d S )NrN  z/watchers.jsonr  r|  )r"   r  watchers_file_pathrs   s       r#   rB  z!JiraAPIImport._get_issue_watchers  s     %l 3CCC$d++ 	 q99Q<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 r  c                 
   | j                                                             d          }|                                rBt	          |d          5 }t
                              |          cd d d            S # 1 swxY w Y   i S )Nglobal_settings.jsonr  )r4   rj   rk   rl   rm   rn   ro   )r"   global_settings_file_pathrs   s      r#   rW   z'JiraAPIImport._get_jira_global_settings
  s    $(O$E$E$G$G$P$PQg$h$h!$++-- 	$/66 $!yy||$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $	s   A88A<?A<c                 0   | j                                         }| j                                                            d          }t          |d          5 }t                              ||           d d d            n# 1 swxY w Y   |d         | _        d S )Nzcloud_id.jsonri   cloudId)	rG   get_cloud_idr4   rj   rk   rm   rn   rq   rV   )r"   r  	data_filers   s       r#   _get_cloud_idzJiraAPIImport._get_cloud_id  s    y%%''O5577@@QQ	)T"" 	aIIdA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Ys   A>>BBc                    | j                                         }| j                                                            d          }t          |d          5 }t                              ||           d d d            d S # 1 swxY w Y   d S )Nr  ri   )rG   get_configurations_of_jirar4   rj   rk   rm   rn   rq   )r"   global_settings_datar  rs   s       r#   _dump_jira_global_settingsz(JiraAPIImport._dump_jira_global_settings  s    #yCCEE$(O$E$E$G$G$P$PQg$h$h!+T22 	/aII*A...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A??BBu/   Обработка ссылок в текстеr   attachments_dirc                 	   d}|s|S t          |d                              d           D ]y}d}|                    d          rd}|j        |         }	 |                    d          r#| j        j                            d|            b|                    d          s*t          j	        
                    | j        j        |          }|                    | j        j                  s#| j        j                            d	|            t          j        |                    d
          d                   \  }}	|s$| j        j                            d|            9t!          j        dt          j	                            |                    }
|
r|
d         |
d                             dd          }|d         k    rU|d         d         }t'          t)          fd|          d           }|r$| j        j                            d|            t          j	                            |                    d          d                             d
          d                   }t*          j                            |          }|                    |          }t*          j                            ||d         | j        j        j        j                  }|s=t*                              | j        ||d         | j        j        j        j                  }||_        ||_        d|_        |                                  tC                       +# tD          $ rC}tG                       | j        j                            d| d|            |dz  }Y d }~sd }~ww xY wt          |d          }|                    ddi          D ]}|j                            d           r(| $                    |j        d          |d!                    E|j                            d"          r(| $                    |j        d"         |d!                    t          j	        %                    |j        d                   }t          j	        &                    |j'                  }| $                    |d#         d         (                                |d!                    |S )$Nr   r  c                 V    |                      d          p|                      d          S r  r  r  s    r#   r   z+JiraAPIImport._dump_links.<locals>.<lambda>$  s(    CLLQWDXDXDo\_\h\hin\o\o r%   r  r  zmailto:u   Это почта: httpuH   Это внешняя ссылка, оставляем как есть: r  u   Это не файл: r  r3   r  r  rz   rP  c                 6    |                      d          k    S r  r   r  s    r#   r   z+JiraAPIImport._dump_links.<locals>.<lambda>=  s    $((4..I:U r%   uE   Этот файл уже обработан во вложениях: rO  r  r   r  
obj_ext_idr5  r4   r  r  r5  Fu0   Не удалось скачать ссылку r  r  r  r  r  r  rN  r  r   ))r   r  r  r  r  r4   r`   r  r  r  urljoinrG   rT  r  r  r   r  r  r  r   r   rR   rH  _get_filenamerk   CmfImportDownloadrT   r4  r5  pathr   
downloadedr8  r7   r8   r9   r  r~  r  r  r  )r"   r   r  r  r:   r  r   rT  r  encodingr  attach_filenamer  r  r   rZ  rr   download_jobr  doc_soupr  r  r  s                         @r#   _dump_linkszJiraAPIImport._dump_links  s   
 	 v..778o8opp 1	  1	 CC||F## )C.C, >>),, O*223N3N3NOOO~~f-- C ,..ty}cBBC~~dim44 O*22  4D  B  4D  4D  E  E  E&/&:399S>>!;L&M&M#	8  O*223QC3Q3QRRRI&QSYS_SgSghkSlSlmm	 % )!I&/l&8&8a&@&@O OA$666&+Hol&C!%f-U-U-U-UWb&c&cei!j!j! % O2::  <I  DG  <I  <I  J  J  J$|++CIIcNN2,>,D,DS,I,I!,LMM".<<TBB	+44Y??	%7;;GLT{HLH^HeHq  <  s  s $ s#)#;#;tADGLT{HLH^HeHq $< $s $sL %.!$(!*/'!!###      &../lbe/l/lij/l/lmmma





  !}55$$G\+B$CC 	S 	SCy}}.// S##CI.?$@%BUVVVV// S##CIo$>l@STTTT#\2239V3DEE
--j.>??##E&M!$4$:$:$<$<eL>QRRRRs4   7MB MAM%B7MD7M
N$!8NN$c                 b   | j         D ]}| j         |         d         s|                    |          s-||                             di           }|                                D ]}|                    d          s|d         |d         |d         |d         d}|                    d          r'd	 |d                                         D             |d<   | j         |                             dg           }||vr|                    |            |                     | j                    d
S )u   
        В box версии, контексты полей получаем из плагина "Smart Jira Configuration"
        r   rS  r   r   isGlobalContextrg  )r   r   r  rg  rh  c                     g | ]}|S r/   r/   )r   options     r#   r   z5JiraAPIImport._get_field_contexts.<locals>.<listcomp>v  s    .`.`.`&v.`.`.`r%   N)rt   rT   r~   rj  r   r|   )r"   r`  r   contextsrS  context_datafield_contexts          r#   _get_field_contextsz!JiraAPIImport._get_field_contextsb  sY    * 	 	J#J/9 ??:.. ":.229bAAH#??,,  {{4(( !$-#FO'./@'A&-.>&?	    ;;y)) a.`.`GIDVD]D]D_D_.`.`.`L+ $ 0 < G G	SU V V}44!((666 011111r%   c                 D   | j                             |d                   }| j        D ]}| j        |         d         s|d                             |          s3|d         |                             d          }|r|D ]}|                    d          s)| j                            d| t          j                   @| j         j        rW| j        |                             dg           D ]4}|d         |d         k    r |                    d          r|d         |d<   5|| j        |         d         vr&| j        |         d         	                    |           | j        |         d	         d         
                    d
d          d         }|dk    r9|d         |         }|r'|                     || j                 |d                    |dk    r>|d         |         pg }	|	D ])}|                     || j                 |d                    *|dk    r:|d         |         }
|
r(|                     |d         |         |d                    -|dk    r3|d         |         pg }|D ]}
|                     |
|d                    f|dk    rp|d         |         }| j        |                             dg           }|r?|                    |           t          t!          |                    | j        |         d<   |                     | j                   dS )u   На коробке только через мету задачи можно получить варианты выбора полей

        Args:
            issue (dict): задача
        r   r   rz   allowedValuesr   u   Выбор без id: rh  r  r   rC  r3   r  
userpickerrN  multiuserpickergrouppickermultigrouppickerr  N)rG   get_issue_metart   rT   r4   r5   r^   r  rQ   r   r   r  rP   r  r  r   r'  r|   )r"   r  metar   rh  r  cur_optcustom_field_typesr  r   r  r  r~   s                r#   _get_field_optionsz JiraAPIImport._get_field_options~  s    y''e55* 0	Q 0	QJ#J/9 >%%j11 8nZ044_EEG S% S SF!::d++ !++,MV,M,Mw___ y S'+'7
'C'G'G	SU'V'V M MG&t}t<<#)::j#9#9 !M:@:LGJ$7M
 ")9*)Ei)PPP ,Z8CJJ6RRR!%!1*!=h!G!Q!W!WX[]^!_!_`b!c!\11Xz2 R''T](;U<=PQQQ#'888h
39r! R RD''T](;U<=PQQQQR#}44h
3 X%%eHoj&A5CVWWW#'999x4:# B BE%%eU<-@AAAAB#x//x4*:6::9bII QNN6***>B3w<<>P>PD$Z0; 011111r%   r  rw  c                 0   | j                             | j        |d         |          }t          |d                                       d          }t          |d          5 }t                              ||d           d d d            d S # 1 swxY w Y   d S )Nr   rH  r  ri   Fr  )rG    get_simplified_project_workflowsrV   r   rk   rm   rn   rq   )r"   r  rw  rI  r  rs   s         r#   "_dump_simplified_project_workflowsz0JiraAPIImport._dump_simplified_project_workflows  s    
 I>>MDM
 
	 gm455>>?OPP.$'' 	81IIiI777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s    BBBlast_dump_datenew_dump_datec           
      X   t          d          5  d}| j        j                            d| d|            	 | j                            |d         ||||          D 
]}		 | j                                        r	 t                        d d d            dS | j        j                            d	|	d
          d           |                    t          |	d                             }
|                    t          |	d                   dz             }|

                                rt          j        |
|           |                    d           ||	d<   |                     |	           |
                    d          }|	d         d         r| j        j                            dt          |	d         d                               	 t           j                            | j        j        d|	d          d          }| j        j        r4t           j                            | j        j        d|	d          d          }d}|                    |          }| j        j        j        j         d|	d          }t.          j                            ||| j        j        j        j                  }|s7t.                              | j        ||| j        j        j        j                  }||_        ||_        d|_        |                                 t                       n@# t:          $ r3}| j                            dt>           d| ddd            Y d }~nd }~ww xY w|	d         d         D ]>}|                    d!          r'|                      |d!         | j!                 |           ?| j"                            d"          rU|                    d#          }|
                                rt           #                    |           tI          |d$          5 }| j        %                    |	d                   }|D ]}|                    d!i                               | j!                  r'|                      |d!         | j!                 |           |                    d%i                               | j!                  r'|                      |d%         | j!                 |           tL          '                    ||           d d d            n# 1 swxY w Y   |	d&         d'         D ]>}|                    d!          r'|                      |d!         | j!                 |           ?|	d                             d(          rG|                      |	d                             d(                              | j!                  |           |	d                             d)          rH|                      |	d                             d)i                               | j!                  |           |	d                             d*i           rH|                      |	d                             d*i                               | j!                  |           || (                    |	d+         d,         ||	          z  }|                    d-          }|
                                rt           #                    |           | j        j                            d.           tI          |d/          5 }| j        )                    |	d                   D ],}|                    d!i                               | j!                  r'|                      |d!         | j!                 |           |                    d%i                               | j!                  r'|                      |d%         | j!                 |           |*                    tL          +                    |          d0z              | j        xj,        dz  c_,        | j        -                    d1           || (                    |d2         ||	          z  }.	 d d d            n# 1 swxY w Y   | j        .                    |	d                   |	d3<   | j        /                    |	d                   }|                    d4          }tI          |d$          5 }tL          '                    ||           d d d            n# 1 swxY w Y   | j        0                    |	d                   }|D ]#}|                      || j!                 |           $|                    d5          }tI          |d$          5 }tL          '                    ||           d d d            n# 1 swxY w Y   t          j        ||
           |                    d           |
                    d6          } t          |
          1                    dd7          |	d<   tI          | d$          5 }tL          '                    |	|           | j        xj,        dz  c_,        | j        -                    d8           d d d            n# 1 swxY w Y   |
                    d9          }!tI          |!d:          5 }|*                    d7           d d d            n# 1 swxY w Y   n-#  |dz  }| j                            d;|	 d<dd            Y nxY wt                       
# t                       w xY wn5#  | j        j        2                    d=|d>          d?           |dz  }Y nxY w|3                    |           d d d            d S # 1 swxY w Y   d S )@NFr  r   u   Задачи с u    до r   )r  rk  r  r  r3   u   Задача 'r   r  r  Texist_okrN  r  rz   rP  u%   Обработка вложений: zsecure/attachmentzip/z.zipzsecure/issueAttachments/rw  r&  r  r  rY  r  zERR-0054r  rq   rF  r   rt  zworklog.jsonri   r  r:  r;  rd  rg  r  rp  r   zcomments.jsonu#   Дампим комментарииr  r	  r  r   rC  zproperties.jsonzwatchers.jsonr4  r   r  ru  wu0   Не удалось скачать задачу zERR-0111u2   Не получить задачи проекта r   u    с сервера)4r   r4   r`   r  rG   get_all_project_issues_duringr6   r7   rk   r-   rl   rv   ry   rI  r  r   rw   r  r   rT  rQ   r4  r5  rR   r  rT   r   r  r8  r8   r;   rx  r  rP   rX   r  rm   issue_get_worklogrn   rq   r  get_commentsr  r  r  ra  get_issue_remotelinksget_issue_propertiesget_watchersr  	exceptionr  )"r"   r  rk  r1  ro  tasks_that_are_doner  r  rs  r  r2  task_dir_tmpr  r  rZ  attach_file_pathr.  r  r  rv  worklog_file_namers   worklogsr  r  comments_file_namer  r  properties_filewatchersrI  watchers_file	info_pathr  s"                                     r#   _dump_task_partzJiraAPIImport._dump_task_part  s   5111 F	, F	,FO"''(M5(M(M(M(MNNNB!YDD\RVEWKPVYP^N[ E ] ] ~% ~%Ez%?4466 %#$p #EF	, F	, F	, F	, F	, F	, F	, F	, .334TU5\4T4T4TUUU#,#5#5c%+6F6F#G#G'0'9'9#eDk:J:JX:U'V'V#??,, @"K,???$**D*999.:l+//666*2*;*;M*J*J ?<8 l O277  9E`cdijrds  uA  eB  aC  aC  9E  9E  F  F  Fm')w||DIMCl[`ae[fClClCl'm'm#'9? !u+-7<<	GsbghlbmGsGsGs+t+tD,A	3B3K3KI3V3V 0,0O,B,I,U)f)fY^_cYd)f)f/5/G/K/KQUCIDHODZDaDm 0L 0o 0o (4 !C393K3KW[WfQUW]X\XgXnXu  YB 4L 4C 4CL 5E 14= 1:? 7 , 1 1 3 3 3 *#, m m m $ 9 9  ;N  xG  ;N  ;N  KL  ;N  ;N:Dyek !: !m !m !m !m !m !m !m !mm 05X|/L l l#.??8#<#< !l$($7$7H8Mdm8\^j$k$k$k4889NOO 70<0E0En0U0U-07799 = "		*; < < <!%&7!>!> 7!+/9+F+FuT{+S+S/7 !r !rG'.{{8R'@'@'D'DT]'S'S %l(,(;(;GH<Mdm<\^j(k(k(k'.{{>2'F'F'J'J4='Y'Y %r(,(;(;GN<STXTa<bdp(q(q(q $		(A 6 6 67 7 7 7 7 7 7 7 7 7 7 7 7 7 7 (-['9+'F d dG&{{844 d $ 3 3GH4Edm4TVb c c c ?..z:: r //h0C0CJ0O0O0S0STXTa0b0bdpqqq ?..y99 u //h0C0CIr0R0R0V0VW[Wd0e0egsttt ?..z2>> v //h0C0CJPR0S0S0W0WX\Xe0f0fhtuuu$"2"259I3J=3Y[jlq"r"rr-9-B-B?-S-S*-4466 :II&8999.334YZZZ!"4d;; 	lq+/9+A+A%++N+N l l#*;;x#<#<#@#@#O#O !h$($7$78I$-8XZf$g$g$g#*;;~r#B#B#F#Ft}#U#U !n$($7$78OPTP]8^`l$m$m$m !

7(;(;d(B C C C $ A AQ F A A $ 8 8 C C C &$*:*:7>;RTcej*k*k kl	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 04y/N/NuUY{/[/[m, &*Y%C%CE$K%P%P
*6*?*?@Q*R*R!/488 5A IIj!4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 $(9#9#9%+#F#F'/ V VG //0FUUUU(4(=(=o(N(N!-66 3! IIh2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3L(;;;'--t-<<<$,$5$5k$B$B	.1(mm.C.CHb.Q.Ql+!)T22 =a IIeQ/// O==B== O44V<<<= = = = = = = = = = = = = = = %-$5$5m$D$D	!)S11 (QGGBKKK( ( ( ( ( ( ( ( ( ( ( ( ( ( (!11VuVV&%.'-	 2      #
}~%~&00  2Ofrsyfz  2O  2O  2O  P  P  P!##F+++MF	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	, F	,sj  (n(m#k7=mD4k7EL! k7!
M+)Mk7MB>k7C+Tk7Tk7THk7,Eb<k7bk7bA+k7;d#k7#d''k7*d'+A.k7g5k7gk7g	A9k7Ajk7jk7 j!(k7	k+k7+k//k72k/3k76l47(l!l4$m4mmn0m:8nn#&n#r  c                    t           j        j        }t          |d          d          }|                    d           | j                                        }d}t          || j        z  dz
            }	|	sd}	d}
g }d}||k    r|
|	z  |	z   }||k    r|}| j	        
                    | j        d|
 |
|	z  ||||||d	
          }|                    |           |                                 | j        j                            d|            |
dz  }
||k    |	dz  }| j        j                            d|	 d           |D ]Y}|                    |           |                                r-| j                            dddd           t)          d          Z| j        j                            d           |                                s+||                                z  }|                                +| j        j                            d|            |                     |d         |                     |d                             D ]}| j                                        r|c S t          |d                                       d          }| j                                                            d          }| j                                                            d          }|                                rBt;          j        ||           t?          |d          5 }t?          |d          5 }t?          |d          5 }|D ]}||vr|                     |           tB          "                    |          }|                    | j#                  }|r7|$                    | j        j%         d| tM          j'        |                     	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |(                                 t;          j)        ||           t          |d                                       d           }| j                                                            d           }| j                                                            d!          }|                                rt?          |d"          *                                 t;          j        ||           t?          |d          5 }t?          |d          5 }t?          |d          5 }|D ]}||vr|                     |           	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |(                                 t;          j)        ||           |S )#NrH  /tasksTr  r   r3   r  
dump_tasks)r  rk  r1  ro  r  r  r  targetr   r>   u$   Форкаем _dump_task_part proc=r  u%   Таймаут дампа задач u    минутtimeoutu$   Возможно завис дампzERR-0055r  rq   rF  u"   Ошибка дампа задачuK   Закончили параллельное скачивание задачu   Ошибок: r   r   rN  r  zusers.json.newrS  r  r  r  zgroups.json.newa)+r  r  r  r   rI  r   Queuer  r   r   Threadr  r   r  r4   r`   r  r   is_aliver;   TimeoutErroremptyrT   r   r  r6   rk   rj   rl   rv   rh  rm   r  rn   r  rP   r'  r   r  r  ry  ry   close)r"   ro  r  r  r  r  r1  r  rs  rW  ir;  	max_limitr'  r  r  issue_users_pathall_users_pathall_users_path_newf1f2f3r  r  r   issue_groups_pathall_groups_pathall_groups_path_news                               r#   _dump_taskszJiraAPIImport._dump_tasksR  s   <%L7???@@	&&&"j..003::Q>?? 	D	IooD4IC	>((0DK[XYK[K[:;d(9>GAMH[CQBO1Q 1Q ) R RD NN4   JJLLLO"''(Ut(U(UVVVFA Ioo  )##$]D$]$]$]^^^ 	I 	IDIIgI&&&}} I))*P*4yU[ * ] ] ]"#GHHHI
 	##$qrrr%++-- 	0)--///F &++-- 	0##$=V$=$=>>>++L,>dF_F_`lmq`rFsFs+tt "	B "	BE((** #E,$788AA,OO!_>>@@II,WWN!%!B!B!D!D!M!MN^!_!_&&(( @N,>???*C00 	rBnc22 rb!"4d;; rr(* r r#'r>>$&HHTNNN04

40@0@I*3--*F*FC'* %r(08J5W5WRU5W5WY_YefoYpYp(q(q(qrr r r r r r r r r r r r r r rr r r r r r r r r r r r r r r	r 	r 	r 	r 	r 	r 	r 	r 	r 	r 	r 	r 	r 	r 	r !''))).??? $U<%8 9 9 B B= Q Q"o??AAJJ=YYO"&/"C"C"E"E"N"NO`"a"a '')) 
B_c**00222O-@AAA+S11 3Ros33 3r!"5t<< 3(* 3 3#'r>>$&HHTNNN33 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 "((***/AAAs   /P PBO*	P*O..P1O.2P5PPPP	PP	P	'V#8V	U5	)V5U99V<U9=V V#VV#VV##V'	*V'	c                    | j         j                            d|d          d|d          d           | j                            |d                   }|r|                    d          si }| j        j        r!| j                            |d                   }nA|                    dg           D ]*}|d         d	k    r|d
         D ]}|d         ||d         <   +|                    dg           D ]}g |d<   |                    |d         g           D ]\}|d                             |           |d         dk    r3| 	                    |d         | j         
                                           ]t          |d          d          }	|	                                rt                              |	           t          |	d          5 }
t                               ||
           d d d            d S # 1 swxY w Y   d S )NuH   Дамп схемы безопасности задач проекта "r   r  r   r  r   r  r9  BROWSE_PROJECTSrb  r  levelsrJ  r  r   rH  /issue_security_scheme.jsonri   )r4   r`   r  rG   !get_project_issue_security_schemerT   rQ    get_issue_security_level_membersr   r  rj   r   rl   rw   r  rm   rn   rq   )r"   ro  r@  security_schemesecurity_level_membersr  security_levelrc   member	dump_filers   s              r#   #_dump_project_issue_security_schemez1JiraAPIImport._dump_project_issue_security_scheme  s   ## IXdekXl  I  Ir~  @E  sF  I  I  I	
 	
 	
 )EElSWFXYY 	b<#3#3L#A#A 	b%'"y e)-)S)STcdhTi)j)j&&*..CC e eFe}(999.4Z.@ e eNKYZcKd2>$3GHH(,,Xr:: b b#%i 488tbII b bF)$++F333f~//++F7OT_=^=^=`=`aaab
 L7TTTUU	 	!IIi   )T"" 	*aIIoq)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   	G22G69G6c                 T   | j         j                            d           t          |d          d          }|                                rt
                              |           t          |d          5 }i }	 d}| j        	                    |d         d
                    |                    }nB# t          $ r5}| j                             t          |          d	d
d           Y d }~nd }~ww xY wt                              ||           |cd d d            S # 1 swxY w Y   d S )Nug   Дампим конфигурацию проекта через плагин "Smart Jira Configuration"rH  z/smart_config.jsonr  )	projectInformationprojectSchemesprojectIssuetypesprojectVersionsprojectComponentsprojectMembersprojectCustomfieldsprojectGlobalActionsprojectWorkflowActionsr   r   )rh  ERR-0056r  rq   rF  )r4   r`   r  r   rl   rw   r  rm   rG   get_project_smart_configr   r8   r;   r-   rn   rq   )r"   ro  smart_config_filers   r@  rh  r  s          r#   _dump_smart_configz JiraAPIImport._dump_smart_config  s    	##  %N  	O  	O  	O L$?!S!S!STT##%% 	)II'(((#T** 	 aL
  $yAA,uBU_b_g_gho_p_pAqq   ))HHj)% *         IIlA&&&/	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s<   6D:7B21D2
C1<+C,'D,C11DD!$D!Etc/UTC%Y-%m-%d %H:%Mdttzr  c                 ~   | p@t           j                             t           j        j                                      |          } t          j        |          }t
          j                            t           j                             | |                                        |          }|                    |          }|S r   )	r  nowtimezoneutcstrftimepytzlocalizestrptime
astimezone)r  r  r  dt_tzdt_strs        r#   _datetime_in_user_tzz"JiraAPIImport._datetime_in_user_tz  s    P8$(():)>??HHPP]2!!("3"<"<R"H"HIITTUWXX''r%   c                 2   dd l }| j        d         d         d         }|d         st          d          d |d         D             | _        | j                                                            d          }|                    d	
           t          | j                  }t          d|z            }| j        D ]}|d         }|d         }|d         }		 | j        
                                r d S | j        xj        dz  c_        | j        j                            d|	 d           |                    |          }
|                    | d          }|
                    d          }| j        j        r&| j                            | j        j                  }n%| j                            | j        j                  }|r|d         d         nd}| j                            |          }d }|                                rot)          |d          5 }t*                              |          }|                    d          }d d d            n# 1 swxY w Y   |r|                     ||          }t2          j                            t2          j        j                                      d          }|                     ||          }|
                                rt=          j        |
|           nt@          !                    |d	
           tE          j#                    }| j        $                    |          }tK          |          |d<   d }| j        j        s| &                    |          }| j        j                            d           tO          |d          d          }|                                rt@          (                    |           t)          |d          5 }| j        )                    |d                   }	 |d          D ]}|d!         d"         d#k    r| j        j        rU|d!                             d          r9| *                    |d!         d         | j                                                   u| *                    |d!         d$         | j                                                   n'#  | j        +                    d%| d&d'd()            xY wt*          ,                    ||           d d d            n# 1 swxY w Y   | -                    ||*           | j        j        r|d+         sr| j        .                    |d                   d         d,         |d-<   | j        /                    |d                   |d.<   | 0                    |d                   |d/<   n[| j        j                            d0           tO          |d          d1          }|                                rt@          (                    |           g }t)          |d          5 }| j        1                    |d                   D ]b}|2                    |d                    | j        xj        dz  c_        |3                    t*          4                    |          d2z              c	 d d d            n# 1 swxY w Y   | j        5                    |d                   |d3<   | 6                    ||           n| j        5                    |d                   |d-<   d|d-         vr|d-         d         |d-         d4|d-<   n/| j        7                    |d-         d                   |d-         d5<   |                    d6i           |d-         d6<   | 8                    |           |                    d7          r| 9                    |          |d.<   |                    d8i           |d/<   | :                    |d/                    |                    d9          }|r| j        ;                    d:|            | j                            |d;         d	<          |d9<   | *                    |d9         | j<                 | j                                                   | j        j                            d=           tO          |d          d>          } |                                 rt@          (                    |            t)          | d          5 }| j        =                    |d                   D ]G}!| j        xj        dz  c_        |3                    t*          4                    |!          d2z              H	 d d d            n# 1 swxY w Y   | j        j                            d?           tO          |d          d@          }"|"                                rt@          (                    |"           t)          |"d          5 }| j        >                    |d         A          ?                                D ]0}#| j        
                                r d d d             d S | j        xj        dz  c_        | j                            |#d	<          }$g }%|$                    dBg           D ]U}&|&d"         dCk    rE	 | j        j        rR| j        @                    |&dD                             d          |&dD                             dE          F          |&dG<   n$| j        @                    |&d                   |&dG<   nn# |jA        jB        $ r\}'|'jC        jD        dHk    rF|%2                    |&           | j        j        E                    dI|$d          dJ|' dK           Y d }'~' d }'~'ww xY w|&                    dG          r>| *                    |&dG         | j<                 | j                                                   W|$                    dB          r |%D ]}(|$dB         (                    |(           |3                    t*          4                    |$          d2z              2	 d d d            n# 1 swxY w Y   | j        j                            dL           tO          |d          dM          })|)                                rt=          jF        |)           |)                                 tO          |d          dN          }*|*                                rt=          jF        |*           |*                                 	 | j        G                    |d         A          D ]L}+| j        
                                r  d S | j        xj        dz  c_        | j        j                            dO|+d                     | j        H                    |+d                   |+d5<   | j        I                    |+d5         dP         d                   |+d5         dP<   | j        J                    |+d                   },| j        j        rCdQdRdS | j        K                    |+d                   D             ii}-|,L                    |-           |,|+d5         dT<   | j        j        sI| j        M                    |+d                   }.t          t          |.          dk              |+d5         dU<   |d         |+dV<   |)                    tK          |+d                             }/|/                    d	
           |/                    d          }0t)          |0dW          5 }t*          ,                    |+|           d d d            n# 1 swxY w Y   	 |+d"         dXv r`| j        j                            dY           | j        O                    |+d                   D ]}1| j        
                                r   d S |1dZ         |+d         k    r4| j        xj        dz  c_        |*                    tK          |1d                             }2|2                    d	
           |2                    d          }3|3                                r*| j        j                            d[|1d          d\           | j        j        s|+d5         dU         |1dU<   i |1d]<   | j        j                            d[|1d                     | j        P                    |1d         d^g_          D ]z}4| j        
                                r    d S |4d         }5|5|4d         |4d`         d^         d         |4d`         d^         d         |4d`         d^         d         dadb}6|6|1d]         |5<   {t)          |3dW          5 }t*          ,                    |1|           | j        Q                    dc           d d d            n# 1 swxY w Y   !# |jA        jB        $ r}7|7jC        jD        ddk    rJdetK          |7          v sdftK          |7          v r(| j        ;                    tK          |7                     n"| j        +                    dg|+ dhdid()            Y d }7~7$d }7~7w | j        +                    dg|+ dhdid()            xY wn8#  | xjR        dz  c_R        | j        +                    dj| dhdid()           Y nxY w| j        ;                    dk           tO          |d          dl          }8|8                                rt@          (                    |8           t)          |8d          5 }| j        S                    |d                   D ]o}9| j        
                                r d d d             d S | j        xj        dz  c_        |3                    t*          4                    |9          d2z              p	 d d d            n# 1 swxY w Y   | j        ;                    dm           tO          |d          dn          }:|:                                rt@          (                    |:           t)          |:d          5 }| j        T                    |d                   D ]};| j        
                                r d d d             d S |;                    d9          r>| *                    |;d9         | j<                 | j                                                   | j        xj        dz  c_        |3                    t*          4                    |;          d2z              	 d d d            n# 1 swxY w Y   dot@          jU        dp<   | j        xjV        |z  c_V        | j        W                    d	q           t                       drt@          jU        dp<   t=          j        |d         |
           tK          |
          |d<   |d          ds}t)          |dW          5 }t*          ,                    ||           d d d            n# 1 swxY w Y   tE          j#                    |z
  }<| j        j                            dt|	 du|<dvdw           tO          |d          dx          }=|r|=                                s5| j        j        E                    dy|	 dz|d          d{|= d|| d}	           d }nF| Y                    |d                   s+| j        j        E                    d~|	 dz|= d| d}           d }|d         d         s;|d         d         }>| j        +                    d|> d|> d|	 d| d	dd'd()           nWd}?tE          j#                    }| j        Z                    |d         ||          }|rd| }@|s|r"|@dz  }@|r|@d| z  }@|r|@d| z  }@|@d| dz  }@| j        ;                    |@           |?| [                    ||||          z  }?tE          j#                    |z
  }<| j        j                            d|	 du|<dvdw           n#| j        j                            d|	 d           |?sI||d<   t)          |dW          5 }t*          ,                    ||           d d d            n# 1 swxY w Y   n| xjR        |?z  c_R        0#  | xjR        dz  c_R        |                    d          r#| j        +                    d|	 ddd'd()           n!| j        +                    d| dd'd()           Y xY w| j        ;                    d           d S )Nr   r   r   	isCheckedu5   Не выбрали ни одного проекта!c                 >    g | ]}|d          
|d         |d          S )r<   r  r/   )r   vals     r#   r   z0JiraAPIImport._dump_projects.<locals>.<listcomp>  s2    !l!l!lCPUJ!l[^_j[k!l#e*!l!l!lr%   r  r   Tr  P   r   r   r   r3   u   Дампим "r@  r  r4  )r  )r   timeZoner  rN  rS  	dump_dater  rH  u   Дампим права/permissions.jsonr  permissionsholderrJ  r  	parameteru0   Не удалось сдампить права r  r  rq   rF  )r@  r  workflowSchemerJ  jira_screen_schemer`  u/   Дампим типы задач проектаr  r	  rU  )r   r  r  rI  r7  
fieldsUsedr?  u1   Ищем руководителя проекта r"   )absoluteu*   Дампим статусы проектаr  u$   Дампим роли проектаr!  )r   r  r  	actorUserrJ   )r   r  r  i  u&   Пользователь к роли "u   " не найден. u+   . Возможно он был удаленu&   Дампим доски проектаz/boards/z	/sprints/r\  r   rR  rS  c                     g | ]}|S r/   r/   )r   qfs     r#   r   z0JiraAPIImport._dump_projects.<locals>.<listcomp>  s%     5& 5& 5&/15& 5& 5&r%   r   r  rq  ri   )rJ  simpleu&   Дампим спринты доскиoriginBoardIdu   Спринт u    уже скачанr  r  )rz   rz   )r   r   r   )r   r   r  r  i  z"The board does not support sprintsuD   Данная доска не поддерживает спринтыu4   Не удалось сдампить спринты zERR-0057r7  u   Не удалось сдампить доски, возможно проект не поддерживает доски или у вас нет прав project_info=u(   Дампим версии проектаr*  u!   Дампим компонентыr,  r   NO_CACHErS  1r  u&   Дамп данных проекта "u   " выполнен за r  r  r  u$   В каталоге проекта "r  u5   ), отсутствует каталог задач (u@   ). Дата последнего успешного дампа (u   ) будет сброшена.u/   В каталоге задач проекта "ud   ) отсутствуют задачи. Дата последнего успешного дампа (r  havePermissionu   Не удалось выполнить дамп задач проекта. Пользователь не имеет разрешения 'uA   '. Предоставьте пользователю право 'u0   ' в схеме прав для проекта 'r  r  zERR-0128)r  r  u*   Дампим задачи проекта: u    (в периодu    с u    по u4    включительно, часовой пояс: )ro  r  r  r  u$   Дамп задач проекта "u   В проекте 'u5   ' нет новых/обновленных задачr  u   Проект "u   " является приватным и не может быть импортирован, отключите приватность в Jira или предоставьте пользователю праваzERR-0058u2   Не удалось получить проект u0   Закончили дампить проекты)\requestsr  r8   r]   r4   rj   rk   rI  r   r  r6   r  r`   r  rG   rQ   user_find_by_user_stringr   get_permissionsrl   rm   rn   ro   rT   r  r  r  r  r	  r
  rv   ry   rw   makedirsr  r  r  r-   r  r   r  get_project_permission_schemer  r;   rq   r  get_project_schemeget_project_screen_schemeru  rW  r   r  r  get_project_workflow_schemer  get_workflow_schemerL  rD  r  r5   rP   get_statusesget_project_rolesr~   r  
exceptions	HTTPErrorrf  r  r  rH  get_all_agile_boardsget_agile_board_configuration
get_filterget_advanced_board_settingsget_board_quick_filtersr  get_agile_board_projectr  get_sprintsget_sprint_issuesra  r:   get_project_versions_paginatedget_project_componentsenvironprogressr8  r7   r  get_project_issues_count_duringr  )Ar"   r)  rootprojects_dirr  rW  r  rq  r   r  rH  project_tmp_dirr  r  user_tzuser_permissionsr  rs   current_dumplast_dump_date_utcnew_dump_date_utcr  r  ro  r@  permission_fileperm_sch	perm_dict
types_filerw  r:  rG  statuses_filer  	role_filerole_urir  unfound_actorsr  r  unfound_actor
boards_dirr'  rx  advanced_settingsquick_filtersboard_projectsr$  board_info_filer  sprint_pathsprint_file_pathr  r  r  r  version_list_filenamer*  components_list_filenamer1  r  r1  r  task_errorsinfo_msgsA                                                                    r#   _dump_projectszJiraAPIImport._dump_projects  sz   }./8;K  	USTTT!l!lZ8H!l!l!l88::CCJOOD)))$())28}}- S	d S	dG J!%.K"6?LOd?,,.. FF11Q611&++,L\,L,L,LMMM*33J??"."7"7:8M8M8M"N"N'00==	 9? ` $	 B BI[ B \ \II $	 B BDIL^ B _ _I6?N)A,z22Y $(9#<#<
#<#S#S  "&##%% `i-- K'+yy||-9-=-=k-J-J*K K K K K K K K K K K K K K K * `)-)B)BCUW^)_)_$,$5$9$9(:K:O$P$P$Y$YZj$k$k! $ 9 9:KW U U%%'' @K_====KK$K???&((#y44[AA.1/.B.B]+  $y I#'#:#:<#H#HL &++,EFFF"&,}*E'X'X'X"Y"Y"))++ /IIo.../400 +A#yFF|TXGYZZH)1-)@  I(26:fDD#'9? !'0':'>'>w'G'G %(,(;(;Ih<OPW<XZ^ZiZ{Z{Z}Z}(~(~(~$($7$7	(8KK8XZ^ZiZ{Z{Z}Z}$~$~$~112pen2p2p4>bh 2 j j jIIh***+ + + + + + + + + + + + + + +  88T`8aaa9? *J'5 ^	44\$5GHHKL\] %%;< >BY=`=`amnras=t=t%9:6:6S6ST`aeTf6g6g]33 .334efff%)\--H*[*[*[%\%\
%,,.. 2IIj111)+!*d33 Gq.2i.M.MYefjYk.M.l.l G G
 . 5 5j6F G G G $ A AQ F A A !

:(>(>(E F F F FGG G G G G G G G G G G G G G G ;?):_:_(/; ;%67 ??n]]]];?9;`;`$U+< <L!78 <0F#GGGEQRhEijpEq  |H  I_  |`  @a  @a%;<<GKyGdGd()?@FH H%;<VD IUHXHXYdfhHiHiL!78E66|DDD#''	22 k=A=\=\]i=j=j%9:2>2B2B<QS2T2TL/,,\--HIII+//77 rO''(j\h(j(jkkk+/9==f9MX\=+]+]L(''V(<T](KT_MnMnMpMpqqq &++,XYYY $](C%S%S%S T T '')) -IIm,,,-.. 8!#y55dAS5TT 8 899Q>99

3$ 6777788 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 &++,RSSS L$?!L!L!LMM	##%% )IIi((()T** %>a$(I$?$?LY^L_$?$`$`$g$g$i$i $> $>?4466 #"%> %> %> %> %> %> %> %> %> 99Q>99$(IMM(TM$J$J	)+%.]]8R%@%@ ] ]E$V}0KKK!.'+y %d=AY^^5:;5G5K5KF5S5S7<[7I7M7Mk7Z7Z >L >\ >\k(:(: >BY^^UZ[aUb^=c=ck(:'/':'D 
!. 
!. 
!.'*|'?3'F'F(6(=(=e(D(D(D(,(>(F(F-`V_`fVg -` -`/2-` -` -`)* )* )* )1(-
!. $)99[#9#9 !]$($7$7k8J4=8Y8<8Y8Y8[8[%] %] %] %==22 J1? J J )( 3 : := I I I I

9 5 5 <====I$>%> %> %> %> %> %> %> %> %> %> %> %> %> %> %>P &++,TUUU!\-%@"J"J"JKK
$$&& .M*---  """"l=&A#L#L#LMM%%'' /M+...!!###[c!%!?!?LY]L^!?!_!_ V" V"?4466 #"FFF99Q>99.334Q%-4Q4QRRR(,	(O(OPUVZP[(\(\f26)2F2FuV}U]G^_cGd2e2efh/ -1I,Q,QRWX\R],^,^)9? D 3$2 5& 5&59Y5V5VW\]aWb5c5c5& 5& 5&6"-M .44]CCC2Cfh/#y Z .2Y-N-NuUY{-[-[N<@^ATATWXAX<Y<YE&M.9.:4.@l+$.$7$7E$K8H8H$I$I	!666*3*<*<[*I*I!/488 0A IIeQ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 02"$V}0CCC $ 6 ; ;<d e e e.2i.C.CE$K.P.P #!K #!KF'+'@'@'B'B %/(.'-o'>%+'M'M(0$(O$E$E$J$E$E2=2F2Fs6RV<GXGX2Y2YK$/$5$5t$5$D$D$D7B7K7KK7X7X$4'7'>'>'@'@ %1(,(>(C(CDxTZ[aTbDxDxDx(y(y(y(0+/9? %_AFv~A^~(>79F8$4$(O$:$?$?@`PVW]P^@`@`$a$a$a151L1L(.t09{ 2M 2& 2& %P %P ,0?+D+D+F+F )3,2FFFFF38;2:38<6;Hoi6PQU6V7<Xy7QRW7X8=h	8RSY8Z8. 8.6* 6*
 FPx(8(B(B)-.>)E)E %K(,		&!(<(<(<(,(@(@(J(J(J%K %K %K %K %K %K %K %K %K %K %K %K %K %K %K  (2< & & & z5<<BfjmnojpjpBpBp  u{  B  CD  E  E  uE  uE $ 3 3CFF ; ; ; ; $ 9 9:xqv:x:x<FQZgm !: !o !o !o %	 !< ; ; ; ;
" O556tmr6t6t8BYci 6 k k k!mV"ncOOq(OOO--  /f  Xd  /f  /f0:Y[a . c c c c c ##$NOOO(,]0K-[-[-[(\(\%(//11 5II3444/66 <!#'9#K#KLY^L_#`#` < <?4466 #"< < < < < < < < < 99Q>99

7 3 3d :;;;;	<< < < < < < < < < < < < < < < ##$GHHH+/<3N0`0`0`+a+a(+2244 8II67772D99 >Q%)Y%E%ElSXFY%Z%Z > >	?4466 #"> > > > > > > > > %==00 w //	&0A$-0PRVRaRsRsRuRuvvv99Q>99

9 5 5 <====>> > > > > > > > > > > > > > > *,
:&((D0(($$t$444),
:&L7EEE.1+.>.>]++M:FFF	)T** /aIIlA.../ / / / / / / / / / / / / / / &((2-&++  -LUa  -L  -L{}  -L  -L  -L  -L  M  M  M !L$?!G!G!GHH	! .$++-- ..66KL K KVbcpVq K KQZK K\jK K K  
 *.!66|D7IJJ ..66K| K Kaj K K\jK K K   *.'(9:;KL 67&67H&I&&QOO--iZii iYhi i JVi i [fi i i #!-#) .     #$K*,,B)CCLQUDVO]MZ D \ \C  #UPS#U#U) j] j$(;;H- D (,C>,C,C C, E (,D],D,D D$(i_f(i(i(iiH++H555 $t'7'7)5 #+9*7	 (8 ( (  ".0025.33y<yyikyyyy    .33u,uuu  
 ' 74E[1!)T22 7a IIlA6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ;6
d1$;;{++ dO--R, R R R"\f .     O--.lcj.l.l.8<\b . d d dNOOOOOs  Ac+3D$Ac+0IAc+I	Ac+I	FAc+*!TB7ST$S((TAc+T	Ac+T	DAc+2B[8Ac+[	Ac+[	IAc+"A*fAc+f	Ac+ f	!A8Ac+Ar*Ac+8ArBmro $An;5r:n;;o  B?r Ac+r	Ac+r	C
Ac+>AK GAK2~AK~AK!~"AK&A'AH@AK@EAHEAKEA*AHG6AH	G8AHHAHHAHHAHHAHHAKHAKH"A<AJ$JAKJ$'AKKAKKAc+K3ALLA5Ac+M7=APN4Ac+OAAPP	Ac+PAP	PAc+PAP	PA3Ac+R=AVSAc+SBAVU5Ac+VAV	VAc+VAV	V	B'Ac+X0AYYAc+YAY	YAc+YAY	Y IAc+b%AccAc+cAc	cAc+cAc	cAc+c+A+Aec                    | j                                         }t          j        |          \  }}}||z  dz  }| j                             d| d           | j         j                            d           | j        j        r| 	                                 | j         j                            d           | 
                                 |                                 | _        | j         j        j                            dd          r@| j         j                            d           |                     | j        j        d	           n&| j                             d
t$          j                   |                                  | j         j                            d           |                     | j        j        d           | j         j                            d           |                     | j        j        d           |                     | j        j        d           | j        j        r~| j         j                            d           |                     | j        j        d           | j         j                            d           |                     | j        j        d           | j                             d           |                     | j        j        d           |                     | j        j        d           | j                             d           |                     | j        j        d           |                     | j        j        d           | j                             d           |                     | j        j        d           | j                             d           |                     | j        j        d           dt@          j!        d <   d!| j         _"        | j         #                                 tI                       d"t@          j!        d <   | j         j                            d#           | %                                 d$S )%u_   
        Загружаем все данные из апи, кроме аттачей
        d   u   Свободно места: r  u$   Скачаем данные из APIu9   Дампим глобальные настройки Jirar$  Tu'   Дампим пользователейr   uA   Не дампим пользователей из-за опцийr%  u   Дампим статусыr.  u    Дампим типы задачrr  issue_security_schemesu*   Дампим бизнес процессыrI  u7   Дампим схемы бизнес процессовrU  u   Дампим экраныr.  rA  u!   Дампим приоритетыr  r  u+   Дамп решений(резолюций)r  u   Дамп фильтровr  r   r&     r'  u   Дампим проектыN)&r4   rj   rv   
disk_usager5   r`   r  rG   rQ   r  r  rW   rX   r  r   rT   r
  r   r^   r  r  r2  get_issue_typesget_issue_security_schemesget_workflowsget_all_workflow_schemesget_all_screensget_screen_schemeget_all_prioritiesget_priority_schemesget_all_resolutionsget_all_filtersrw   r@  rA  r8  r7   r_  )r"   download_pathrs  usedfreefree_percents         r#   download_datazJiraAPIImport.download_data  s    99;;"-m<<tTe|c)KLKKKLLL##$JKKK9? 	!   ##$_```'')))$($B$B$D$D!?(.22<FF 	|O"''(QRRRdi17;;;;O ckrkz{{{##$ABBB$)0*===##$FGGG$)3]CCC$)>@XYYY9? 	UO"''(TUUUdi5{CCCO"''(abbbdi@BSTTT7888$)3Y???$)5GGG?@@@$)6EEE$)8:LMMMIJJJ$)7GGG7888$)3Y??? "$
:#% !$
:##$ABBBr%   c                 :   dt           j        d<   t          j                            | j        j        g d          }|j        rHt          |j	        |j        z            dz  |_
        |                    d           t                       dt           j        d<   d S )	Nr   r&  )r   r  rA  )r   rz   ra  TrS  r'  )rw   r@  rR   	CmfImportrT   r4   r   r  r  r   rA  r8  r7   )r"   r4   s     r#   r  zJiraAPIImport._calc_progress  s    !#
:%))T_-?1k1k1k * m m
' 	"%j&FIe&e"f"fil"lJOOdO+++LLL!$
:r%   c                    ddl m} t          |d          d          } |            }d |d         D             }t          |d          5 }t                              |          }d d d            n# 1 swxY w Y   | j        j        j        j         d|d	          }t          j
                            |
          }	|	s"t          
                    |d| j                  }	|	j        r$|d         |	_        |	                    d           n#| j        j                            d|	 d           ddg}
g d}|
|z   }dg|
z   }t          j                            |	|          D ]|}|j        s1| j        j                            d|	 d|j        j         d           :|
D ]}t)          ||g            |D ]}t)          ||d           |                    d           }|d         D ]}	 d| j        j        j        j         d|d	          d}|                    |d                   r.t          j                            ||d                  d          }n#| j        j                            d|            ddd | d g}t          j                            ||!          }|sut          j                            ||	|"          }|s2| j                            d#| d$|	%           | xj        d&z  c_        |j        r|j         | |_        n||_        |j        s=|d'         d(         d)k    ri| j        j        j        j         d|d'         d)         d	          }t          j                            |
          }|j                            |           n|d'         d(         d*v r	d|_        n|d'         d(         d+k    r	d|_        n|d'         d(         d,k    r	d|_        n|d'         d(         d-k    rd|_        d|_         n|d'         d(         d.k    r	d|_!        ns|d'         d(         d/k    r| j"        j#        r=|d'                             d0          r!| $                    |d'         d0                   }n!| $                    |d'         d1                   }|r|j%                            |           n| j                            d2| d3|%           | xj        d&z  c_        |d'         d(         d4k    rV| j"        j#        r*d| j        j        j        j         d|d'         d0          d}n/d| j        j        j        j         d|d'         d4         d          d}t          j&                            ddd | d gdg!          }|s9|d'         d4         d         }t          j&                            dd5|gdg!          }|rY|j        s||_        n||j        vr|j         | |_        |                    d           |j%                            |           np| j                            d6| d7|%           | xj        d&z  c_        y| j                            d8|d'         d(          d9|%           | xj        d&z  c_        |                    d           #  | j                            d:| d;d<=           | xj        d&z  c_        Y xY wg d>d?gd@dAgdB}|'                                D ]\  }}	 t          j                            dCdD|gdEdD|	gg|!          }|D ]m}t          j                            dCdD|gdEdD|	gg|!          }|j        s3|D ]!}t)          ||tQ          ||                     "|                    d           n#  | j                            dF|	 dG| dH| dIdJdK=           | xj        d&z  c_        Y xY wtS                       |	S )LNr   r  rH  r  c                 V    i | ]&}|                     d           |d          |d         'S )r  rM   r   r   s     r#   r;  z6JiraAPIImport._process_permissions.<locals>.<dictcomp>  sE     
 
 
ww{##
c&k
 
 
r%   r  rS  r&  r   r0  Tr.  rS  r4   r   r1  u#   Схема прав доступа u@    была изменена и не будет обновленаaccess_project_roleaccess_members)access_local_useraccess_owneraccess_owner_assistantaccess_authoraccess_spectatorsaccess_executorsaccess_responsibleaccess_list_owneraccess_project_owneraccess_project_owner_assistantaccess_project_spectatorsaccess_project_executorsaccess_sdesk_clientaccess_anonymousaccess_guestaccess_sharelink_anonymousr   rh  u&   В схеме прав доступа u+    было изменено правило 'u,   ', оно не будет обновленоFr  r  )rM   r  u4   Не нашли соответствия права r.  r  r  r  )project_permissionr)  rz   u*   Не найдено правило для zERR-0059rA  r3   r  rJ  projectRole)applicationRoleanyoneprojectLeadr  rd  sd.customer.portal.onlyr  r   r  u9   Не нашли пользователя для прав zERR-0060r  r  u-   Не нашли группу для прав zERR-0061u'   Неизвестный тип прав zERR-0062u6   Не удалось загрузить правило zERR-0063CmfProjectPermPermissionr  )zPPP-RELEASE-EDITzPPP-OBJ-CREATEzPPP-OBJ-EDITzPPP-OBJ-DELETEzPPP-OBJ-TREEMOVEzPPP-OBJ-ORDERzPPP-TSK-ASSIGN-EXECUTORSzPPP-TSK-DEADLINEzPPP-TSK-ORDER)zPPP-PR-ADMINzPPP-TSK-ASSIGNzPPP-TSK-SCHEDULEzproject_permission.coder=  r)  u   В схеме uR    не удалось скопировать разрешения из права 'u   ' в 'r  zERR-0113CmfProjectPermSchemeRule)*r  r  r   rm   rn   ro   r4   r4  r5  rR   CmfProjectPermSchemerT   rS  r   r8  r`   r  r  r   r  r  r  r;   r:   r.  r  ry  r   r{  r  r  r|  r~  r  rG   rQ   rC  rz  r  r   getattrr7   ) r"   ro  r  rK  r  map_permrs   perm_scheme_dictr.  perm_schemerule_list_access_fieldsrule_bool_access_fieldsrule_access_fieldsrule_fieldsscheme_rule
list_field
bool_fieldrM  r  r:  r  r  rJ  r  r  copy_access_rulesfrom_rule_codeto_rules	from_ruleto_rule_codeto_rulerule_access_fields                                    r#   r  z"JiraAPIImport._process_permissions  s
   ,,,,,,,}"=PPPQQhjj
 
"#<=
 
 

 /3'' 	,1#yy||	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,O*1=YYAQRVAWYY155V5DD 	w 55VUYfjfu5vvK& 	/7K....O"** Dk  D  D  D  
 "#
#
 #
 #
$ 57NNe55 ":?? @ 
 
 	/ 	/K . &..A[ A AALA_AdA A A  
 5 5 5
Z44445 8 8
Z7777.... *-8 U	% U	%IT%^do4;G^^9UY?^^^<<	, 788 !:>>HYWcMdDew{>||DDO*223ujs3u3uvvv#V]]]];$=AAYdAee" 
4"("A"E"EY]fq  {F"E  #G  #GK& !112j_h2j2j2<+ 2 O O O1, ") 40;0B-LF-L-L**-3*"2 X&v.-??%)_%;%B%N"|"|R[\dRefsRtuyRz"|"|K!044K4HHD3::4@@@@x(04QQQ48K11x(0MAA7;K44x(0J>>59K22x(0J>>/3K,04K--x(04MMM6:K33x(0F::y T$X.227;; T%)%5%5i6I'6R%S%SF!%!1!1)H2Ek2R!S!S !#299&AAAA112ynw2y2y2<+ 2 O O O1, x(0G;;y |!sdo&<&C&O!s!sS\]eSfgnSo!s!s!s!{do&<&C&O!{!{S\]eSfgnSopvSw!{!{!{"155hP]TZP]P]P]=^hpgq5rrE  s%.x%8%A&%I
 & 5 9 9&'S]A^hpgq 9 r r !$| E+1ELL#5<77.3l+DF+D+DEL

t
444#299%@@@@112mbk2m2m2<+ 2 O O O1, O--.uXabjXklrXs.u.u.8k . K K KOOq(OO  T 2222%))*ncl*n*n*4?Y * [ [ [1$
   + #!
 
" ):(?(?(A(A !	% !	%$NH %";??2CH!34 . @  	 %- 3 3L$=AA6\J%sK8   2 B  G #2 ! -?  )#-#I/@AA   
 LLTL2222!3"%))J[ J J(6J J>FJ J J7	 *    1$sS   A22A69A6-BZ8<B Z8>&Z8&GZ89E'Z8"<Z8 Z882[-B^//9_*c                    t          d          5  d}	 |                                }|dk    rn`| j                                        rnE| j        j                            d|d                     	 | j                            |d         |d         t          j	        	           | j        j                            d
|d                     t          j                            |d                   }d|_        |                                 t                       | j                            d           nU# t           $ rH}t#                       |dz  }| j        j                            d|d          d|            Y d }~nd }~ww xY w||                    |           d d d            d S # 1 swxY w Y   d S )NFr  r   Tr  u    Пытаемся скачать r  r  r  u   Сохранили в r   r8  rP  r3   u+   Неудалось скачать файл r  )r   rT   r4   r6   r`   r  rG   download_filer   IMPORT_DOWNLOAD_TIMEOUTrR   r  r  r8  r7   ra  r8   r9   r  r  )r"   download_queueerror_queuers  r  download_job_objr  s          r#   _download_file_workerz#JiraAPIImport._download_file_worker  s4   5111 	$ 	$F@-11336))?,,.. &++,e|\bOc,e,efff@I++$V,$V, & > ,   
 O*//0_V\I]0_0_```'-'?'C'C|TXGY'C'Z'Z$26$/$))+++LLLO,,\::::  @ @ @ NNNaKFO*445~copvcw5~5~{|5~5~@)@0 OOF###7	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s=   A#F35CD:9F3:
F>FF3FF33F7:F7c                 Z   | j         j                            d           | j                                        }| j                                        }d}| j                             dg           dd| j         j        j        j        gg dg}t          j	        
                    |          s!| j         j                            d           |S g }t          | j                  D ]u}| j                            | j        d	| ||d
          }|                    |           |                                 | j         j                            d|            vt          j	                            |ddg          D ]E}| j                                         r n)|                    |j        |j        |j        d           Ft1                       |D ]}|                    d           |                                s|D ]}|                                 | j                                         r|S | j         j                            d           |                                sF| j                                         r|S ||                                z  }|                                F|S )Nu=   Скачиваем все найденные вложенияr   zplugin.plugin.source_hashr5  r   )r  r   Fr%  u   Вложений нетr  )r  r  r  u    Запустили задачу r  r  r  )r   r  r  r  u%   Закончили скачивать)r4   r`   r  r   r  r   r4  r5  rR   r  r   r3  r   r   r  r  r   r  slistr6   r  r   r  r  r7   r  r   rT   )	r"   r  r  r?   r:  procsr  r'  r  s	            r#   download_fileszJiraAPIImport.download_files  s   ##$deee))++j&&((##%@$ABBB!4)?)F)RSUpUpUpq'--W-== 	O"''(BCCCJt899 	S 	SA>((0JQlijQlQlCQbm0n0n ) p pDLLJJLLLO"''(Q4(Q(QRRRR"4::'SY[aRb:cc 	n 	nL((** lo|?PZfZkllmmmm 	' 	'Dv&&&&##%% 	  		?$$&& 	J##$LMMM##%% 	%((** 
;??$$$C ##%% 	% 
r%   c           	      8   | j                                         rd S | j         j                            d|d          d|d          d           d }t	          |d          d          }t          |          5 }t                              |          }d d d            n# 1 swxY w Y   |rn| j         j        j        j	         d|d	          }t          j                            |
          }|s"t                              || j         d          }|j        r'|d         |_        |                    d          |_        ||_        |                    d           |d         D ]}|d          d|d	          d}| j         j        j        j	         d|d	          }	t          j                            |	
          }
|
s#t                              ||	| j         d          }
|
j        r|d         |
_        |                    d          |
_        t          j                            |
          D ]}|                    d           |                    dg           D ]}	 t                              |
          }|                    d          }|                    d          }|dk    r't          j                            d          |_        n5|dk    rv| j         j        j        j	         d| }t          j                            |
          }|r't          j                            |
          |_        nt3          d|           |dk    r't          j                            d          |_        n|dk    r't          j                            d          |_        n_|d k    r't          j                            d!          |_        n2|d"k    r|rd| j         j        j        j	         d| d}t          j                            d#d$d%| d%gd#g&          }|s;| j        j        r|d'         n|}t          j                            dd(|gd#g&          }|rG|j        s||_        n||j        vr|j         | |_        |                    d           ||_        n]t3          d)|           t          j                            d*          |_        n$|d+k    rr	 |                     |          }n$# t2          $ r}t3          | d,          d }~ww xY w|                     |d-d-.          \  }}|r||_        nt3          d/|           |d0v rj| j         j        j        j	         d| }t          j                             |
          }|rtC          |j                  g|_"        nPt3          d1|           |d2k    r&t          j                            d3          |_        nt3          d4|           |                    d           tG                       # t2          $ r>}| xj$        d5z  c_$        | j         %                    d6| d7| d8|9           Y d }~d }~ww xY w|
                    d           tG                       |                    d:          rVtM          |                    d:                    tM          |d	                   k    r|
|_'        |                    d           tG                       |S );NuV   Импортируем схему безопасности задач проекта "r   r  r   r  rH  r  r&  r   r0  TrY  r   r1  r  r  rj  r  rY  r  rJ  r   r  zvar:current_userrL   r  u0   Не найдена проектная роль r  zvar:project_ownerrd  z
var:authorr  zvar:responsibler  r.  r  r  r  r  r  u!   Не найдена группа Usersr  r  Fr  u+   Не найден пользователь )groupCustomFielduserCustomFieldu>   Не найдено пользовательское поле r  zsdesk-client:defaultu-   Неизвестный тип правила r3   uF   Не удалось создать правило для уровня r   zERR-0070rA  defaultSecurityLevelId)(r4   r6   r`   r  r   rm   rn   ro   r4  r5  rR   CmfSecurityLevelSchemerT   rS  r   r   r  r8  rv  CmfSecurityLevelRuler   rc  r  access_memberr  r8   r  rG   rQ   r.  r  r  CmfCustFieldr-   access_task_fieldsr7   r:   r;   r  default_task_security_level)r"   ro  r  r  rs   r  scheme_ext_idrc   	level_msglevel_ext_idr  
level_ruler  member_typemember_valuer  r  r.  r  r  r  r  rJ  r  cust_field_ext_id
cust_fields                             r#   r  z&JiraAPIImport._process_security_levels  s   ?$$&& 	F## Wfrsyfz  W  W  AM  NS  AT  W  W  W	
 	
 	
 !%L7TTTUU	)__ 	 99Q<<D	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  C	#5<HXXDQUJXXM$*$A$E$E]$E$[$[!( (.(E(E(#$( )F ) )% %4 E-1&\%*-1XXm-D-D%*48!1!&&4&888h pA pA$V}>>d>>>	"&/"8"?"K\\uUY{\\!'!8!<!<L!<!Q!Q% %+%<%<!6+#'?(,	 &= & &N "1 ]*/-N'*/))M*B*BN'&,&A&F&Fn&F&]&] A A
"))4)@@@@"'))Ir":": V VU)/)D)DN)D)[)[J*0**V*<*<K+1::g+>+>L*.???;A;K;O;OUg;O;h;h
 8 8!,!=!=151G1N1Z.l.l^j.l.l'-'<'@'@'@'T'T#' !w?E?T?X?X`k?X?l?lJ$<$<*34ugs4u4u*v*v$v!,!=!=;A;K;O;OUh;O;i;i
 8 8!,
!:!:;A;K;O;OUa;O;b;b
 8 8!,
!:!:;A;K;O;OUf;O;g;g
 8 8!,!7!7#/ !g-o$/2H2O2[-o-o_k-o-o-oF,2,A,E,E08&-f---/P08z -F -& -&E ,1 %*LPIO5mVK5H5Ham
060E0I0I4:GZ3P4<: 1J 1* 1* (- 	%l/4| )U;AELL-35<-G-G>Cl;TF;T;TEL(-

t
(D(D(DCH
(@(@.78j\h8j8j.k.k(k @F?T?X?X^e?X?f?fJ$<$<!,!6!6!F040M0Ml0[0[II'0 !F !F !F*3s  5E  5E  5E  +F  +F  %F!F,0,@,@SXaf,@,g,g	#) !r?EJ$<$<*34pbn4p4p*q*q$q!,0W!W!W7;7M7T7`4r4rdp4r4r 1-3-@-D-DL]-D-^-^
#- !EEHEYEYDZJ$A$A*3  5D  vB  5D  5D  +E  +E  %E!,0I!I!I;A;P;T;TZp;T;q;q
 8 8&/0m`k0m0m&n&n n&OOO===&LLLL(    OOq0OO O55 {ir { {vy { { *$. 6         ###55588455 A#dhhG_>`>`:a:aehinositeueu:u:uHV)E)..4.@@@LLL$$sP   7BB"%B"#J	X0-TX0
T$TT$$D
X00
Y8:3Y33Y8r   c           	      t   |d         d                              dd          }|d| j        j        j        j                                         z  }|d         d|g g g g dd	d	d
}|d         }|d         d                             dd          d         }|dk    rd|d<   n|dk    rd|d<   n	|dk    rd|d<   n|dk    rd|d<   n|dv rd|d<   d |d         D             |d<   n|dv rd|d<   d |d         D             |d<   n|dk    rd |d<   |d         |d<   n|d!k    rd"|d<   i |d<   n|d#k    rd$|d<   n|d%k    rd%|d<   ns|d&k    rd'|d<   ng|d(k    rd)|d<   n[|d*v rd+|d<   nQ| j                            d,|d-          d.|d          d/|d         d          d0d1d23           | xj        dz  c_        d }|S )4Nr   r   customfieldcfr  r   T)r  rD  rE  rq  F)r  r   r  visible_filterrequiredrequiredChangedr   r   rC  r3   r  textarear   field_custom_type	textfieldr-   floatrT  )rA  radiobuttons
choice_strc                 ,    i | ]}|d          |d         S r   r   r/   r   opts     r#   r;  z,JiraAPIImport._map_field.<locals>.<dictcomp>  "    VVV#c$iWVVVr%   rh  r  )multiselectmulticheckboxeschoice_multic                 ,    i | ]}|d          |d         S r  r/   r  s     r#   r;  z,JiraAPIImport._map_field.<locals>.<dictcomp>  r  r%   r  r  cascadingselectchoice_cascade_multi
datepickerdater  r  r  r  r   )r  r  r  r  r   r  u6   ) имеет неподдерживаемый тип 'r  zERR-0064r  r  )r  r4   r4  r5  r  r   r;   r:   )r"   r   r  r?   r   r  s         r#   
_map_fieldzJiraAPIImport._map_fieldu  s   ;'-55mTJJ
E$/07CEEKKMMM
.D
+-22_a"b"b!e= = +&	&x0:@@aHHL++'-C#$$;..',C#$$7**'.C#$$5((',C#$$#==='3C#$VV9AUVVVC	NN#EEE'5C#$VV9AUVVVC	NN8++'-C#$&y1C	NN#444'=C#$C	NN<//'-C#$$:--'1C#$$<//'-C#$$#444'.C#$$#FFF'/C#$$O%%hYv. h h9T? h hGPQYGZ[cGdh h h'	 &    OOq OOC
r%   c                    d | _         | j        D ]v}| j        t          j        j                 d         D ]Q}d|vr)| j                            dt          j	                     d S |d         d         |k    r| j        |         |d<   Rw| j        j
        j
        j        }t          j                            |dg          }|s#t                              d|d| j        	          }d
|_        |                                 t          j                            dd|          }| j        j        j                            dd          s!| j        j                            d           d S | j                            d           d t          j                                        D             }g }g }| j        t          j        j                 d         D ]}|                    d          r|d         d         s$| j                            d|d                     J|                     |          }	|d         d                             dd          }
|
d| j        j
        j
        j                                         z  }
|
|d<   |	s|	d         dv r|                    |           | j        j
        j
        j         d|d         d          }t          j                            |g d          }|s8t                              |d         |d         |	d         d|| j        d          }|
|v r||
         d         |j        j        k    rU| j                            d |d         d          d!|d         d          d"|j         d#||
         d          d$	d%d&'           | j                            d(|
 d)|d          d*           ||
         |d+<   n<| j                            d,|
 d)|d          d-           |                    |           |j        rt|d         |_        |	d         d.k    r|j        j        pi }tA          |j!        j                  ptA                      }|d         d/         D ]}|d0         si tA                      }|                    d1g           D ]G}tE          j#        |d2         d3d45          }|d2         |<   |d6         r|$                    |           Hfd7|D             }|%                    |           |%                                n|}||_        tM          |          |_!        |j'        rd|_(        |                    |           |                    d8           tS                       t          j*                            ||
||9          }|s2t          *                    ||
||9                              d8           tS                       |+                                 |rt          j        ,                    tZ          j-        .                                /                    d:          d
dd;           t          j        0                    d<d
i           d= t          j                                        D             }|D ]}||d                  |d+<   dDfd>	|D ]`}t          j        j1        |d+         d?                  }te          t                    |j3                 |d         d1         D ]} |           a| j        j        j        }|d@         D ]B}|d         t          j        j        k    r%| j        t          j        j                 d         |d<   C|| j        _        dAth          j5        dB<   | j                                         tS                       dCth          j5        dB<   d S )ENrz   r   uj   Текущая настройка не поддерживает импорт кастомных полейr   r   r  u8   Экран проектов Jira по умолчаниюTr   r.  rS  r4   r  _customr  )r   rJ  r)  import_custom_fieldsFuI   Отключен импорт пользовательских полейu8   Импорт пользовательских полейc                      i | ]}|d          |S r   r/   rV  s     r#   r;  z8JiraAPIImport._process_custom_fields.<locals>.<dictcomp>      WWWaqWWWr%   r   u!   Поле не кастомное r   r  r  r  r   r  )r  r  r  r&  )widgetr  r  disabled_choices)r  r   r  dirtyr.  r4   rS  r  u,   Неудалось смапить поле 'r  u   ): widget поля 'u7   ' не совпадает с существующим 'r  zERR-0065r  r  u   Поле с именем r  u4   ) есть в таблице, мапим в негоr   u(   Создаем поле с именем u   ), и мапим в негоr  rS  r  rh  r   r      seplengthdisabledc                     h | ]}|v|	S r/   r/   )r   r   default_choicess     r#   	<setcomp>z7JiraAPIImport._process_custom_fields.<locals>.<setcomp>#  s.     , , ,$'"/99  999r%   r1  )r  r   r)  ui_form_groupz%Y%m%d%H%M%S)meta_version
model_namerH  r]  c                      i | ]}|d          |S r  r/   rV  s     r#   r;  z8JiraAPIImport._process_custom_fields.<locals>.<dictcomp>R  s    [[[!1\?A[[[r%   c                    t          | t                    rC                    |           }|s |           }|j        r|                                 d S d S t          | t
                    r                    | d                   }|s | d                   }|                     dd          |_        |r|j        |_        |j        r|                                 |                     dg           D ]} ||           d S d S )Nr  r   r  Fr  )	r   r-   rT   r	  r8  r   
cmf_hiddenr   choice_parent_id)r  
parent_optr   childchoice_modelcreate_options       r#   r  z;JiraAPIImport._process_custom_fields.<locals>.create_optionV  s;   &#&& 0$((f(55 6(Lf555E# !JJLLLLL! !FD)) 
0$((fWo(>> ?(LfWo>>>E#)::j%#@#@  ;-7]E*# !JJLLL#ZZ
B77 0 0E!M%////
0 
00 0r%   r   r  r   r&  r'  r   )6rF   rt   r  rR   r  r   r4   r5   r^   r  r4  r5  r3  rT   r]  r8  CmfUiFormGroupr  r   r`   r  r   r  r  r  r   r  r  r;   rS  r  r  r'  r  r   translit_stripr(  r  r   r	  r  r7   CmfUiFormFieldinvalidate_cachecustom_fields_gen_metar  r  r
  custom_field_sync_update_modelsrz   varsr   rw   r@  )r"   ext_field_namer   r.  ui_view_formr  shop_fields
new_fields
m2m_fieldsui_fieldr   r  current_choicescurrent_disabled_choicesrS  default_disabled_choicesr  
option_keyr  ui_form_fieldfield_classr  rM  r  r  r  s                          @@@r#   _process_custom_fieldsz$JiraAPIImport._process_custom_fields  s#	   !". 	J 	JNv~'BCHM J J"e++O''  )U  W^  Wf  g  g  gFFF%d+~==)-)9.)IE+&J %,8'++63%+HH 	!++O $?	 ,  L '0#-11ywWc1dd,2667MuUU 	O"**[   FVWWWWW6>3T3T3V3VWWW

]6>#>?I i	) i	)E99[)) {1CH1M ##$Xg$X$XYYYu--H%d+33M4HHDC.5ACCIIKKKD E&M +,0```!!%(((.5A__U;EWX\E]__F,00KKK 1  J  	#00!'Nv&./B&C!#$( 1  
 {""t$X.*2C2IIIO--W!+.v6W W;@;Md;SW W,6,=W W 9DD8I(8SW W W #!/ .    ##  %M  %M  %Mg  %M  %M  %M  N  N  N'24'8m$$##  %Dt  %D  %DW\]dWe  %D  %D  %D  E  E  E!!%((() '%*7^
"/0L@@&0&8&>&D"O/2:3N3T/U/U/^Y\Y^Y^,#(#5i#@ D D&'89 %$*,36550&-kk)R&@&@ I IF)0)? &w$'')* * *J
 ;A/OJ7%j1 I 8 < <Z H H H, , , ,+:, , ,( )//0HIII'..???+C()8J&267G2H2HJ/( -'+J$%%e,,,D111 #155%#+	 6  M ! )%%)'"/	 &  
 $4$(((%%''' 	BN11$,$5$9$9$;$;$D$D^$T$T"+"    N::<Li;XYYY[[v~7X7X7Z7Z[[[K# B B'25='Am$$	0 	0 	0 	0 	0 	0 	0(   	& 	&E ./m0D\0RSK<<(9:L,Y7 & &f%%%%& ?06+, 	S 	SAyFN777"mFN,GHR((0%!#
:!$
:r%   c                 0   d t           j                                        D             }|d         }|d         }| j        j        j        j         d| }t           j                            |ddg          }|sI| j        j        	                    d| d	| d
           t                               d|d| j                  }|j
        }|j        r>||_        |                    dd          |_        ||_        |                                 n#| j        j                            d| d           |r| j        j        sddddddddddddddiddddddddddddd	}t           j                            |          }	|	D ]w}
|                    |
j                  }|rC|                    d d!          |
_        |                    d"d!          |
_        |d         |
_        |
                    d#           xng }t           j                            d$d%|gg d&g d'gd(g)          }|D ]T}||v r|                    d*           |j        |_        |                    d#           |                    |           Ud d d d d d+}	| j        j        s|	D ]}dd%|gd,d%|d-k    rd.nd/gd$d%|gg}|d0k    r|                    g d1           t           j                            |dd,g2          }
|
sst           j                            |d,g3          }|r&|d4         }
d|
_        |
                    d#           n)| j        j                            d5| d6| d7| d8           |
|	|<   t7                       t9          |d9                   }|d9         D ]}|d:k    r|	d;         r
|	d;         }
n |d         }|d         }| d| }t           j                            |d,d<gd=          }
|
sM| j        j        	                    d>| d?| d	| d
           t                               d/||d| j        @          }
|
j        r2| j        j                            dA| dB|
j         d	| dC| dD	           n]|
j        s2| j        j                            d5| dE|
j         d	| dC| dD	           n$||
_        ||
_        |
                    d#           |dF         D ]}|d                             dG          s!                    dHdI          }|dJ| j        j        j        j                                          z  }||vrjtC          tE          fdK| j#        t           j        j$                 dF                   d           }|s| j        j        j        j         d|dL         d          }t           j%                            |dMdNg          }t           j                            dOd%|gd$d%|ggdPg3          }|rA|j        s:| j        j                            d5| dQ|j&         dR|j'        j         dS           e|st           j                            dOd%|gd$d%|gg dTg dUgdV          }|r-| j        j                            d5| dQ|j&         dW           t                               |||| j        dX          }|j(        dYv r|	dZ         p|
|_'        n |j(        d[v r|	d\         p|
|_'        n|
|_'        |j)        rj|j'        j*        }|j'        j        }| j        j        	                    d>| d]|j&         d	| d^|d/k    rd_nd` da| db           |                    d#           |+                                 t7                       |S )cNc                      i | ]}|d          |S r  r/   rV  s     r#   r;  z1JiraAPIImport._process_screen.<locals>.<dictcomp>|  r  r%   r   r   r&  r   r4   r  u   Создан экран 'r  r  r  T)r]  r.  rS  r4   r   r   u   Экран r  ri  )r  rg  i  i  i  rg  i  ip  )hiddenrg  iX  i@  i(#  )	_main   Участники   Даты   Планu   Разработкаu
   Связи_addonr  _descrr  r  Fr  r1  r)  r=  )rS  r=  T)r4   r=  Nz-cmf_created_at)r   order_byrY  )r  r  r  r  r  rJ  r  r  tabr  )r  r=  click)r   r  rz   r  r   u   На экране u6    не найдена системная группа 'u   '. Возможно она была удалена пользователем. Поля на экране могут отображаться некорректно. Создайте группу с названием 'u$   ' и повторите импортtabsr3   r  r  )r.  rz   r  u   На экран u$    добавлена вкладка ')rJ  r)  r.  rS  r4   u   C экрана uD    пользователем была удалена вкладка 'r  uL   ). Изменения из импорта не будут примененыuF    пользователем была изменена вкладка 'rz   re  r  r  r  c                 R    |                      d          o| d         d         k    S )Nr   r   r   )r   jira_field_ids    r#   r   z/JiraAPIImport._process_screen.<locals>.<lambda>Y  s/    !IIk22 J %k 24 8M I r%   r   r  r  r  zui_form_group.typeu    поле 'um   ' было изменено или уже добавлено пользователем во вкладку 'uL   '. Изменения из импорта не будут примененыra  r  r  u   ' было удалено пользователем. Изменения из импорта не будут применены)r  r   r)  r4   rS  )r  r   r  rolesr  )r  r  r  u    добавлено поле 'r  u   во вкладкуu   в группуr  r  ),rR   r  r   r4   r4  r5  r3  rT   r`   r  r  rS  r   r   r  r8  r  rG   rQ   r  r   r  r  rg  r  rc  r   r7   r   r  r  r  r  r   r   r  r   r  r  r  r  r	  rJ  r  )r"   r,  r  r-  screen_namescreen_ext_idui_formui_form_is_newdefault_groupsui_form_groupsr  group_configcurrent_ui_form_fieldsui_form_fieldsr  r  r6  r  num_tabsr  tab_idtab_name
tab_ext_id
jira_fieldr   r   r  r  
group_typer  s                                @r#   r5  zJiraAPIImport._process_screen{  sb   WW6>3T3T3V3VWWW4L	Vn?18DSS	SS"&& & ' 
 
  		O"''HKHHIHHH   &&($ $?	 '  G !" 		&GL!::mR88GL&,G#LLNNNNO"**]g ] ] ]  
  I	=$)/ I	= ## 
 ##' '
 ## 
 ## 
 t) ## 
 ## 
 ## 
 ## A$ $NJ $277w7GGN!/ 5 5-11-2DEE D+7+;+;He+L+LM(+7+;+;He+L+LM(,8,CM)""t"44445 &("#277sG,222---
 ,, 8  N "0 = = $:::!(($(???+2+=(""t"444&--m<<<< #'  
 
 y  	;, ; ;
S*-SZ8-C-C''PsG,
 ++NN#;#;#;<<< & 5 9 9""8 !: ! !
 %  $277& &x 8  F  
(.q	/3,%**t*<<<<.66E E Epz E E U_E E E   .;z**vf~&&&> Z	9 Z	9C1}}!8} !/w 7Tv; -9999
 & 5 9 9%% %) !: ! ! % 
O*//n7nnX`nneknnn   %+$9$9"&)(,#'? %: % %M !, 9O*22e' e e+8+=e eBHe eLTe e e   
 '6 	9O*22eW e e+8+=e eBHe eLTe e e    *2M&47M1!&&4&888!(m j9 j9
 *4 0$//?? $,,]DAAGDO29EGGMMOOO{**    fn&AB8L  	 	  '+'='D'P$n$nTYZeTfgkTl$n$n!#044,!+ 5  
 !' 5 9 9%sJ7!30
 - !: ! ! ! )F O*22eW e e%/%7e e 1>0K0Pe e e   $ $*$9$=$=)3
;%sG4666666	  )- %> % %M % !.66i i i)3);i i i  
 !$*$9$9#-!&#'?(, %: % %M / 4   3AAU2V2gZgM//1 6   3A2L2]P]M// 3@M/ + 9!.!<!AJ!.!<!AJO*//p7 p p8B8Jp pOSp p4>%4G4G00M^p pblp p p  
 "&&4&888Uj9X 	  """r%   u,   Обработка схемы экрановc           
      \   |                     d          r|d         }|d         }| j        j        j        j         d| }t          j                             |dg          }|s"t                              || j        d          }|j        rHd |                     d	          D             }|d
         |_        |	                    d           |j
        s7t          j                            |          D ]}|                                 |d         D ]}|d         }	d }
|	dk    re| j        j        j        j         d|	 }t          j                             ddd| dg          }
|
s!| j                            d|	 dd           x|d                                         D ]*\  }}|                     |          }|s$| j                            d| d| dd           A	 |                     |          }n*#  | j                            d| d| dd           Y xY wddd d!dd d!d"}| j                                        r  d S ||d#|                     |d          | j        d$}t	          j        j         d+i |d%d&gi}|st	          j        d+i |}|
r|j                            |
           |	                    d           ,nD| j        j        j        j         d|d          }t          j                             |dg          }|sJt                              |d'          d(|d
          || j        d)          }|	                    d           t          j                             | j        j        j        j        dg          }|j        rxt          j                             |dg          }|s"t                              |d| j        *          }|j        r+||_        ||_        d#|_        |	                    d           t3                       |S ),Nr  r   r&  r   r  TrY  c                      i | ]}|d          |S r8  r/   )r   rM  s     r#   r;  z8JiraAPIImport._process_screen_scheme.<locals>.<dictcomp>  s    JJJ1T71JJJr%   r.  r   r1  )r  rr  r=  rM  r.  r  r  r  r%  ;   Не удалось найти логический тип rX  CmfUiFormSchemer  r>  u8   Не удалось найти в дампе экран u    для zERR-0069u:   Не удалось импортировать экран zERR-0068r
  r  rh  )rM  r
  r  r  r;  r<  r:  r  )r  r  r]  crud_choicer4   rz   logic_typesr   u+   : Схема экранов проекта r   r.  r4   rS  rx  r/   )rT   r4   r4  r5  rR   r1  rS  r   r   r8  r  CmfUiFormSchemeRuler   rc  rl  r;   r   r5  r6   r3  r   r3  r  r  r]  r7   )r"   ro  screen_scheme_datascreen_scheme_idr.  r  r.  r  issue_type_datarx  r[  r  r  r-  r,  r!  action_mappingr  r  s                      r#   r  z$JiraAPIImport._process_screen_scheme  s+   011 r	0!-.B!C1$7.5AWWEUWWF#377vse7TTN! !'!7!7!#$( "8 " " - H4JJd.>.>y.I.IJJJ&8&@####555%, & & : ? ?~ ? ^ ^ & &'9-'H >4 >4O$3M$BM!%J$	11/3/E/L/X,k,k\i,k,k)%+%8%<%<XvWs]nWsWsWsDt%<%u%u
) % O55 m^k m m *): 6   
 %-<Y-G-M-M-O-O /4 /4)	!(Y!7!7% % O55 v[d v vnt v v *): 6   
 %%&*&:&:6&B&BGG% O55 x]f x xpv x x *): 6   
 %H (1&.$,$*,4*2.4* *  ?4466 #"FFF /=&-.7+9+=+=fi+P+P*./% %	  &9=bb	bbS`Rabbb# K#)#=#J#J	#J#JD% @ ,33J???		d	3333_/4b .5AYY\RVEWYYF#377vse7TTN! 6!'!7!7(/rr\hio\prr!#$(	 "8 " " ###555!+//t7M7T7`jmin/ooL- 0155VSE5RR !55%(,#'? 6  D
 ' 0*8D'".DK*3D'II$I///s   ,H%H)c                 
   i }t                      }|                    d          s|S d t          j                                        D             }|d                                         D ]Z}|d                             d          s|d                             dd          }|d| j        j	        j	        j
                                         z  }||vrn| j        t          j        j                 d         D ]}|                    d	          s|d         |d	         d         k    r|d
                                         D ]~\  }}	|	                    d          s|                                }
|	|
d
<   |                    |i           }|
||
d         <   |	d         r!|                    di           }|
||
d         <   ʐ\|                                D ]{\  }}d}| j        j	        j	        j
         d|d          }|d          d|d          }|dk    r~d| j        j	        j	        j
         d| d}t          j                            ddd| dg          }|s!| j                            d| dd           |d| z  }|d|d          z  }n|dz  }t          j                            |dg          }|s9t                              ||d| j                  }|                    d            |                    ||f           |                                D ],\  }}
|
d
         }	| j        j	        j	        j
         d| }t          j                            |g d!          }t          j                            ||"          }|s"t                              ||| j        #          }|	                    d$d%          |_        |	                    d&d%           |_        |j        d'k    r|j        j        pi }t          |j        j                  pt                      }i }t                      }|	                    d(i                                           D ]`}t=          j        |d)         d*d+,          }|d)         ||<   |d-         r|                    |           ||vr|                    |           a|                     |           ||_        tC          |          |_        ||_        tC          |          |_        |                                 |j"        r|                    d            tG                       .}|S ).u1    Импорт конфигураций полейr`  c                      i | ]}|d          |S r  r/   rV  s     r#   r;  z5JiraAPIImport._process_field_conf.<locals>.<dictcomp>@  r  r%   r   re  r  r  r  rz   r   rS  rg  r  Nr&  r   5   : Конфигурация полей проекта r   r.  r  r  r%  r0  rX  CmfCustFieldConfSchemer  u    для типа     по умолчаниюr   r  Tr  r1  )r  r  r  )r  r)  )r  r)  r4   rU  FrT  r  rh  r   r  r  r  r  )$r'  rT   rR   r  r   r~   r  r  r4   r4  r5  r  r  r   r   rh  rj  rl  r;   r  r8  r(  r  r  r  visibler  r  r   r  r   r  r  r   r	  r7   )r"   ro  logic_type_fieldslogic_type_field_confr  rb  r   
task_fieldr  rS  r   rz   r[  r  r   r  r  field_idfield_ext_idr  r  r  r
  r  r  r  r  s                              r#   _process_field_confz!JiraAPIImport._process_field_conf7  s     #.. 	)((WW6>3T3T3V3VWWW '}5<<>> 	8 	8Jd#..~>> #D)11-FFJIdo4;GIIOOQQQJ,,"mFN,GHR 8 8
!~~k22 d#z+'>t'DDD2<Y2G2M2M2O2O 8 8.w&{{400 %$ * 1 1+2i(!2!=!=mR!P!P.3uT{+"#34 8%6%A%A%%L%LF27F5;/%8* &7%<%<%>%> \	 \	!M6J(,(>(E(Q%i%iUabfUg%i%i""5)vv`lms`tvvD%%$g)?)F)R$g$gVc$g$g$g!#044XvOgSdOgOgOg<h4ii
! O--eVcee"!9 .   
 &*>}*>*>>&@Jv,>@@@22$599AWad`e9ffO" 7"("9"91$(#	 #: # #  $$$666!%%z?&CDDD $*<<>> 9 9%	*"&/"8"?"KYYxYY#044'   5  
 )/(D(H(HT^gv(H(w(w%, ,2,H,H#-.#'? -I - -)
 29\51Q1Q%.4;KK
E4R4R0R%-/<??&0&8&>&D"O/2:3N3T/U/U/^Y\Y^Y^, G'*uu$")++i"<"<"C"C"E"E E E%,%;"7O ##%& & &

 /5Wo
+!*- =,00<<< &_<<488DDD $**73334;)1=ABR=S=S):)8J&267O2P2PJ/%**,,,( 6OOO555s9v %$r%   uA   Обработка схемы конфигурации полейc                 D   | j         j        j        j         d|d          }t          j                            |dg          }|sJt                              |d          d|d          || j         d	          }|                    d
           t          j                            |dg          }|sKt                              |d          d|d          d|d| j                   }|                    d
           |                     |          }|	                    d |f           |j
        rt          j                            |          D ]}|                    d           t                      }|D ]Z\  }}	|	                    |	           ||	|r|gng d| j         d}
|sd|
d<   t          j        di |
}|                    d
           [|D ],}	|	                                 |	                    d
           -|                                 || _        |S )Nr&  r   r   r  r   u@   : Схема конфигурации полей проекта r   Tr4  r1  r<  r>  r  r  rY  )r)  r  r3  rS  r4   r3   rg  r/   )r4   r4  r5  rR   r=  rT   r8  r  rE  r(  rS  CmfCustFieldConfSchemeRuler   rc  r'  
calc_cacher  r  )r"   ro  r.  r  r  rA  r  field_confsr[  
field_confr  s              r#   r	  z(JiraAPIImport._process_field_conf_scheme  s   O*1=UUdASUU!'!>!B!B&Z]Y^!B!_!_% 	:%+%B%B$U+  D  Dmy  {A  nB  D  D? $	 &C & &" #''D'999 155VSE5RR 	3$55$U+  Q  Qbnoubv  Q  Q  Q $?	 6  O   T 222 $ 8 8 F F!!4"9:::!1 	29>>F\>]] 3 3T2222%%K*? , ,&
J
+++4'13=#EJ<<2'+"&/ 	 " -+,Ii(8EE9EE		d	++++) 2 2
%%'''D1111//111&<#%%r%   c                 T   |                                   | xj        |                                 z  c_        | j                                         |                                  |                                  |                                  |                                  |                                  |                                  |                                  | 	                                 |                                  | 
                                 |                                  |                                  | j        j        rP|                                  |                                  |                                  |                                  |                                  |                     | j        j        j                            dd                     |                     | j        j        j                            dd                     |                                  |                                  | j        j        j                            dd          r(| xj        | j                                        z  c_        n| j        j                            d           | j                                        rd S d| j        _        | j                                         t=                       | j                            d           |                                  D ]}|d	         d
 | j!        D             vr| j        j        "                    d|d          d           	 d| j        j#        j#        j$         d|d	          d}| j        %                    || j        j                   # tL          $ r,}| j        j        '                    d|            Y d }~d }~ww xY w| j                            d| j        j(                    | j         S )Nprocess_task_linksT)r  import_filtersprocess_linksu2   Отключена обработка ссылокra  r  r   c                     g | ]
}|d          S r8  r/   r   s     r#   r   z0JiraAPIImport.process_import.<locals>.<listcomp>"  s    $Q$Q$Q3SY$Q$Q$Qr%   u'   Импортирован проект 'r   r  r&  )r!  uC   Не удалось создать отчет по проекту. u-   Импортировано объектов: ))rs  r:   r  rG   r  r  r"  r,  r5  r  r  r  rQ   r  r  rH  r  r4   r  r   rT   r  r  r  process_cross_linksr`   r  r6   rA  r8  r7   r5   r   r]   r  r4  r5  project_statsr8   errorr   )r"   r  r  r  s       r#   process_importzJiraAPIImport.process_import  s   4..000	     """##%%%!!###9? 	"""$$$!!!))+++!!!   4:>>?SUYZZ 	  	
 	
 	
 	4:>>?OQUVV 	 	
 	
 	
 	$$&&&?(.22?DII 	aOOtBBDDDOOOO"**+_```?$$&& 	F#& H%%%))++ 	z 	zGt}$Q$Q$:P$Q$Q$QQQO"''(dRYZ`Ra(d(d(deeez!ddo&<&C&O!d!dSZ[_S`!d!d!d--nT_E[-\\\\ z z z&,,-xsv-x-xyyyyyyyyzsDOLqssttt?""s   8A	O
O8"O33O8)T)r  r  )TTNr  r   )F)r   ri  F)Nr  r  )r)   r*   r+   r,   r  r.   r   r-   r   r   rO   propertyrt   r|   r   r   staticmethodr   r	   r
   r   rd   r   r   r   r   r   r
  r  r  r=  rC   rK  r{  r  r  r   r  r  r"  r,  r5  rR   rh  r  ra  r  r  r9  r  r  r  r  r  r  r  r  r(  r  rH  r  r  r  rC  r   r  r  r  r  r  r  r   r$  r,  r3  r7  rA  rQ  r\  r_  r  r  r  r  r  r  r  r  r  r  r  r
  r   r   r  r`  r^  re  r  rl  r  r  r  r  r   rD  rL  rc  ru  rf  r  r  r"  rB  rW   r  r  r  r  r  r   r  r  r  r  r  r  r_  rs  r  r  r  r  r  r  r  r5  r  rE  r	  rS  __classcell__)rf   s   @r#   rE   rE   B   s%        EEOOOT	?"""#W #$ # # # # # #0 "T#t)_ " " " X". . .  
   'y 'c 'htDz>R ' ' ' \'A A ADc3h,@    B   \     \ E E E" ! ! ! \!F<tDz < < < <|d    
DJ 
4 
 
 
 
 =E (   2 _OPP* * QP*" _:;;H H <;HT _YZZT3 T T T T [ZTlw w w& _:;;2X 2XY 2X 2X 2X <;2Xhr" r" r" r"h _455!Q !Q 65!QF _DEEc c FEc6 _:;;7 7 <;76LHZ L L L L\0 0 0dT T T Tlx x x xt	9 9 9vG G GR

' 
' 
' _455  65< _@AA9 9 BA9< _LMM7 7 NM7> _455~
 ~
4 ~
 ~
 ~
 65~
@Ct C4 C C C CJ  (>h >h >h@ _:;;,M ,M <;,M\ _455|G |G 65|G| _:;;L< L< <;L<\9 9 9   ,T    V V V V V* _CDD/$ / / / ED/4@ @ @&   _OPP6B4 6B 6B 6B QP6Bp{) {) {)z _GHHC C IHC. . . 0 0 0   8 _EFF%7 %7 GF%7N _tuu%, %, vu%,N!! !! !!F+ + +, _677i i i 87iV _=>>' ' ?>' _JKKG
 G
T G
 G
 G
 LKG
R _@AA;O ;O ;O ;O BA;Oz _677JJ JJ 87JJX _ABB8| 8| CB8|t _677  87 _IJJQ7 Q7 KJQ7f _IJJY7 Y7 KJY7v _788`7 `7 98`7DV V V _.//n3 n n n 0/n"    
' 
' 
'$ $ $
     & & && & && & &# # ## # #& & && & &      8! ! !F  8: : :x5 5 5n[D [ [ [ [& & & & &     4        
         
  ( ( (/ / / _FGGA Ad A4 A A A HGAF2 2 2892 92 92v88 8 8 8 8  JNH, H,(+H,CFH, H, H, H,TO O O3 O Ocf O O O Ob* * * *:        D    # eh    \^P ^P ^P@1 1 1f	% 	% 	%R R Rh$ $ $<# # #JR% R% R%h? ? ? ? ?BC% C% C%JA A AF
 _CDDv v EDvpH% H% H%T _XYY2& 2& ZY2&h5# 5# 5# 5# 5# 5# 5#r%   rE   )6cmf.appr   cmf.includecmf.utilr   r   dataclassesr,  r  r  r  r  r  r  pathlibr   rv   r  typingr   r	   r
   r   r   r   r   bs4r   	itertoolsr   textwrapr   r   unicodedatar   
cmf.modelsr   %common.models.cmf_plugin_import_mixinr   modules.jira.apir   modules.jira.base_importr   modules.jira.jql.parserr   rR   r  r  r  r   	dataclassr   rC   rE   r/   r%   r#   <module>rg     sB             ) ) ) ) ) ) ) )          				             H H H H H H H H H H H H H H H H H H       " " " " " " # # # # # # # # ! ! ! ! ! !             F F F F F F $ $ $ $ $ $ 3 3 3 3 3 3 1 1 1 1 1 1$v~&V-=(>VEV@WWX	 
% 
% 
% 
% 
% 
% 
% 
%  *is# is# is# is# is#N is# is# is# is# is#r%   