
    V^hϟ                    T   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m	Z	 d dl
mZ d dlmZ d dlmZmZmZmZ d dlmZ d dlZd dlT d d	lmZ d d
lmZ d dlmZ d dlZd dlmZ ej         G d d                      Z ej         G d d                      Z! G d d          Z"dS )    N)cmf_context)Path)urlparse)datetime)DictUnionListOptional)permutations)*)ConfluenceApi)CmfPluginImportMixin)BeautifulSoup)JQLNormalizerc                       e Zd ZU dZ ej        e          Zee	e
j        f         ed<    ej        e          Zee	eee	e	f                  f         ed<    ej        e          Zee	e
j        f         ed<   dS )	TotalDatauJ    Данные используемые в процессе импорта default_factoryuserslink_documentsresult_documentsN)__name__
__module____qualname____doc__dataclassesfielddictr   r   strmodels	CmfPerson__annotations__r   r	   r   CmfDocument     "./modules/confluence/api_import.pyr   r      s         TT):):4)P)P)PE4V%%&PPP6Gk6GX\6]6]6]NDd4S>223]]]6Gk6GX\6]6]6]d3 223]]]]]r%   r   c                   n    e Zd ZU dZej        ed<   eed<    ej	        e
          Zeeef         ed<   dS )DocDatauR    Данные используемые при создании документа documentdoc_idr   link_attachmentsN)r   r   r   r   r    r#   r"   r   r   r   r   r+   r   r$   r%   r&   r(   r(   "   sY         \\    KKK'8{'8'N'N'Nd38nNNNNNr%   r(   c                      e Zd ZdZdedej        fdZd Zde	fdZ
ededefd	            Zde	fd
Zd Zd ZdpdefdZdefdZd ZdededefdZd ZdqdZd Zd Zd Zd Zd Zd Zd Z drd!Z!dqd"Z"d# Z#d$ Z$d% Z%d& Z&dqd'efd(Z'd) Z(d* Z)d+ Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/defd1Z0d2 Z1ed3efd4            Z2d5 Z3dqd6Z4d7 Z5d8efd9Z6ed:             Z7d; Z8dsd>Z9d? Z:e;j<        fd@Z=dA Z>dB Z?dC Z@dD ZAdE ZBdqdFZCdG ZDdH ZEdI ZFdJ ZGdK ZHdL ZIdM ZJedqdN            ZKdO ZLdqdPZMdQ ZNdR ZOdS ZPdT ZQdU ZRdV ZSdW ZTdX ZUdY ZVdZ ZWd[ ZXd\ ZYd] ZZd^efd_Z[d` Z\da Z]dtdcedefddZ^de Z_df Z`dg ZadebfdhZcdi ZddudjZedefdkZfdl ZgdqdmZhdvdnedefdoZidS )wConfluenceAPIImportu;   Класс загрузки объектов через API
confluence
cmf_importc                    || _         || _        t                      | _        t          j                            d          }|j                                        | _	        d| _
        d| _        t                              d          }| j        j        j        |_        |                    | j        j        j                   |                                  d| _        | j         j        rd| _        d| j        _        d| j        _        t/                      | _        t3                      | _        d| _        t8          j        | _        d S )	Nzsystem:defaultcoder   zancestors,history,history.lastUpdated,history.ownedBy,body,body.editor,body.atlas_doc_format,body.view,body.styled_view,body.wiki,body.plain,body.dynamic,body.storage,body.editor2,body.export_view.webresourcezatlassian.rest_clientuserKey	accountIdF)r.   r/   r   
total_datar    CmfSchemeWfgetdefault_document_workflowloaddoc_workflow
has_errorsexpandlogging	getLoggerloggerhandlerssetLevellevel_prepare_multiprocessinguser_keycloudimported_object_countjson_object_countr   treeset_selected_objsdump_page_versionsconfig$IMPORT_CONFLUENCE_DUMP_LAST_PAGE_VERdump_last_page_ver)selfr.   r/   	scheme_wfr?   s        r&   __init__zConfluenceAPIImport.__init__-   s   $$#++&**0@*AA	%?DDFF] ""#:;;/09.4555%%'''!?  	('DM01-,-)FF	!ee #("("Mr%   c                     dd l }dd l}|| _         || _        t          j        | _        t          j        | _        | j                                        | _	        d S )Nr   )
	threadingqueuerL   IMPORT_THREADSthreading_max_forks"IMPORT_CONFLUENCE_DOWNLOAD_THREADSdownload_threading_max_forksr/   get_max_processesmax_processes)rO   rS   rT   s      r&   rC   z,ConfluenceAPIImport._prepare_multiprocessingJ   sZ    "
#)#8 ,2,U)!_>>@@r%   returnc                     dt          t          j        j                  t          t          j        j                  dddg ddd dgS )Ncurrent_user)emailname)r_   fieldsselectedObjects)r_   valueimport_type)r   gcurrent_personr^   r_   rO   s    r&   calc_import_settingsz(ConfluenceAPIImport.calc_import_settingsS   s^    'SAQAW=X=X<?@P@U<V<V4X 4X Y Y*R88&668 	8r%   settingsc                     d | D             S )uO   Преобразуем список с настройками в словарьc                      i | ]}|d          |S r_   r$   .0ss     r&   
<dictcomp>z;ConfluenceAPIImport._normalize_settings.<locals>.<dictcomp>\   s    ///&	1///r%   r$   )rh   s    r&   _normalize_settingsz'ConfluenceAPIImport._normalize_settingsY   s     0/h////r%   c                     g S )uo    Для импорта из Confluence предварительный просмотр не требуется r$   rf   s    r&   previewzConfluenceAPIImport.preview^   s    	r%   c                 0   g g d}d }|                      |d                   D ]9}|d         dk    r|d         d         d         D ]A}d}|                     || j                           }|r|d                             |           B|d         d	         d         D ]}d}| j        j        r$d
| j        j        j        j         d
|d          d
}	n#d
| j        j        j        j         d
|d          d
}	ddd|	 dg}
t          j
                            |
          }|r|d                             |           |d         dk    r|d         d         d         D ]G}|dk    rd}|                     || j                           }|r|d                             |           H|d         d	         d         D ]}|dk    rd}| j        j        r$d
| j        j        j        j         d
|d          d
}	n#d
| j        j        j        j         d
|d          d
}	ddd|	 dg}
t          j
                            |
          }|r|d                             |           ;|j        r.|r-||_        |j        r$|                    d           t!                       |j                                         dd|j        gg dg}
t          j                            |
           t!                       |d         rBt                              |j        | j        d|d                                       d           |d         rBt                              |j        | j        d|d                                       d           t!                       d S d S d S )N)readwritepath	operationrt   restrictionsuserresultsprivategroup::idr_   ext_idLIKE%filterupdatereadonlyru   Tsave_importparent==r/   !=N)r   r/   access_levelsubjects)_get_restrictions_get_personrD   appendr.   rE   r/   pluginsource_hashr    CmfPersonGroupr7   import_originalperm_policy
is_changedsave
cmf_commitperm_aclr9   CmfAccessRulebulk_delete)rO   docdoc_objpermsr   restrictionry   person
group_infor   _filterr|   s               r&   _process_restrictionsz)ConfluenceAPIImport._process_restrictionsb   s   R((11#f+>> '	5 '	5K;'611'7?	J 5 5D"+K!--d4=.ABBF 5f,,V444"-n"=g"Fy"Q 4 4J"+K, j!gdo&<&C&O!g!gS]^bSc!g!g!g!ido&<&C&O!i!iS]^dSe!i!i!i'V?G"155W5EEE 4f,,U333;'833'7?	J 6 6D"i//&0!--d4=.ABBF 6g--f555"-n"=g"Fy"Q 5 5J"i//&0, j!gdo&<&C&O!g!gS]^bSc!g!g!g!ido&<&C&O!i!iS]^dSe!i!i!i'V?G"155W5EEE 5g--e444" 	{ 	"-G! ...!!### $(89;U;U;UVG ,,G,<<<LLLV} T$$G,<04f.3Fm % = ==ATdT=S=S=SW~ U$$G,<04g.3Gn % > >>Bdtd>T>T>TLLLLL#	 	 	 	r%   c                    |                     d          dd          d         }t          |          j                             d          }t          |          dk    r.|d         dk    r"|d         dk    r|d	         d
k    r
|d         }|S t          |          d	k    r|d         dk    r|\  }}}}	 |                    dd          }| j                            ||          }nC# t          $ r6}| j        j	        
                    d| d| d| d|            Y d }~d S d }~ww xY w|s'| j        j	        
                    d| d|            d S | j        j	                            t          |                     |d         }|S )N/r         wiki   spaces   pages   display+ uC   Ошибка получения документа по pretty url : uo   Не смогли получить документ по pretty url (возможно не тот домен): r~   )splitr   rv   lenreplacer.   get_page_by_title	Exceptionr/   r?   warninginfor   )	rO   urlr2   splitted_url_spacetitlefind_confl_doces	            r&   _get_pageid_by_urlz&ConfluenceAPIImport._get_pageid_by_url   s   yy~~bcc"1%}})//44|!!l1o&?&? Ox// Ow..?DK |!!l1o&B&B!-Aq%c3//!%!B!B5%!P!P   &..tZ]tt`etthmttqrttv v v " &.. [  GJ  [  [  MY  [  [\ \ \O"''N(;(;<<<!$'Ds   31C% %
D%/+D  D%Fr_   c                 d   | j                                                             | d          }| j                                                             | d          }|                                r|sd S 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                       d S )N.jsonz.json.dirtya+r   
T	only_data)r/   get_download_pathjoinpathexistsopenrG   ru   jsondumpsshutilmover   r   )rO   api_funcr_   	overwrite	file_pathfile_path_tmpfrows           r&   _simple_dumpz ConfluenceAPIImport._simple_dump   sc   O5577@@DPP	99;;DDEYEYEYZZ 	i 	F-&& 	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,,,s   AC''C+.C+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+)r/   r   r   r   r   r   loads)rO   r_   r   r   r   s        r&   _simple_getzConfluenceAPIImport._simple_get   s      O5577@@DPP	 	*i&& *! * *C**S//))))** * * * * * * * * * * * * * * ts   "BB	B	c              #   H  K   | j                                                             d          }t                              |          D ]X}t          |                    |                    5 }t                              |          V  d d d            n# 1 swxY w Y   Yd S )Nr   r/   r   r   oslistdirr   r   r9   )rO   dir_pathfpr   s       r&   _list_users_from_dumpz)ConfluenceAPIImport._list_users_from_dump   s      ?4466??II**X&& 	# 	#Bh''++,, #iill"""# # # # # # # # # # # # # # #	# 	#s   -BB	B	textattachments_dirobjc                 .   |sd S | j         j                            d           t          |d                              d           D ]J}d}|                    d          rd}|j        |         t          j        	                              }	 g d}t          fd|D                       rit          j        d          rd	}                    d
          st          j        |          r#| j         j                            d            |j        sP|j        sIt          j                            | j        j                  t          j        	                              }|j                            d          r|j        | j        j        vr$| j         j                            d            vt          j                                                d          d                             d          d                   }	t-          j        |	          \  }
}|
s$| j         j                            d|	            t0          j                            |	          }|                    |          }| j         j        j        j         d|d          }t0          j                            || j         j        j        j                  }|s7t0                              | j         || j         j        j        j                  }||_         ||_!        d|_"        |#                                 tI                       # tJ          $ r>}tM                       | j         j                            d d|            Y d }~Dd }~ww xY wd S )Nu/   Обработка ссылок в текстеlxmlc                 V    |                      d          p|                      d          S Nhrefsrchas_attrtags    r&   <lambda>z1ConfluenceAPIImport._dump_links.<locals>.<lambda>   s(    CLLQWDXDXDo\_\h\hin\o\o r%   r   r   )z/attachments/z/thumbnails/z/thumbnail/z	/display/c              3       K   | ]}|v V  	d S Nr$   )rm   url_partr   s     r&   	<genexpr>z2ConfluenceAPIImport._dump_links.<locals>.<genexpr>   s'      AA8x3AAAAAAr%   /display/~([^/]+)(?:/)?$z3\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\bzmailto:u   Это почта: httpuH   Это внешняя ссылка, оставляем как есть: r   r   ?r   u   Это не файл: r}   r~   )r   
obj_ext_idr   )r/   r   r   r   Fu0   Не удалось скачать ссылку r   )'r/   r?   r   r   find_allr   attrsurllibparser   anyresearch
startswithr   schemenetlocurljoinr.   r   unquoter   	mimetypes
guess_typer    r#   _get_filenamer   r   r   CmfImportDownloadr7   rv   r_   
downloadedr   r   r   cmf_rollback)rO   r   r   r   r   key
parsed_url	url_partsemail_patternr_   	mime_typeencoding	file_namer   r   download_jobr   r   s                    @r&   _dump_linkszConfluenceAPIImport._dump_links   s    	F##$UVVV v..778o8opp 8	n 8	nCC||F## )C.C..s33J2n  	 AAAAyAAAAA 98#>>  V>>),, 	-0M0M O*223N3N3NOOO") <Z-> < ,..t/BCHHC!'!6!6s!;!;J")44V<<!(0CCCO*22  4D  B  4D  4D  E  E  E|++CIIcNN2,>,D,DS,I,I!,LMM&/&:4&@&@#	8  O*223RD3R3RSSS".<<TBB	+44Y??	 O29ETTTTT%7;;GMHLH^HeHq  <  s  s $ s#)#;#;tADGMHLH^HeHq $< $s $sL %.!$-!*/'!!### n n n&../lbe/l/lij/l/lmmmmmmmmnm8	n 8	ns:   M
2M
AM
B&M
?BM
C;M


N3NNc                 $   	 |                      |          S #  d}| j                            ||          s| j                            ||          s| j                            ||          r| j        j        r"| j                            d                   }n!| j                            d                   }                    fd|                                D                        |	                    d          }t          |d          5 }|                    t                                        d	z              d d d            n# 1 swxY w Y   | j        j                            d
| d           Y d S Y d S xY w)Nz%operations,status,email,personalSpacer<   r4   )usernamer  c              3   :   K   | ]\  }}|vs|d k    ||fV  dS ) Nr$   )rm   kv	user_infos      r&   r   z5ConfluenceAPIImport._get_user_info.<locals>.<genexpr>+  sJ       !C !CDAq$%Y$6$6!r'' #$Q:A'''!C !Cr%   
users.jsonr   r   u4   Информация о пользователе ID u    добавлена в дамп)_get_user_info_from_dumpr.   get_user_infoget_user_info_by_keyget_user_info_by_usernamerE   get_user_detailr   itemsr   r   ru   r   r   r/   r?   r   )rO   user_id	dump_pathr<   user_detail
users_pathr   r  s          @r&   _get_user_infoz"ConfluenceAPIImport._get_user_info  s1   	M00999	M<F55gf5MMI Y O@@QW@XX	 ^ OEEgV\E]]	 M?( b"&/"A"A9U`Ka"A"b"bKK"&/"A"A9U_K`"A"a"aK   !C !C !C !CK4E4E4G4G !C !C !C C C C '//==
*d++ :qGGDJJy11D8999: : : : : : : : : : : : : : : &++  -Lcj  -L  -L  -L  M  M  M  M  M  MM M Ms.    DF1EFE	F"E	#&FNc                    |                      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 |                    dd                                          |                                k    r|c S |                    dd                                          |                                k    r|c S t	          d	|           )
Nr   r_   r  r  userNamer^   displayNamefullNameuQ   Не нашли информацию по пользователю в дампе )r   r7   rD   lowerr   )rO   r"  r   r  s       r&   r  z,ConfluenceAPIImport._get_user_info_from_dump4  s   ))'22 	! 	!I}}T]++w66    }}VR((..00GMMOOCC    }}Z,,2244GG    }}Z,,2244GG    }}Wb))//11W]]__DD    }}]B//55777==??JJ    }}Z,,2244GG     Hulsuuvvvr%   c                    | j         dk    rdn	d| j          }| j        j                            d| d|            |                    d          }g }|                    d          }|                                rBt          |d          5 }t                              |          }d d d            n# 1 swxY w Y   t          j
                    }		 |                    d	          }
t          |
d          5 }t                              |          }d d d            n# 1 swxY w Y   |                    d
          }|                                rt                              |           t          |d          5 }d}| j        j        r|dz  }| j                            ||d         d         || j                   D ]}t!          |t"                    r%| j                            d| d| ddd           =|                    t                              |d          dz              | j        xj        dz  c_        | j                            d           |                     |d         d         d         d         ||           |                    d          r7|d         d          d!k    r%|d         |vr|                    |d                    	 d d d            n# 1 swxY w Y   d|d"<   t          |
d#          5 }t                              ||d           d d d            n# 1 swxY w Y   n;# t"          $ r.}| j                            d$| d| d%dd           Y d }~nd }~ww xY wt          j
                    |	z
  }| j        j                            d| d&|d'd(           t          |d#          5 }t                              ||d)d*           d d d            d S # 1 swxY w Y   d S )+Nr      Все версии.   Последние: u)   Дамп версий документа . attachmentsr  r	info.jsonzversions.jsonr   zNcontent.version,content.body.view,content.body.editor,content.body.export_viewz,content.body.atlas_doc_formatversionnumber)current_versionr<   last_versions6   Не удалось сдампить документ r   zERR-0038r#   dump
error_codeobj_type
error_typeFensure_asciir   r   contentbodyexport_viewrb   bytype	anonymousrK   w+uE   Не удалось сдампить версии документа ERR-0025    выполнен за .3f    сек.r   indentr>  )rN   r/   r?   r   r   r   r   r   r9   time	monotonicr   remover.   rE   get_page_versions
isinstancer   	log_errorru   r   rG   inc_statr  r7   r   r8  )rO   r*   doc_pathdoc_log_msgnum_ver_msgr   	doc_users
users_filer   t1	info_filedoc_dataversions_file_namer<   page_versionexct2users_fs                     r&   _dump_versionsz"ConfluenceAPIImport._dump_versionsF  s   040G20M0M,,  TDjn  kB  TD  TD##$lP[$l$l_j$l$lmmm"++M::	&&|44
 	)j#&& )! IIaLL	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ^4	; ))+66Ii%% (99Q<<( ( ( ( ( ( ( ( ( ( ( ( ( ( ( "*!2!2?!C!C!((** .		,---($// A1i?( ?>>F$(O$E$E$,Y$7$A!"&"9	 %F % % A AL ",	:: !11qU`qqcoqq'1MV\ 2    !GGDJJ|%JHH4OPPPO55:55O,,Y777$$$Y/7FwO'    $''-- A,t2DV2LP[2[2['-Y>>%,,\$-?@@@5AA A A A A A A A A A A A A A AT .3H)*i&& ;!		(AE	:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  	 	 	O%%lXcllgjll%&!	 &        	 ^"##lll\^llll	
 	
 	
 *d## 	HwIIiIGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   B44B8;B8%L> 8DL> D##L> &D#'AL> =EK(L> (K,,L> /K,0L> L22L69L6>
M6$M11M6O22O69O6c           	      "     fd} fd} fd}t          d          5  d}	 |                                }||                    |           n j        j                            d|                                            d	|d
          d|d          d}	  j                                        rn@|d         dk    r+ j                            d| dt          j
                   t          d          D ]}		  ||d         |d         |            ||d         |d         |            ||d         |d         |           |d         r#                     |d         |d         |            n:#  |	dk    r  j                            d| d|	 t          j
                   Y xY wn-#   j                            d| ddd           |dz  }Y nxY w|                    |           d d d            d S # 1 swxY w Y   d S )Nc                 F   j         j                            d|            d j                            |           D             }|                    d          }t          |d          5 }t                              ||           d d d            d S # 1 swxY w Y   d S )NuI   Дамп списка дочерних страниц документа c                     g | ]}|S r$   r$   rm   r   s     r&   
<listcomp>z_ConfluenceAPIImport._dump_documents_expand_worker.<locals>.dump_child_pages.<locals>.<listcomp>  s    LLLLLLr%   
pages.jsonrE  )	r/   r?   r   r.   get_childrenr   r   r   r8  )r*   rS  rT  children
pages_filer   rO   s         r&   dump_child_pageszKConfluenceAPIImport._dump_documents_expand_worker.<locals>.dump_child_pages  s    O"''  )Bt  )B  )B  C  C  CLLt'C'CF'K'KLLLH!**<88Jj$'' '1		(A&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   -BBBc                    g }|                     d          }|                                rBt          |d          5 }t                              |          }d d d            n# 1 swxY w Y   |                     d          }|                                rt
                              |           	j        j        	                    d|            t          |d          5 }	j
                            |           D ]}|                    t                              |          dz              |d         d         d	         D ]>}	j        j        	                    d
| d           ||vr|                    |           ?	 d d d            n# 1 swxY w Y   t          |d          5 }t                              ||dd           d d d            d S # 1 swxY w Y   d S )Nr  r1  zrestrictions.jsonu%   Дамп прав документа r   r   rx   ry   rz   zrestriction )rE  r   FrJ  )r   r   r   r   r9   r   rN  r/   r?   r   r.    get_all_restrictions_for_contentru   r   r   r8  )
r*   rS  rT  rV  rW  r   restriction_filer   ry   rO   s
            r&   dump_restrictionszLConfluenceAPIImport._dump_documents_expand_worker.<locals>.dump_restrictions  s   I!**<88J  "" -*c** -a $		!I- - - - - - - - - - - - - - -  (001DEE&&(( ,		*+++O"''(]P[(](]^^^&-- 3#'?#S#STZ#[#[ 3 3KGGDJJ{33d:;;; +N ;F CI N 3 3.334J44J4J4JKKKy00%,,T222333 3 3 3 3 3 3 3 3 3 3 3 3 3 3 j$'' F1		)Qqu	EEEF F F F F F F F F F F F F F F F F Fs6   A$$A(+A($B!FFF-GG Gc                    |                     d          }|                                rt                              |           j        j                            d|            t          |d          5 }j        	                    |           D ]2}|
                    t                              |          dz              3	 d d d            d S # 1 swxY w Y   d S )Nlabels.jsonu'   Дамп тегов документа r   r   )r   r   r   rN  r/   r?   r   r   r.   get_all_page_labelsru   r   r   )r*   rS  rT  lables_filer   labelrO   s         r&   	dump_tagszDConfluenceAPIImport._dump_documents_expand_worker.<locals>.dump_tags  s   "++M::K!!## '		+&&&O"''(_R](_(_```k4(( 6A!_@@HH 6 6EGGDJJu--4555566 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   7ACCCFinit_views_and_dsr   TuG   Осталось обработать примерно страниц: "r   " (r~   rl  statustrashed   Документ uW    был удален. Пропускаем дамп расширенных данныхrB   r   rv   rK      uO   Повтор дампа расширенных данных документа    , попытка u\   Не удалось сдампить расширенные данные документа rF  r#   r8  r9  r   )r   r7   putr/   r?   r   qsize	is_cancellogr=   WARNINGranger`  rQ  )
rO   
page_queueobjs_that_are_donerj  ro  ru  errors	page_datapage_log_msgis
   `         r&   _dump_documents_expand_workerz1ConfluenceAPIImport._dump_documents_expand_worker  sn   	' 	' 	' 	' 	'	F 	F 	F 	F 	F.	6 	6 	6 	6 	6 5111 +	/ +	/F)/&NN,,	$NN9---&++  -K  wA  wG  wG  wI  wI  -K  -K  L  L  LNIg$6NNIdONNN 0022  *i77++ V  V  V  V")/ ,    !"1XX  ,,Yt_i>OQ]^^^--ioy?PR^___%Iioy7H,WWW()=> f $ 3 3IdOYvEVXd e e e!E Avv % O// !Ur~  !U  !U  RS  !U  !U&-o 0      O-- F  xD  F  F#-RX .    aKFFF"&&v...S)/+	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/ +	/s[   A:HF35H76F3-H.F3 A6E86F385F/-F32H3(GHHHc                 0   d}| j                                         }| j                                         }d}|                                D ]}|                                rt	          |j                                      d          s|dz  }|                    d          }t          |d          5 }	t          
                    |	          }
d d d            n# 1 swxY w Y   |
d         |
d         t          |
d                   |
d	         |
                    d
          p| j        d}|                    |           |                    d            | j        j                            d|            g }t%          |          D ]x}| j                            | j        d|dz    ||d          }|                    |           |                                 | j        j                            d|            y|D ]}|                                 ~|j                                          |                                s+||                                z  }|                                +| j        j                            d|            |S )Nr   .dirty.trashed.metar   r2  r1  r~   r   rv   rz  rK   )r~   r   rv   rz  rK   uC   Дамп расширенных данных документов: z_dump_documents_expand_worker )r  r  targetr_   kwargs   Форк proc=uR   Ошибок дампа расширенных данных документов: )rT   Queueiterdiris_dirr   r_   endswithr   r   r   r9   r   r7   rK   r  r/   r?   r   r  rS   Threadr  r   startjoinclearempty)rO   objs_dirmax_workersr  r  r  
page_countdoc_dirrY  r   	info_datadataprocessr  procs                  r&   _dump_documents_expandz*ConfluenceAPIImport._dump_documents_expand  s   Z%%''
!Z--//
'')) 	% 	%G~~ %GL(9(9(B(BCb(c(c %a
#,,[99	)S)) -Q $		!I- - - - - - - - - - - - - - - $D/&w/ 6!233'1 +4--8L*M*M*hQUQh	 	 t$$$t##$vjt$v$vwww{## 	A 	AA>((9=a!e==",*<  )  D NN4   JJLLLO"''(?(?(?@@@@ 	 	DIIKKK   $**,, 	/(,,...F %**,, 	/##  %By  %B  %B  	C  	C  	C   2CC	 C	c                 H     fd}t          d          5  d}	 |                                }||                    |           n+|D ]%}	  j                            | j         dd          }|d	         d
vr4d|d          d|d          d}	 j                                        r nÉ j        j        	                    d|	            t          d          D ]M}
	  ||            n>#  |
dk    r  j                            d|	 d|
dz    dt          j                   Y KxY w j        xj        dz  c_        #   j                            d|	 ddd           |dz  }Y $xY wX|                    |           d d d            d S # 1 swxY w Y   d S )Nc                 @   d| d          d| d          d}                     t          | d                             }                     | d          d          }|                    d           g }| d	         d
         |vr!|                    | d	         d
                    | d	         d         d         |vr'|                    | d	         d         d                    | d	                             d          }|r=|d         dk    r1| d	         d         |vr!|                    | d	         d                    |                     d          }|                     d          }d j                            | d         d          D             }t          |d          5 }	t          	                    ||	           d d d            n# 1 swxY w Y   j
        j        j        j         d| d          }
|D ]}|d         }|d         }|d         d         }j                            j        j        |          }d|v r|d         d         }n.t          j        d|          }|r|                    d          nd}|                     | d|           }|                     d| d|           }|
 d| }t$          j                            |j
        j        j        j        g d          }|s6t$                              |j
        j        j        j        j
                   }||_        ||_        ||_        |j        s|                                s"d!|_        ||_        |                                 t9                                           | d"         d#         d$         ||            |                     d%          }|                                rt<                              |           j
        j         !                    d&|            t          |d'          5 }	j"         d(}j        #                    | d         |)          D ]{}|	$                    t          %                    |          d*z              j
        xj&        dz  c_&        j
        '                    d+                               |d"         d,         d$         ||            |d	                             d          r1|d	         d         |vr!|                    |d	         d                    |d	                             d
          r1|d	         d
         |vr!|                    |d	         d
                    |d	                             d          r=|d	         d         d         |vr'|                    |d	         d         d                    }	 d d d            n# 1 swxY w Y   d| d-<   |                     d.          }t          |d          5 }	t          	                    ||	d/d!0           d d d            n# 1 swxY w Y   tQ          j)        ||           |                    d           t          |          | d1<   |                     d2          }t          |d          5 }	t          	                    | |	d!3           d d d            n# 1 swxY w Y   j
        *                    d4| d5           j
        '                    d6           d S )7Nrx  r   ry  r~   rl  r  Texist_okhistory	createdBylastUpdatedrB  ownedByrC  rD  r0  attachments.jsonc                     g | ]}|S r$   r$   rd  s     r&   re  zUConfluenceAPIImport._dump_documents_main_worker.<locals>.dump_doc.<locals>.<listcomp>0  s%         r%   r3  )page_idr<   rE  )moder}   _linksdownloadr4  z[?&]version=(\d+)r   .)r_   r   rv   )r   r   r`   )r   r   r/   Fr@  viewrb   zcomments.jsonu5   Дамп комментариев документа r   z@,extensions.inlineProperties,extensions.resolution,children.pager  r   commentrA  rK   r  r   rJ  rv   r2  r=  r|  u     успешно сдампленr)   )+r   r   mkdirr   r7   r.   get_all_attachmentr   r   r8  r/   r   r   
url_joinerr   r   r   r|   r    r  r_   r   rv   r   r   r  import_raw_jsonr   r   r  r   rN  r?   r   r<   get_page_commentsru   r   rG   rR  r   r   r  )r   rT  r  doc_dir_tmprV  ownerr   rY  attach_infor   
doc_ext_idattatt_idr  download_linkdownload_urlr3  attachment_pathattachment_path_tmp
att_ext_idr  comments_file_namer<   r  r%  	info_pathr  rO   s                             r&   dump_doczAConfluenceAPIImport._dump_documents_main_worker.<locals>.dump_doc  so   =s7|==T===K''CI77G"++s4y,@,@,@AAKt,,, I9~k*);;  Y!<===9~m,T2)CC  Y!>t!DEEE	N&&y11E @v+55y>),I==$$S^I%>??? &..}==O#,,-?@@I #AAI$  B      K id+++ *q		+q)))* * * * * * * * * * * * * * * !O29ETTTTTJ"  TL	 #Hj 9#99$/:M}]]##!)nX6GG i(<mLLG29@gmmA...qG"1":":f;P;Pw;P;P"Q"Q&1&:&:=VJ_J_V]J_J_&`&`# *66f66
%7;;) $ 6 = I333  <    
 $ #)#;#;#-$(O$:$A$M#'? $< $ $L
 %.!$0!$3!* (2E2L2L2N2N (.3L+36L0 %%'''S[09?CPPP "-!5!5o!F!F!((** .		,---O"''(m`k(m(mnnn($// R1 Kiii#@@TSY@ZZ R RGGGDJJw//$6777O55:55O,,Y777$$WV_]%CG%Lo_bccc	*..y99 H '	 29 =Y N N!(();I)FGGG	*..{;; J '	 2; ?y P P!(();K)HIII	*..}== R '	 2= A$ Gy X X!(();M)J4)PQQQ!RR R R R R R R R R R R R R R R, )-C$%$--l;;Jj$'' F1		)Qqu	EEEF F F F F F F F F F F F F F F KW---!!4!000g,,CK((55Ii&& 6!		#qu	5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 O aK a a abbbO$$Z00000sI   $GGG-F*W$$W(+W(YYY1[["[Frv  r   Tz,versionr   )r<   rz  rz  currentr{  rx  r   ry  r~   rl  u   Дамп документа r   r~  u+   Повтор дампа документа r  r   u    из 3r}  r7  rF  r#   r8  r9  )r   r7   r  r.   get_page_by_idr<   r/   r  r?   r   r  r  r=   r  rG   rQ  )rO   r  bulk_page_queuer  r  r  page_idsr  r  r  r  s   ``         r&   _dump_documents_main_workerz/ConfluenceAPIImport._dump_documents_main_worker  s   o	1 o	1 o	1 o	1 o	1 o	1b 5111 -	+ -	+F)$*..00##''111
  (  $  $G$$(O$B$B#&*k#;#;#;#( %C % %	
 %X.6LLL$'VIg,>'V'VIdO'V'V'V?4466 "!E.334aS_4a4abbb!&q 
" 
"A	" ( 3 3 3 %"#$66$) $ 3 3$R^$$qruvqv$$$*1/ !4 !" !" !" !" !" 99Q>999$11cUacc'1MV\ 2    !S)$T ""6***[-	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+sY   6F/E?F .E.F03E$C1/E19D,	*EF(E0-FFFc           	      z   d}| j                                         }g }t          |          D ]y}| j                            | j        d|dz    |||d          }|                    |           |                                 | j        j	        
                    d|            z|D ]}|                                 ~|j                                          |                                s+||                                z  }|                                +| j        j	        
                    d|            |S )Nr   z_dump_documents_main_worker r   )r  r  r  r  r  u.   Ошибок дампа документов: )rT   r  r  rS   r  r  r   r  r/   r?   r   r  r  r  r7   )	rO   r  r  r  r  r  r  r  r  s	            r&   _dump_documents_mainz(ConfluenceAPIImport._dump_documents_main  sb   !Z--//{## 	A 	AA>((7;AE;; ('6*<  )  D NN4   JJLLLO"''(?(?(?@@@@ 	 	DIIKKK##%%%$**,, 	/(,,...F %**,, 	/##$]U[$]$]^^^r%   c                    d}|d         }| j         }d}| j                                        }| j        j                            d| d           d}g }	t          j                    }
|                                D ]}|	                                r't          |j                                      d          s>|dz  }|j                            d          d         }|	                    t          |                     t          |	          |k    r|                    |	           g }	|	r|                    |	           |                    d            t          j                    |
z
  }| j        j                            d	|d
d           | j        j                            d| d|            t          j                    }
||                     |||          z  }t          j                    |
z
  }| j        j                            d| d|d
d           t          j                    }
||                     ||          z  }t          j                    |
z
  }| j        j                            d|d
d           | j                                        r| j        j                            d           |S )Nr   r
  2   uU   Добавление страниц в очередь дампа пачками по u    страницr  r   r  uY   Добавление страниц в очередь дампа выполнено за rH  rI  uU   Дамп основных данных документов пространства r   rG  uC   Дамп расширенных данных выполнен за    Импорт прерван)rX   rT   r  r/   r?   r   rL  rM  r  r  r   r_   r  r   r   r   r  r  r  r  r   )rO   r   r  r  	space_keyr  max_bulkr  r  	temp_listrX  r  r  r^  s                 r&   _dump_documentsz#ConfluenceAPIImport._dump_documents  s?   %L	7***,,##  %V  }E  %V  %V  %V  	W  	W  	W
	^'')) 	 	G>>## 3w|+<+<+E+Eh+O+O !OJl((--a0GS\\***9~~))##I...	 	+	***D!!!^"##  %Q  AC  %Q  %Q  %Q  %Q  	R  	R  	R 	##  %V  }F  %V  %V  JT  %V  %V  	W  	W  	W^$++Ho{SSS^"##  %o  }F  %o  %o  _a  %o  %o  %o  %o  	p  	p  	p
 ^$--hDDD^"##$zjl$z$z$z$z{{{?$$&& 	JO"**+HIIIr%   c                    i }| j                             |d                   }	 | j         j        rdddddddd	d
ddddd}|D ]l}|d         d         |d         d         f}|                    |          }|s7|                    ||g g dd          }|                    d          r|d                             d          rh|d         d         d         d         d         }	|                     |	| j                                                   |d                             |	           |d                             d          rZ|d                             |d         d         d         d         d         |d         d         d         d         d         d           |d         rd |d!<   nn|D ]}
|
d"         D ]}|                    |d#         |d#         g g dd          }|d$         rT|                     |d$         | j                                                   |d                             |d$                    |d%         r#|d                             d|d%         i           |d$         s|d%         sd |d!<   ƌn$#  | j        	                    d&d'd(d)*            xY wt          |d+          d,          }|                                rt                              |           t          |d-          5 }d. |                                D             |d/}t                               ||           d d d            d S # 1 swxY w Y   d S )0Nr
  	EDITSPACE
REMOVEPAGEEDITBLOG
REMOVEBLOGCOMMENTREMOVECOMMENTCREATEATTACHMENTREMOVEATTACHMENT	VIEWSPACEREMOVEOWNCONTENTSETPAGEPERMISSIONSSETSPACEPERMISSIONSEXPORTSPACE))pagecreate)r  delete)blogpostr  )r  r  )r  r  )r  r  )
attachmentr  )r  r  )r   rt   )r   r  )r   restrict_content)r   
administer)r   exportrw   
targetTypeF)
permissionr   groupsrD  r   ry   rz   r   r4   r   r|   r  r~   r_   )r~   r_   anonymousAccessTrD  spacePermissionsrC  r(  	groupNameu>   Не удалось сдампить права доступаzERR-0056
CmfProjectr8  )r;  r<  rv   /permissions.jsonr   c                     g | ]}|S r$   r$   rm   r   s     r&   re  z9ConfluenceAPIImport._dump_permissions.<locals>.<listcomp>i  s    CCCAaCCCr%   )	convertedoriginal)r.   get_space_permissionsrE   r7   
setdefaultr&  r/   r   r   rQ  r   r   r   rN  r   valuesr   r8  )rO   r   permissions_dictpermissionsmapping_typer  rw   type_permry   permission_typepermission_filer   permissions_datas                 r&   _dump_permissionsz%ConfluenceAPIImport._dump_permissions  sN   o;;E%LIIN	$ E5 )4(4,6,8+4+:.@.@'2);3G-B)6     #. 1 1J!+K!8!F
S^H_`kHl mI(,,Y77E  ! +66*/%'&().	  D "~~j11 %j155f== 7#-j#9&#A)#LQ#OP[#\D //do6W6W6Y6YZZZ M00666%j155g>>  N11*4Z*@*I)*TUV*WX\*],6z,B7,KI,VWX,YZ`,a!" !"   ""34 1,0[)=1@ (3 5 5O&56H&I 5 5
/::&v..8.@)+*,-2	     &j1 I //
:0FHiHiHkHklll M00J1GHHH%k2 U N116:k;R2STTT)*5 5j>U 504D-#5$	O%%P%!	 &    %-BBBCC!!## 	'IIo&&&/4(( 	+ACC)9)@)@)B)BCCC'    II&***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   I!J !J' =M

MM   c           
         |                     d          }|                    d           d}| d}	| d}
t          d          5  d	d	d	d	d
}	 | j        5  | j        }| xj        |z  c_        ddd           n# 1 swxY w Y   | j                            ||||	d          }|sn|D ]z}|d         dvr|dxx         dz  cc<   t          |d                   }|d         }	 |d         dk    r|d         d         d         r9d | j                            |d|
d          D             }||d         d         d<   |d         d         d         r7d | j        	                    |d          D             }||d         d         d<   d}|                     | d          }|
                                r<t          |d          5 }|                                }ddd           n# 1 swxY w Y   t                              |dd           }t          j        |                    d!                                                    }||k    r||d"xx         dz  cc<   n|d#xx         dz  cc<   t          |d$          5 }|                    |           ddd           n# 1 swxY w Y   |                     |          }|                     | d%          }|                     | d&          }|d         dk    rz| j        j                            d'| d(| d)           |
                                rt/          j        ||           n|
                                rt/          j        ||           nj|
                                rt/          j        ||           n@|
                                rt/          j        ||           n|                    d           ?#  | j                            d*| d(| d+d,d-d./           |d0xx         dz  cc<   Y yxY w|                    |           ddd           dS # 1 swxY w Y   dS )1u  
        Получает минимальные данные страницы с информацией о последнем изменении
        и зависимыми объектами(комментарии, вложения).
        Вычисляет хеш данных и сравнивает его с хешем предыдущей проверки,
        если хеши отличаются, то помечает каталог документа .dirty для повторного дампа
        r  Tr  zancestors,history.lastUpdatedz%,children.comment,children.attachmentz2,extensions.inlineProperties,extensions.resolutionFrv  r   )r  allnewupdatedNr   )r  limitr<   rz  rz  r  r  r   r~   r   r{  rh  r  rz   c                     g | ]}|S r$   r$   )rm   r  s     r&   re  z:ConfluenceAPIImport._check_hash_worker.<locals>.<listcomp>  s%     ," ," ,"07G," ," ,"r%   r
  )r  r<   rh  r  c                     g | ]}|S r$   r$   )rm   r  s     r&   re  z:ConfluenceAPIImport._check_hash_worker.<locals>.<listcomp>  s%     /" /" /"3=J/" /" /"r%   r  z.hashr1  )r>  	sort_keyszutf-8r  r  rE  r  r  u   Документ "ry  uQ   ) удален. Он не будет сдамплен и импортированuB   Не удалось проверить хеш документа "rl  rF  r#   r8  r9  r  )r   r  r   _lock_startr.   get_all_pages_from_spacer   r  r  r   r   rt   r   r   hashlibmd5encode	hexdigestru   r/   r?   r   r   r   rQ  r  )rO   r  r  hash_dirhash_stats_queuer  	dump_datacontent_hash_dirr<   page_expandcomment_expand
hash_statsr  r   r  r  
page_titlecommentsr0  current_hash	hash_filer   content_jsonnew_hashr  doc_tmp_dirdoc_trashed_dirs                              r&   _check_hash_workerz&ConfluenceAPIImport._check_hash_workern  s    $,,V44---0FFF"VVV5111 h	- h	-	 J^2Z ) ) KEKK5(KK) ) ) ) ) ) ) ) ) ) ) ) ) ) ) @@U%TY A    ! S2 S2DH~-CCC u%%%*%%%!$t*ooG!%gJK2>Y66#J/	:9E 
R," ,"$(O$E$E(/.1/=16	 %F %& %&," ," ," JRZ 0 ;I F#J/=iH X/" /"$(O$F$F(/.1 %G %& %&/" /" /" MXZ 0 >y I'+$4$=$=>O>O>O$P$P	$++-- 8!%i!5!5 8/0vvxx8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 (,zz$UVZz'['[#*;|/B/B7/K/K#L#L#V#V#X#X'833$'/&u---2----&y111Q6111!)T22 .aGGH---. . . . . . . . . . . . . . . #+"3"3G"<"<&.&7&778J8J8J&K&K*2*;*;w<P<P<P*Q*Q>Y66 !O2::!eZ !e !eG !e !e !e  
  +1133 F &K I I I I!(!1!1 F &G_ E E E&~~// A &G[ A A A A!0!7!7!9!9 A &O[ I I I I + 1 14 1 @ @ @211zakzzpwzzz'1MV\ 2    #8,,,1,,,,,}^2@   ,,,Qh	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	- h	-s   QA<0Q<B 	 QB 	A#Q(C"O+
G+O++G//O+2G/3AO+Q3O+J)O+)J--O+0J-1D8O+)Q+7P%"QQQc                    | j                                         }d| _        | j                                        | _        | j        }|d         }t          |d          d          }|                    d           t          j
                    }g }	t          |          D ]z}
| j                            | j        d|
dz    ||||d	
          }|	                    |           |                                 | j        j                            d|            {|	D ]}|                                 ~t          j
                    |z
  }d}d}d}d}|                                sT|                                }||d         z  }||d         z  }||d         z  }||d         z  }|                                T| j        j                            d|dd| d| d| d	           | j        j                            d|            |S )Nr   r
  rv   z/hashTr  z_check_hash_worker r   )r  r  r  r  r  r  r  r  r  r  uC   Проверка хеша контента выполнена за rH  u8    сек. (всего/новых/обновленных: r   rl  u(   Ошибок хеша контента: )rT   r  r  rS   Lockr  rX   r   r  rL  rM  r  r  r*  r   r  r/   r?   r   r  r  r7   )rO   r   r  r  r  r  r  r  rX  r  r  r  r^  r  obj_allobj_newobj_updatedr!  s                     r&   _check_hashzConfluenceAPIImport._check_hash  s     :++--^((**
7%L	5=///00%%%^{## 	A 	AA>((.21q522!* ( ((8	  ) 	 	D NN4   JJLLLO"''(?(?(?@@@@ 	 	DIIKKK^""((** 	1)--//Jj**Fz%((Gz%((G:i00K #((** 	1 	## %yjl${ %y %yV]%y %y`g%y %yju%y %y %y 	z 	z 	z 	##$Wv$W$WXXXr%   c                 j     j                             d           g }t                      }|                    d          }|                                rPt          |d          5 }t                              |          } fd|D             }ddd           n# 1 swxY w Y   t                      }t          	                    |          D ]}|                    |d          }	|	                                rt          |	          5 }t                              |          D ]H}
|
d         dk    r|
                    |
 j                            |
|vr|                    |
           I	 ddd           n# 1 swxY w Y   |	                                 t          |d          5 }t                              t          |          |d	d
           ddd           n# 1 swxY w Y   |                    |          }|D ]/}                     | j                                                    0dS )us    Собирает пользователей из файла users.json в каталогах документов u=   Сбор пользователей из документовr  r1  c                 D    h | ]}t          |j                           S r$   )r   rD   )rm   urO   s     r&   	<setcomp>z5ConfluenceAPIImport._collect_users.<locals>.<setcomp>-  s(    #Q#Q#QaC$-(8$9$9#Q#Q#Qr%   NrC  rD  rE  r   FrJ  )r/   r  rI   r   r   r   r   r9   r   r   addrD   r   unlinkr8  list
differencer&  r   )rO   project_dirr  current_userscurrent_user_idsrW  r   new_user_idsr*   r%  ry   
diff_usersr"  s   `            r&   _collect_usersz"ConfluenceAPIImport._collect_users"  s   [\\\ 55 )),77
 	Rj#&& R! $		!#Q#Q#Q#Q=#Q#Q#Q R R R R R R R R R R R R R R R
 uujj** 
	$ 
	$F!**6<@@J  "" $*%% 7 $		! 7 7<;66$$((dm)<===}44)0066677 7 7 7 7 7 7 7 7 7 7 7 7 7 7 !!###*d## 	LqIId=))1QUIKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L ",,-=>>
! 	N 	NG)J)J)L)LMMMM	N 	Ns7   %)BB!BA$E99E=	 E=	),G!!G%(G%c                     | j                                                             d          }t          | d| dd          5 }t                              |          }|cd d d            S # 1 swxY w Y   d S )Nprojectsr   
/info.jsonr   )r/   r   r   r   r   r9   )rO   project_keyr9  r   projects        r&   _get_projectz ConfluenceAPIImport._get_projectE  s    o7799BB:NN[::;:::DAA 	QiillG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A,,A03A0c              #     K   | j                                                             d          }t                              |          D ]}|                    d          r|                    d          r&| j         j                            d| d|            St          | d| dd          5 }t          
                    |          }d d d            n# 1 swxY w Y   |V  d S )Nr@  r  r  u(   Пропускается каталог r   rA  r   )r/   r   r   r   r   r  r?   r   r   r   r9   )rO   r9  rB  r   rC  s        r&   _get_projectsz!ConfluenceAPIImport._get_projectsK  s7     o7799BB:NN::k22 	 	K##H-- ##G,, &../uZe/u/uhs/u/uvvv>>{>>>EE '))A,,' ' ' ' ' ' ' ' ' ' ' ' ' ' 'MMMM	 	r  c                 "   	 dt           dt          f	 fd	                      j        j        d                   }|d         d         d         }|d         sd	S d
 |d         D             }|s                                 D ]u}d|d<   g |d<   |d         D ]!}|d                             |dg d           "|d         D ]!}|d                             |dg d           "|                    |           vt                      }|D ]}}	 |d         rE|d         su                     |d         d                   }|d         D ]!}|d                             |dg d           "|d         D ]!}|d                             |dg d           "|d         D ]}|d         r|	                    |d                    |
                    d          s[t           j                                                            d                              |d         d                             |d<    	||d                   D ]}|	                    |           T#   j        j                            d| d           Y |xY w| _        d	S )uJ   Прогружаем все выбранные документы
        doc_infor  c              3     K   | d         sd S | d         s                     t          |                              d          | d                   }|s#j                            d|  ddd	           d S |d         d
         d         D ]'}| d                             |d         dg d           (| d         D ]&}|d         r ||          E d {V  |d         V  'd S )N	isCheckedrh  	documentsr~   u'   Документ не загружен zERR-0015r#   r8  r9  r  rz   Tr~   rJ  rh  )_get_documentr   r   r/   rQ  r   )rH  r  doc_dumpchildrg  rO   s       r&   rg  z=ConfluenceAPIImport._load_selected_objs.<locals>.get_childrenZ  sG     K( J' h--d7mm.D.D[.Q.QS[\`Sabb  O--.bX`.b.b;EP]jp . r r r4%j1&9)D h hEZ(//uT{QUce0f0fgggg!*- & &% &+|E7;;;;;;;;;+%%%& &r%   import_settingsra   rb   r   rJ  Nc                 "    g | ]}|d          
|S rJ  r$   rm   setting_objs     r&   re  z;ConfluenceAPIImport._load_selected_objs.<locals>.<listcomp>n  s#    ggg;kZeNfg;gggr%   rh  T
root_pagesrL  archived_pagesr   r
  r~   rv   r@  uc   Не удалось вычислить выбранные документы для проекта u4   , скорее всего он не сдамплен)r   r   rp   r/   json_settingsrF  r   rI   rD  r5  r7   r   r   r?   r   rJ   )
rO   rh   rootselected_spacesrC  r*   resultr   rH  rg  s
   `        @r&   _load_selected_objsz'ConfluenceAPIImport._load_selected_objsW  s{   	&4 	&# 	& 	& 	& 	& 	& 	& 	&  ++DO,IJ[,\]])*73A6K  	Fgg$z:Jggg 	0--// 0 0'+$&(
#%l3 b bFJ'..f4]_/`/`aaaa%&67 b bFJ'..f4]_/`/`aaaa&&w////$ 	R 	RER% 3 , h"&"3"3E%L4G"H"H&-l&; h hF!*-44FQUce5f5fgggg&-.>&? h hF!*-44FQUce5f5fgggg$)*$5 3 3#K0 3"JJx~666#(99V#4#4 L03DO4U4U4W4W4`4`ak4l4l4u4uv{  }B  wC  DI  wJ  5K  5K  1L  1Lf*6,xv*O*O 3 3 &

6 2 2 2 2R&..  0Q  V[  0Q  0Q  0Q  R  R  R  R  R$s   EI%J
applink_idc                    | j                                                             d          }t          |d          5 }t                              |          }d d d            n# 1 swxY w Y   |r|                    |          S |S )Napplinks.jsonr   )r/   r   r   r   r   r9   r7   )rO   r\  r   r   applinkss        r&   _get_applinksz!ConfluenceAPIImport._get_applinks  s    O5577@@QQ	)T"" 	$ayy||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$  	,<<
+++s   A$$A(+A(c                    ddl m} i }| j                                        D ],}|                    |d         d          |d<   |||d         <   -| j                                                            d          }t          |d          5 }t          
                    ||d	
           d d d            d S # 1 swxY w Y   d S )Nr   )cmf_hashlibrpcUrlr   r   r~   r^  rE  Fr=  )cmf.utilrb  r.   get_applinksshort_str_encr/   r   r   r   r   r8  )rO   rb  r_  applinkr   r   s         r&   _dump_applinksz"ConfluenceAPIImport._dump_applinks  s   ((((((3355 	. 	.G%0%>%>wx?PRS%T%TGM"&-HWT]##O5577@@QQ	)T"" 	7aIIhI666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   B66B:=B:c                    |                      | j        j        d                   }|d         d         d         }|d         sdS d |d         D             | _        |d         rAt	          |d                   dk    r(d	 | j                                        D             | _        | j                                                            d
          }|	                    d           | j        D ]}t          |d         d                   }| j                            |          }	 | j                                        r d S | j        xj        dz  c_        |                    |          }|                    d          }d }	d }
|                                rlt          |d          5 }t                               |          }|                    d          }	|                    d          }
d d d            n# 1 swxY w Y   d }t&          j        ;|
&|
dk    r3t&          j        dk    s|
t&          j        k     rd| _        t&          j        }|p|
pd| _        | j        j                            d|d                     |                                sJt          |                    | d                    |d<   t2                              |d         d           g |d<   | j                            |d                   D ]#}|d                             |d                    $|d         st;          d          g |d<   | j                            |d                   D ]#}|d                             |d                    $|                                st?          j         |d         |           t          |          |d<   t          |d          5 }|	|d<   | j        |d<   t           !                    ||           d d d            n# 1 swxY w Y   | j        j                            d           | "                    |           tG          |d          d          }|	                    d           | j        j                            d|            t          tI          j%                    &                                '                                          }| (                    |||	           }|sH||d<   t          |d          5 }t           !                    ||           d d d            n# 1 swxY w Y   | xj)        | *                    ||          z  c_)        | +                    ||           | j        ,                    d!           t[                       #  t]                       | j        /                    d"| d#d$d%&           Y xY wd S )'NrP  ra   rb   r   rJ  Tc                 "    g | ]}|d          
|S rR  r$   rS  s     r&   re  z4ConfluenceAPIImport._dump_spaces.<locals>.<listcomp>  s$    lllS^_jSkllllr%   rh  c                 $    g | ]}||d          dS )r~   )r   r~   r$   rd  s     r&   re  z4ConfluenceAPIImport._dump_spaces.<locals>.<listcomp>  s$    #n#n#ncCs4y$A$A#n#n#nr%   r@  r  r   r
  r   r2  r1  	dump_daterN   r   u&   Дампим пространство r_   r  rv   rU  r~   uJ   Пустой проект, возможно нет прав доступаrV  rE  u=   Дампим права доступа (Разрешения)
/documentsuD   Проверка хеша контента пространства )r  r   u1   Ошибка дампа пространства zERR-0026r  r8  r9  )0rp   r/   rW  rY  r   r.   get_all_spacesr   r   r  r   	get_spacer  rG   r   r   r   r9   r7   rL   rM   rK   rN   r?   r   r   makedirsget_root_pages_from_spacer   CmfError get_all_pages_from_space_archiver   r   r8  r	  r   r   now
astimezonedater0  r;   r  r>  r   r   r	  rQ  )rO   rh   rX  projects_dirrT  r  r   r9  rY  last_dump_dateprev_dump_last_page_verr   current_dumpnew_dump_last_page_verr   archived_docr  new_dump_datehash_errorss                      r&   _dump_spacesz ConfluenceAPIImport._dump_spaces  s   ++DO,IJ[,\]])*73A6K  	4lltJ?Olll 	oT*%5!6!6!!;!;#n#nT_MkMkMmMm#n#n#nD 88::CCJOOD)))/ a	k a	kKK.u566IO--i88E]k?,,.. FF11Q611*33I>>'00==	!%*.'%%'' Yi-- Y'+yy||)5)9)9+)F)F2>2B2BCW2X2X/Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y *.&?K/73r99 & Kr Q Q#:V=h#h#h /3D+-3-X**@*`D[*`_`' &++,dUZ[aUb,d,deee"))++ >$'(=(=>R>R>R(S(S$T$TE&MKKfK===&(l#?DDU5\RR : :C,'..s4y9999\* q"#oppp*,&'$(O$T$TUZ[`Ua$b$b G GL*+22<3EFFFF"))++ <Kf{;;; #K 0 0f)T** (a)7E+&262IE./IIeQ'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (
 &++,klll&&u---5= < < <==--- &++,~s|,~,~ #HLNN$=$=$?$?$D$D$F$F G G"..uh..YY # ,)6E+&i.. ,!		%+++, , , , , , , , , , , , , , , 4#7#7x#H#HH ##K:::$$t$444k))*e^c*e*e5?,ci * k k k k kAa	k a	ks   &V*A'V*)AG:.V*:G>	>V*G>	GV*+PV*P	V*P	C:V*T:.V*:T>	>V*T>	A&V**1Wc                    | j                                                             d          }|                                rd S |                    d           | j                                        D ]}| j        j        rt          |d                   }n=t          |d                   	                    dd          	                    dd          }|                    |          }|                    d           |                    d	          }| j         xj
        d
z  c_
        t          |d          5 }t                              ||           d d d            n# 1 swxY w Y   |                    d          }| j                                                             d          }|                    d           |                    d           | j                            |d                   D ]}	|                    |	| j                 dz             }
| j         xj
        d
z  c_
        t          |
d          5 }t                              |	|           d d d            n# 1 swxY w Y   |                    |	| j                 dz             }
|
                                rt          |
d          5 }t                              |	|           d d d            n# 1 swxY w Y   d S )Nr  Tr  r~   r_   r   r   r   r2  r   rE  r   r   )r/   r   r   r   r  r.   get_all_groupsrE   r   r   rG   r   r   r8  get_group_membersrD   )rO   
groups_dirr|   r   	group_dir	data_filer   	users_dirall_users_dirry   user_data_files              r&   _dump_groupsz ConfluenceAPIImport._dump_groups  sq   _6688AA(KK
 	F$'''_3355 	' 	'E$ PU4[))U6]++33C==EEc3OO"++F33IOOTO***!**;77IO--2--i&& $!		%###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $!**733I O==??HHQQMOOTO***...99%-HH 	' 	'!*!3!3D4G4O!P!P11Q611.$// '1IIdA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '!.!7!7T]8KG8S!T!T!((** .$// '1IIdA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	'	' 	's6   9E!!E%	(E%	I++I/2I/>K&&K*-K*c                    | j                                         }t          j        |          \  }}}||z  dz  }| j         j                            d| d           | j         j                            d           | j         j        j                            dd          r@| j         j                            d           | 	                    | j
        j        d           n&| j                             d	t          j        
           |                                  |                                  d}|                     d          D ]}|dz  }| j                             d|           d S )Nd   u   Свободно места: r   u$   Скачаем данные из API
load_usersTu'   Дампим пользователейr   uA   Не дампим пользователей из-за опцийr}  r   r   ry   )rb   )r/   r   r   
disk_usager?   r   rW  rb   r7   r   r.   get_all_usersr  r=   r  rh  r  r   rR  )rO   download_pathtotalusedfreefree_percentuser_cntr   s           r&   download_dataz!ConfluenceAPIImport.download_data0  sh   99;;"-m<<tTe|c)##$SL$S$S$STTT##$JKKK?(.22<FF 	|O"''(QRRRdo;WEEEEO ckrkz{{{ 	 	!!'** 	 	AMHH  x 88888r%   c                    d}t          d          5  	 | j                                        rn|                                }|dk    rnt          j                            |g d          }t          |j                  }t          |j                  }t          |j	                  }t          |j
                                      d          }	t          |	          d	k    rd
|	d	          dnd}
d| d}|j        r!|j        d         d         }|dz  }| d|dd}| j        j                            |
 d| d| d           	 | j                            ||t$          j                   | j        j                            |
 d| d| d           d|_        |                                 t-                       | j                            d           nO# t0          $ rB}t3                       | j                            |
 d| d| d| 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 ) Nr   Frv  TDONE)r_   r   rv   r   r  )r~   r`   r}   r   u   [Страница ID: z] r  '
extensionsfileSizei    (z.2fz MB)u   Скачивание : ')timeoutu	   Файл u    сохранен в 'r  u"   Ошибка скачивания z'. zERR-0027r  r8  )r:  r;  r<  ext_href)r   r/   r  r7   r    r  r   r_   r   rv   r   r   r   r  r?   r   r.   download_filerL   IMPORT_DOWNLOAD_TIMEOUTr  r   r   rR  r   r	  rQ  r  )rO   download_queue
done_queuer  download_job_iddownload_objr  file_urlr   ext_id_splitpage_id_msg	file_sizefile_size_mbr]  s                 r&   _download_file_workerz)ConfluenceAPIImport._download_file_workerG  sA   5111 9	# 9	#5?,,.. "0"4"4"6"6"f,,%7;;&    < 	  	    122	|011 122	"<#:;;AA$GGNQR^N_N_bcNcNcJ|AJJJJik,	,,,	/ G , <\ J: VI#,	#:L#, F F F F F FI&++{,j,jQZ,j,j_g,j,j,jkkkO11 ! & > 2   
 O*//&^^^^R[^^^   /3L+ %%'''LLLO,,\::::     NNNO--&jj)jjX`jjehjj#-!4#)!) .        [5n NN6"""s9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	# 9	#s=   D6I
BGI
H)'8H$I$H))IIIc                    | j                                         }| j                                         }d}| j                            dg           dd| j        j        j        j        gg dg dg}| j                                                            d          }d}g }| j        D ]}t          |d         d	                   }	|                    |	          }
t          |
          
                    d
          st          |
          d
z   }
dd|
 dgg}t          j                            ||z             }|r||z  }|                    ||z              |s!| j        j                            d           |S | j        j                            d|            g }t#          | j                  D ]u}| j                            | j        d| ||d          }|                    |           |                                 | j        j                            d|            v|D ]A}t          j                            |dg          D ]}|                    |j                   Bt5                       |D ]}|                    d           |                                s|D ]}|                                 | j                                        r| j        j                            d           |                                s+||                                z  }|                                +| j        j                            d|            |S )Nr   zplugin.plugin.source_hashr   r   )r  r   F)r_   r   all_attachments.zipr@  r   r
  r   rv   r   r   r   u3   Нет вложений для скачиванияu'   Скачивание вложений: r  )r  r  r  u    Запустили задачу --r   r`   r  r  uC   Закончили скачивание файлов, ошибок ) rT   r  r/   load_fieldsr   r   r   r   rY  r   r  r    r  countr   r?   r   r  rX   rS   r  r  r  slistr  r~   r   r  r  r  r   r7   )rO   r  r  r;   main_filterprojects_pathattachment_countfiltersr   r  project_pathpath_filterdownload_countprocsr  r  filter_r  s                     r&   download_filesz"ConfluenceAPIImport.download_files  s   ))++Z%%''

##%@$ABBB D$/"8"?"KL'''111	
 99;;DDZPP) 		: 		:EE%L/00I(11)<<L|$$--c22 7"<0036"F|,>,>,>?@K#5;;;Q\C\;]]N : N2 {[8999 	fO"''(^___O"''(dRb(d(deeet899 	S 	SA>((10Q00&4",  )  D LLJJLLLO"''(Q4(Q(QRRRR 	4 	4G & 8 > >gW[V\ > ] ] 4 4""<?33334 	' 	'Dv&&&&##%% 	  		?$$&& 	KO"**+IJJJ""$$ 	+*..***J ""$$ 	+##$vjt$v$vwwwr%   c              #      K   | d}t          |d          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nz/comments.jsonr   r   r   r   rO   rv   comments_file_pathr   r   s        r&   _get_commentsz!ConfluenceAPIImport._get_comments  s       $444$d++ 	&q & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   "AAAc              #      K   | d}t          |d          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nz/restrictions.jsonr   r  r  s        r&   r   z%ConfluenceAPIImport._get_restrictions  s       $888$d++ 	&q & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r  c                 t                           d                   D ]}d fd	 |           d S )Nrv   c                 n	   	 | d         dk    r@j         j                            d|             	 j                             dd           d S j         j        j        j         d| d          }t          j                            |dg	          }|r%|j	        s	 j                             dd           d S |s#t                              |j         
          }n|
                    dg           | d                             d          rJ| d         d         d         dk    r2                    | d         d         j                           |_        nv| d                             d          rJ| d         d         d         dk    r2                    | d         d         j                           |_        nt          j        |_        | d         d         |_        | d                             d          rJ| d         d         d         dk    r2                    | d         d         j                           |_        n|j        |_        | d                             d          ro| d         d         d         d         dk    rQ                    | d         d         d         j                           |_        | d         d         d         |_        n|j        |_        |j        |_        | d         d         d         }| d         d         d         }|r~|r|t)          |d          }t)          |d          }                    |||                               ||           d                    d |j        j        D                       |_        | |_        ||_        | d         d         dk    rd|_        | d         d          d         d!k    rd"|_        |                    d#           | d$         D ]} 	||           tA                       |j                             dd           S #  tC                       j         "                    d%
d&          d'|  d()           Y nxY w	 j                             dd           d S # j                             dd           w xY w)*Nrz  draftuJ   Не обрабатываем черновики комментариев r  	processedr}   r~   r   r   r`   r   r   r/   **r  r  rC  rD  r  createdDater  rB  whenr@  r  rb   editorr   r  c                 ,    g | ]}t          |          S r$   r   rm   xs     r&   re  zMConfluenceAPIImport._process_obj_comments.<locals>.create.<locals>.<listcomp>  s    3\3\3\qCFF3\3\3\r%   r  locationinlineT
resolutionresolvedclosedr   rh  u7   Ошибка обработки комментария r   r   zERR-0028r:  r   )#r/   r?   r   rR  r   r   r    
CmfCommentr7   r   r  r   rD   	cmf_ownerrd   anonymous_usercmf_created_at
cmf_authorcmf_modified_bycmf_modified_atr   _convert_mentions_convert_linksr  r@  rh  r   r  tree_parentr  rz  r   r   r	  rQ  )r  r  r   cmf_commentr  r  	view_soupeditor_souprO  r  r   r   rO   s            r&   r  z9ConfluenceAPIImport._process_obj_comments.<locals>.create  s;   ?Ex(G33.66  8N  EL  8N  8N  O  O  Ox O,,YDDDDDw !% 6 = I\\WUY]\\F"("3"7"7vO`Na"7"b"bK" ;+F p O,,YDDDDDo ' 8&,&7&7vfaeap&7&q&q#//777	*..y99 A '	 29 =f E T T040@0@AST]A^_c_lAm0n0n--!),00== A '	 2; ? G; V V040@0@AST_A`aeanAo0p0p--010@-181CM1RK.	*..{;; G '	 2; ? G; V V151A1A')BTU`BabfboBp1q1q..1<1F.	*..}== Q '	 2= A$ G OS^ ^ ^6:6F6FwyGYZgGhimGnoso|G}6~6~36=i6H6WX^6_336A6K36A6P3"6?627;D$V_X6w?F ^ ^$1$$?$?	&3FF&C&C..{I{SSS++FI{KKK+-773\3\IND[3\3\3\+]+](29K/.9K+|,Z8HDD-1*|,\:8D
RR-5*  $$$666!(!4 3 3uk2222LLL& O,,YDDDDS NNNO--  /Bhklsht  /B  /Bx  /B  /B;E6 . S S S S S S O,,YDDDDDDO,,YDDDDs%   .P; AP; 9M&P; ;9Q64R R4)r  r   )r  )rO   r   r   r  r  s   ``` @r&   _process_obj_commentsz)ConfluenceAPIImport._process_obj_comments  s    ))#f+66 B	$ B	$G@E @E @E @E @E @E @E @E @EB F7#####EB	$ B	$r%   c              #      K   t          |                              d          }t                              |          D ]#}|dk    r	||                    |          dV  $d S )Nr0  r  )r  r   )r   r   r   r   )rO   obj_pathattachments_pathr  s       r&   _get_obj_attachmentsz(ConfluenceAPIImport._get_obj_attachments  s      >>22=AA$455 	 	I111&-66yAA     	 	r%   r  c                    t          j        d|           }|r|d         nd }|r|d         nd }t          t          |                              d                    5 }t
                              |          }d d d            n# 1 swxY w Y   |D ]}d|v rt          |d         d                   }nlt          j	        
                    |d         d                   }	t          j	                            |	j                  }
|
                    dd	g          d
         }|d         | k    st          |d                   |k    r
||k    r|c S d S )Nz((?:att)?\d+)\.(\d+)r   r   r  r3  r4  r  r  1r   r   r~   )r   	fullmatchr   r   r   r   r9   r   r   r   r   parse_qsqueryr7   )r  r  
file_matchfile_idfile_versionr   attach_info_listattachr3  r  query_paramss              r&   _get_confluence_attach_infoz/ConfluenceAPIImport._get_confluence_attach_info   s    \"99EE
#-7*Q--4(2<z!}}$w--(();<<== 	,#yy||	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,& 	 	FF""fY/9::#\226(3CJ3OPP
%|44Z5EFF&**9se<<Q?w9,,t%%00<// 	 	s   BBBc                      d} fd}                      d                   D ]8}| ||d         |d                   z  } j                            dd           9|S )Nr   c                    d}	                      | 
d                   }|r|d         nd}|r|d         n| }t          j                            |g d          }|s9t                              |j        d	          }|                    d
           |j        r6|r|                    d          r|d         }|                    d          |_        |                    d          r>|d         d         dk    r,                    |d         j	                           |_
        nt          j        |_
        t          |d          5 }|                    |                                d           d|_        |                    d
           t!                       |r|d         d         }	|j        |	k    sJ d d d            n# 1 swxY w Y   n# t$          $ r4 j                            d| d| d|j         d|	 d	d           d}Y nCt(          $ r7 t+                       j                            d| d| dd           d}Y nw xY w|S # |c cY S xY w)Nr   rv   r~   r  r   )r   r   url_preview_imgurl_preview)r_   r   r`   Tr_   r   r/   r   r   r3  r  rB  rC  rD  rbsmart_backupr  r  u   Размер файла '' (u@   ) не соответствует размеру из меты: z	 bytes / z byteszERR-0029r   r   u;   Не удалось обработать вложение 'rl  )r  r    CmfAttachmentr7   r/   r   r   r  r   rD   r  rd   r  r   upload_filert   r   st_sizeAssertionErrorrQ  r   r	  )r  r   errorattachment_metaattachment_idattachment_namer  attachment_versionr   file_size_metar   r   rO   s             r&   _process_attachmentzIConfluenceAPIImport._process_obj_attachments.<locals>._process_attachment<  sp    E;"&"B"B9cRXk"Z"Z9H P 5 5b>M"\/'":":S\#155(!   6 	 	
 " 6!'!5!5,%#'?(,	 "6 " "J OOO555- H& 	E?+>+>y+I+I 	E-<Y-G*4F4J4J64R4R
1.22488E 24 8 @K O O484D4DEWX\E]^b^kEl4m4mJ11454DJ1i.. H!"..qvvxxd.KKK59
2"D999"* H-<\-J:-VN#-#5#G#G#G#GH H H H H H H H H H H H H H H "   ))i i iM i i5?5Gi iR`i i i	 *       ))vRavvfsvvv *   
  us[   EG A2G?G GG GG I ;II =II II I rv   r  r   r  r  )r  r/   rR  )rO   r   r   r  r	  attachment_datas   ```   r&   _process_obj_attachmentsz,ConfluenceAPIImport._process_obj_attachments9  s    @	 @	 @	 @	 @	 @	 @	D  $88VEE 	@ 	@O**,,  F O$$\;????r%   c                 4   t           j        j        | _        |d         d         d         }|d         d         d         }|s|s|S |s|rd}t	          |d          }t	          |d          }| j        j        r	 | j        j        	                    d           t                              |d         d         d                   }|                     ||d	         ||
           np# t          $ rc d|                    d           d}	|                    d          r|	d|d         d          dz  }	| j                            |	d|           Y nw xY w|                     |||           |                     ||           |                     |||           |                     |||           |                     ||||           |                     |||           |                     |||           |                     |||           |                     |||           |                     |||           |                     |||           |                     ||           |                     ||           |                     ||           |                     |||           |                     ||           |                      ||           | !                    ||||           d"                    d |j#        j$        D                       }
|
S )Nr@  r  rb   r  z<p></p>r   uC   Конвертация текста из atlassian разметкиatlas_doc_formatr?  )soupsubobjuT   Не удалось конвертировать разметку страницы "r   rx  r3      (версия r4  rl  zERR-0031r  r  r  c                 ,    g | ]}t          |          S r$   r  r  s     r&   re  z9ConfluenceAPIImport._convert_doc_text.<locals>.<listcomp>  s    @@@1A@@@r%   )%r    r#   get_data_iddata_idr   r.   rE   r/   r?   r   r   r   _convert_atlas_docr   r7   rQ  r  _convert_status_convert_plantuml_convert_drawio_convert_msoviewer_convert_childpages_convert_task_filter_convert_excerpt_include_convert_include_convert_content_by_label_convert_details_summary_convert_anchor_convert_toc_convert_livesearchr  _convert_inline_comments_convert_excerpt_convert_detailsr  r@  rh  )rO   obj_datar   r  r  r  r  r  	atlas_rawexception_textr   s              r&   _convert_doc_textz%ConfluenceAPIImport._convert_doc_text  s   )5'0&!(+G4 	 	K  	 	D!$//	#FF33?  		ZZ&++,rsss JJx'78J'KG'TUU	''Yy-A	Z`'aaaa Z Z Z #T  {C  {G  {G  HO  {P  {P  #T  #T  #T<<	** Y"&X8KH8U&X&X&XXN)).ZUX)YYYYY	Z 	sI{;;;Y444sI{;;;S)[999YFKKK  i===!!#y+>>>%%c9kBBBc9k:::&&sI{CCC%%c9kBBBY444)[111  K888 	CK888 	%%c9555i555c9k&IIIww@@	(?@@@AAs   8A*C# #A*EEc              #      K   t          | d          }|                                rJt          |d          5 }|D ]}t                              |          V  	 d d d            n# 1 swxY w Y   d S )Nz/versions.jsonr   )r   r   r   r   r   )rO   rv   versions_file_pathr   r   s        r&   _get_versionsz!ConfluenceAPIImport._get_versions  s      !T"9"9"9::$$&& 	*($// *1 * *C**S//))))** * * * * * * * * * * * * * * ts   "A((A,/A,rZ  c                 .     fd}t           j                            ddgd          D ]}|                    d           t	                       d }t                               d                             D ].\  }}|t          j        k    r n ||          }|r	|j	        r|}/t                               d	dd
          }	|	
                    d           |_        j        r
                    d           t	                       d S )Nc           	         d }	 j         j                            dd          dd          d| d                     j         j        j        j         dd          d| d          }t
          j                            |d	g
          }|r%|j        s	 j         	                    dd           d S |s"t
                              |j                   }|                     d          |_
        |                     d          |_        |                     d          rN| d         d         dk    r<                    | d         j                           }||_        ||_        ||_        n3t"          j        |_        t"          j        |_        t"          j        |_        |                     d          |_        |                     d          |_        |                     d          |_        t-          |j        j                            d          d d                   |_        |j        |_        j                            d          |_        |                     di           }t=          |                    d          dk              |_                             ||          |_!        d|_"        | |_#        |$                    d           tK                       n`# tL          $ rS tO                       j         (                    dd          dd          d|  d            xj)        d!z  c_)        Y nw xY wj         	                    dd           n # j         	                    dd           w xY w|S )"Nu7   Обрабатываем версию страницы r   r  r~   z): version r4  r}   r  r  r  r3  r  r  r  rB  rC  rD  message%Y%m%d%H%M%S%fCLOSEDstatus_typer?  rz  r  r  Tr   u@   Ошибка обработки истории страницы z): zERR-0033r  r   )*r/   r?   r   r   r   r    CmfDocumentHistoryr7   r   rR  r  r  r   rD   r  r  r  rd   r  reasonofficial_numberofficial_dateintrb   strftimecmf_versiondoc_versionworkflowget_default_statusrz  boolcur_workflowr)  r   has_publishedr  r   r   r   r	  rQ  r;   )version_datacmf_document_historyr   r   version_contentrZ  r   rO   s        r&   create_versionz=ConfluenceAPIImport._process_versions.<locals>.create_version  s   #' <A&++9hW^N_ 9 9cklpcq 9 9 ,X 69 9   !O29ErrRVrrZfgoZprr'-'@'D'DF\`[a'D'b'b$' 0D0T f ((K@@@@@c , +1+D+D&%#'? ,E , ,( 7C6F6Fv6N6N$37C7G7G7O7O$4##D)) Ll4.@.HK.W.W!--l4.@.OPPF5;(26<(3;A(88565E(2676F(3;<;K(8.:.>.>y.I.I$+7C7G7G7Q7Q$45A5E5Ef5M5M$2367K7Y7_7h7hiy7z7z{~|~{~7  4A  4A$03G3S$0.5.>.Q.Q^f.Q.g.g$+"."2"29b"A"A489L9LX9V9VZc9c4d4d$1,0,B,B?T[J^ -C -` -`$) 6:$27C$4$))d);;; % % %))  +dmuv}m~  +d  +d  CK  LP  CQ  +d  +d  Vb  +d  +d*4.5 * 7 7 7 1$% ((K@@@@((K@@@@''s2   BK$ 2H1K$ #M  $AM>M   MM   M=r   =T)r   include_deletedTEXKOM_db_deleterv   )rB  Fr  )r   r@  cmf_deletedr   r   )r    r5  r7  r  r   	enumerater,  rL   $IMPORT_CONFLUENCE_PROC_LAST_PAGE_VERr@  r   cur_workflow_versionr   )
rO   rZ  r   rE  dhr5  version_countr3  document_historyfake_historys
   ```       r&   _process_versionsz%ConfluenceAPIImport._process_versions  sf   A	( A	( A	( A	( A	( A	( A	(H +00c7+  1 
 
 	- 	-B IItI,,,,&/0B0B8FCS0T0T&U&U 	3 	3"M7 KKK-~7CCC 3$4$A 3"2 00eaeln0ood+++'6$ 	+LLTL***r%   c                    |                      |d          }|                                sd S t          |d          5 }t                              |          }g |d<   |                      |d          }|                                rat          |d          5 }|D ]5}|d                             t                              |                     6	 d d d            n# 1 swxY w Y   |                      |d          }|                                rYt          |d          5 }	t                              |	          }
d|
t          |
          di|d<   d d d            n# 1 swxY w Y   |cd d d            S # 1 swxY w Y   d S )	Nr2  r1  labelsrq  rf  r  )rz   sizerh  )r   r   r   r   r9   r   r   r   )r  r*   doc_filer   reslabels_filef2	label_strri  f3r   s              r&   rM  z!ConfluenceAPIImport._get_document&  s_   ##FK88   	4(C   	A))A,,CCM!**6=AAK!!## D+s++ Dr%' D D	H,,TZZ	-B-BCCCCDD D D D D D D D D D D D D D D !))&,??J  "" W*c** Wb IIbMME'-5#e**/U/U&VC
OW W W W W W W W W W W W W W W 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   AE99CE9C!	!E9$C!	%=E9"2E E9 E$	$E9'E$	(E99E= E=c                     t          |                              d                                          }t          d |          }|S )NrK  c                 `    |                                  o| j                            d           S )Nr  )r  r_   r  )	path_objss    r&   r   z3ConfluenceAPIImport._get_doc_dirs.<locals>.<lambda>=  s+    i..00q9P9PQp9q9q5q r%   )r   r   r  r   )rO   
space_pathr^  doc_dirss       r&   _get_doc_dirsz!ConfluenceAPIImport._get_doc_dirs:  sH    $$--k::BBDD	qq
 

 r%   r     c              #      K   t          | d          }d}|                     |          D ]:}|dz  }||k     r|||z   dz
  k    r d S |                     ||j                  V  ;d S )Nrm  r   r   )r   ra  rM  r_   )rO   r9  offsetr  r  enum_dirr*   s          r&   _get_documentsz"ConfluenceAPIImport._get_documentsC  s      +11122((55 	; 	;FMH&  &5.1,,,$$Wfk::::::	; 	;r%   c                 Z    t          d |                     |          D                       S )Nc              3      K   | ]}d V  dS r   Nr$   r  s     r&   r   z=ConfluenceAPIImport._count_space_documents.<locals>.<genexpr>S  s"      ==1======r%   )sumra  )rO   r_  s     r&   _count_space_documentsz*ConfluenceAPIImport._count_space_documentsQ  s-    ==d00<<======r%   c           	      n   i }d}d}d}|                      |          D ]x}|dz  }||k    r|}d}|                    |d           ||xx         dz  cc<   t          d |                     t	          |                    D                       }||dz   z  }yd |                                D             }|S )Nr   r   r   c              3      K   | ]}d V  dS ri  r$   r  s     r&   r   zCConfluenceAPIImport._get_offsets_for_execute_doc.<locals>.<genexpr>e  s"      LLaLLLLLLr%   c                     g | ]	\  }}||f
S r$   r$   )rm   rd  r  s      r&   re  zDConfluenceAPIImport._get_offsets_for_execute_doc.<locals>.<listcomp>h  s     HHH}vuFE?HHHr%   )ra  r  rj  r,  r   r!  )	rO   r_  r  offsetscurrent_offset	obj_countre  r  rO  s	            r&   _get_offsets_for_execute_docz0ConfluenceAPIImport._get_offsets_for_execute_docU  s    	))*55 	+ 	+GMHE!!!)	~q111N###q(###LL4+=+=c'll+K+KLLLLLM**IIHHHHHr%   c           	         d}t          d          5  t                                          5  	 |                                }|dk    rn]| j                                        rnB	 d|d          d|d	          d
}t          j        dk    rd}ndt          j         }| j        j        	                    d| d|            | j        j
        j
        j         d|d	          }t          j                            |g d          }|st          d          |j        r|                     ||           n"| j        j        	                    d|            nM# t          $ r@}	t#                       | j                            d| d|	 dd           |dz  }Y d }	~	nd }	~	ww xY wy|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   Frv  Tr  rx  r   ry  r~   rl  r   r-  r.  u3   Обработка версий документа r/  r}   )r   r=  rM  r   r  r  u4   Документ не найден в системеQ   Документ изменен пользователем, пропускаем u@   Ошибка обработки версий документа zERR-0084r#   r:  r;  r   )r   cmfutildisable_aclr7   r/   r  rL   rL  r?   r   r   r   r    r#   r   r   rR  r	  rQ  r  )
rO   	obj_queuer  r  r   rT  rU  r   r   r]  s
             r&   _process_doc_versions_forkz.ConfluenceAPIImport._process_doc_versions_forkl  s	   5111 -	# -	#73F3F3H3H -	# -	#* mmoo&==?,,.. " "Es7|"E"ET"E"E"EKBbHH&<&jV=h&j&jO*//  1Cfq  1C  1C  vA  1C  1C  D  D  D $ 6 = IXXSQUYXXF$044%      5 	 	G # `'(^___. W..sG<<<<.33  5V  IT  5V  5V  W  W  W        NNNO--o[foojmoo#-!. .   
 aKFFFFFF G* X NN6"""[-	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	# -	#s_   G!9G	'C1EG	
F##6FG	F##G	=G!	G	G!G	G!!G%(G%c                    d}t          d          5  t                                          5  	 |                                }|dk    rnM| j                                        rn2	 |                     |d         |d                   }| j        j        j        j         d|d          }| j        	                    d	|            |d
         o| j
        j        dk    }	|	r|j        j        }
nMt          j                            |dg          }
|
s)t                              |d         | j        d|          }
|
j        r|
j        s|
                    ddg           |d         d         }| j        j                            d|            |d         dk    rt*          j        }n |                     || j                           }|s+| j        j                            d|d          d|            |d                             d          }|r\| j        j                            d|            |d         dk    rt*          j        }n#|                     || j                           }n|}|d         d         d         }| j        j                            d|            |d         dk    rt*          j        }n |                     || j                           }||d          ||| j        | j                            t9          j        |d                             |d         d          |d         d         d!         |||dd"}|d         j        d#k    r||d$<   |D ]}t?          |
|||                    tA          |
j!        j        "                    d%          d d&                   |
_#        |
j$        r|
%                    d'           |
j        r| j        j        j        j         d(| }t          j&                            |)          }|s#t          &                    |
d*|| j        +          }|d,                             d-          r2| j'        (                    | j'        j)        |d,         d-                   }n| j        j        j        j*        }|
j+         d.| d/| d0|_,        |%                    d'           t[                       n"| j        j                            d1|
            || .                    |
|          z  }| /                    |
|           |
j        rg }|d2         D ]}d| j        j        j        j         d|d          d}t          j0                            dd3d4| d4g5          }|r|1                    |           d| j        2                    d6| d7| d8|
9           ||
_3        | 4                    ||
          |
_,        |
j$        r$|
%                    d'           t[                       | 5                    ||
           n4# tl          $ r_ to                       | j        2                    d:|d          d;|d          d<d=d>?           | j        8                                 |d@z  }Y ntr          $ rb to                       | j        2                    d:|d          d;|d          dA| dBd=d>?           | j        8                                 |d@z  }Y nb to                       | j        2                    d:|d          d;|d          dCd=d>?           | j        8                                 |d@z  }Y nxY w| j        :                    dDdE           n # | j        :                    dDdE           w xY wi|;                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )FNr   Frv  Tr  r  r~   r}   zprocess is_homepager  r   r  r   r_   r/   r   r   r  tagsr  r  u5   Определяем автора документа rC  rD  u1   Не найден автор документа: r   r  u:   Определяем владельца документаr  rB  =   Определяем последнего редактора rz  r3  r  r  )r   r_   r  r  r=  rz  r  r  r   r  r  full_screenr2  r  r0  r1  r   z
::comment:r   r   )r   	log_levelr   r/   r  webuiu4    импортирован из Confluence: <a href="z" target="_blank">z</a>rt  rT  r   r   r   u   Не найден тег z ext_id=zERR-0017r  u   Ошибка создания r  uT   ': попробуйте очистить дамп и повторить импортzERR-0018r#   ru  r   u_   ': попробуйте отменить импорты связанные с проектом uY   , чтобы он удалился из системы и повторите импортr  r)   r  )<r   rv  rw  r7   r/   r  rM  r   r   r  root_parent
class_namedescr_documentrb   r    r#   r   is_newr  r?   r   rd   r  r   rD   r   r:   r>  r   get_status_typer4  setattrr9  r  r:  r;  r   r   r  r.   r  r   ext_urlverbose_namer   r   r  r  CmfTagr   rQ  r}  r)  r   FileNotFoundErrorr	  
log_detailAttributeErrorrR  r  )rO   rC  archive_folderrx  r  r  rZ  r   r   wiki_project_homepager   authorr  r  r  modifiedr  doc_dictr
  comment_ext_idr  r   r}  tag_raw
tag_ext_idr   s                             r&   _process_document_forkz*ConfluenceAPIImport._process_document_fork  s
   5111 j	# j	#73F3F3H3H j	# j	#hF$==??v%%?,,.. bF,,Xi-@(4.QQC $ 6 = IXXSQUYXXFO''(;6(;(;<<< !/ H ,7<G * - ")"8">"("4"8"8#)$,: #9 # #  ' &,&8&8%(\+/?04'-	 '9 ' 'G . TS&~ @#//v???!$Y!<.334tlr4t4tuuu!&>[88)*)9JJ)-)9)9&:O)P)PJ) I O2::  <Horszo{  <H  <H  @F  <H  <H  I  I  I #I 2 29 = =  3 O2778|uz8|8|}}}$V};;,-,<		,0,<,<U4==Q,R,R		(2I#&y>-#@#F.334~t|4~4~#F+{::./.>OO.2.>.>x?V.W.WO.5/27|,=1:2<040A.2.?.R.R4H4XY\]eYf4g4g /S /i /i69)n]6S7:9~m7TU[7\.47F7:37$& $&  $H-9XEE6DH]3#+ A AC#GS(3-@@@@.1'2I2O2X2XYi2j2jknlnkn2o.p.p+"- ;#LLTL:::"> ;040F0M0Y-m-mek-m-mN&,&7&;&;>&;&R&RG#* "*0*;*;+2./+9/3	 +< +" +"  #8}0099 M'+'A'A$(O$7$'M'$:(" ("
 (,'='D'L#*#7 !O !O,0!O !ODH!O !O !O $L $LLTL:::".33  5R  IP  5R  5R  S  S  Sd;;GSIIIF..w<<<. )!'*8} T TG*mt/E/L/X*m*m\cdh\i*m*m*mJ"(-"3"3HfN_R\N_N_N_;`"3"a"aC" T $C 0 0 0 0 $ 9 9:sV]:s:sgq:s:s;E7 !: !T !T !T !T'+'+'='=c7'K'K"- )#LLTL:::&LLL..sG<<<<( 	  	  	  NNNO--m$ m mHU\L] m m m#-!.	 .    O..000aKFFF% 
  
  
  NNNO--s$ s sHU\L] s sw~s s s $.!. .    O..000aKFFF  NNNO--`$``HU\L]```#-!. .   
 O..000aKFFFO,,ZEEEEDO,,ZEEEEQhFR NN6"""Uj	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	# j	#sz   _9^9'V=X&$]6&A&]]6A(]6]68A]]6^96^^9-_9^=	=_ ^=	___c                 @   d}	 |                     dddi          D ]}t          j        d|j        d                   }|                    d          }t
          j                            ||	          }|s$| j        	                    d
| d| d|           t
          j                            dd|gdd| dggdg          }	d}
t          j        d|j        d                   }|r|                    d          }
d}t          j        d|j        d                   }|r|                    d          }|j
        j        |j        j        |
|d}|	r|	j        |d<   nd|d<   t           |                    dd          j        d!i |d          }|                     ddi          D ]D}|                    dd|j        d          i          r|                    |j                    nEd S #  | j        	                    d | d|           Y d S xY w)"Nu  
        <div data-drawio-title="{name}" data-drawio-type="diagram" data-attach-id="{attach_id}" class="drawio-content" contenteditable="false">
            <div class="header">Диаграмма: "{name}"</div>
            <div class="content">
                <img cmf_converted=True src="{img_src}" alt="" data-mce-src="{img_src}" width="{width}" height="{height}">
            </div>
        </div>
        imgdata-macro-namedrawior   zdiagramName=([^|]+)data-macro-parametersr   r_   r   u#   Диаграмма с именем u@    не найдена во вложениях документа zERR-0019r  r   r   r_   r   %.pngr   r  100%zdiagramWidth=([^|]+)zdiagramHeight=([^|]+)r_   	attach_idwidthheightimg_srcr  r   html.parserr~   zdrawio-macro-content-data-macro-iduU   Неудалось конвертировать диаграмму из текста r$   )r   r   r   r   r|   r    r  r7   r/   rQ  r_   rb   r~   r   r   r   formatfindreplace_with
currentTag)rO   r   r  r  TAG_TMPLr   matchr  r  
attach_imgr  r  r  rn   
drawio_tags                  r&   r  z#ConfluenceAPIImport._convert_drawioK  s   $	H"++E:KX9V+WW    	"8#)D[:\]]"[[^^	-11y1MM O--  /eT]  /e  /e  `c  /e  /e;E3 . P P P#155xs>S5;V	EXEXEX4Y>[dicj 6 l l
	"939E\;]^^ +!KKNNE	":CIF]<^__ ,"[[^^F & 1%+Y_!&"( 
  '&0nDOO$&DO!"C("2"24"<"<"C"K"Kd"K"K][["+"4"4<Mx;X"4"Y"Y  J!d3g39UdKe3g3g-hii "//====   B	HO%%  'L  J  'L  'L3=3 & H H H H H Hs   G2G8 8"Hc                    d}|                     ddi          D ]}	 t          j                            |j        |j        j                  }n.#  d}| j                            d|j         d|           Y nxY wt          |
                    d	|j        |
          d          }|                     ddi          D ]}|                    |            d S )Nu  
        <div class="macros-panel plantuml" contenteditable="false" data-macros-parameters="{params}"
            style="display: inline-flex; flex-direction: column; position: relative; width: 100%;"
            data-rendered="true" data-macros="plantuml">
            <div data-layout="default" class="extension-container" contenteditable="false">
                <span role="img" aria-label="Макрос PlantUML">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="16" height="16">
                        <path d="M22,15h2v7h-7v-2h5v-5Zm2-10v6.731l-2-1.976v-.755H7v11h4.738c.033,.036,.057,.078,.092,.113l1.887,1.887H0V5c0-1.654,1.346-3,3-3H21c1.654,0,3,1.346,3,3ZM2,5v2h3v-3H3c-.551,0-1,.448-1,1Zm3,4H2v11h3V9Zm17-2v-2c0-.552-.448-1-1-1H7v3h15Zm-9.715,9.292c-.38,.391-.38,1.025,0,1.416l2.715,2.792v-2.5h2c1.654,0,3-1.346,3-3v-2.023h2.455l-2.756-2.711c-.386-.386-1.012-.386-1.398,0l-2.756,2.711h2.455v2.023c0,.552-.448,1-1,1h-2v-2.5l-2.715,2.792Z"></path>
                    </svg>
                </span>
                <span class="extension-title">
                    <span class="excerpt-title">PlantUML</span>
                </span>
                <span class="macros-actions">
                    <span class="macros-refresh">
                        <svg viewBox="0 0 24 24" style="width: 14px; height: 14px; color: rgb(32, 32, 32);"><path fill="#202020" d="M12,2a10.032,10.032,0,0,1,7.122,3H16a1,1,0,0,0-1,1h0a1,1,0,0,0,1,1h4.143A1.858,1.858,0,0,0,22,5.143V1a1,1,0,0,0-1-1h0a1,1,0,0,0-1,1V3.078A11.981,11.981,0,0,0,.05,10.9a1.007,1.007,0,0,0,1,1.1h0a.982.982,0,0,0,.989-.878A10.014,10.014,0,0,1,12,2Z"></path><path fill="#202020" d="M22.951,12a.982.982,0,0,0-.989.878A9.986,9.986,0,0,1,4.878,19H8a1,1,0,0,0,1-1H9a1,1,0,0,0-1-1H3.857A1.856,1.856,0,0,0,2,18.857V23a1,1,0,0,0,1,1H3a1,1,0,0,0,1-1V20.922A11.981,11.981,0,0,0,23.95,13.1a1.007,1.007,0,0,0-1-1.1Z"></path></svg>
                    </span>
                    <span class="macros-edit" style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete">
                        <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>
            </div>
            <div data-fabric-macro="null" data-macro-body="" class="ak-renderer-wrapper" contenteditable="true">
                <textarea class="puml-code">{uml}</textarea>
            </div>
            <div class="macros-preview" contenteditable="true">
                {svg}
            </div>
        </div>
        r  plantumlr  r  u.   Не удалось получить svg из zERR-0002r  z{})paramsumlsvgr  )r   r    r#   convert_uml2svgr   r~   rb   r/   rQ  r   r  r  )	rO   r   r  r  TMPr   r  new_tagold_tags	            r&   r  z%ConfluenceAPIImport._convert_plantumlz  s   &P ''/@*.M'NN 
	 
	CN(887:CSTTN))*e[^[c*e*e5?W * N N N N N#CJJdcJ$R$RTabbG$--5F
4S-TT  $$W---
	 
	s   /A)A9c           	         d}|                     dg           |j        }t          |j                  }|                                }|                                 g }t          |          D ]J\  }	}
|	| d|	dz    |
d         dk    r|
d         nd|	dz    |
d         |d	}|                    |           Kd
ddddgdddddddgddd}dt          |j                  ||d         dt          |          d}|	                    |
                    |                     t          |                    t                              |d          |||d                   d          }|j        S )u8    Создает тег макроса Word или Excel u  
            <div
                class="macros-panel mso-viewer"
                contenteditable="false"
                data-id
                data-macros="msoviewer"
                data-macros-parameters='{params}'
                data-rendered="1"
            >
                <div class="extension-container" contenteditable="false" data-id data-layout="default">
                    <span aria-label="Макрос {plugin_title}" data-id role="img">
                        <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewbox="0 0 24 24" width="16" height="16">
                            <path d="M22,15h2v7h-7v-2h5v-5Zm2-10v6.731l-2-1.976v-.755H7v11h4.738c.033,.036,.057,.078,.092,.113l1.887,1.887H0V5c0-1.654,1.346-3,3-3H21c1.654,0,3,1.346,3,3ZM2,5v2h3v-3H3c-.551,0-1,.448-1,1Zm3,4H2v11h3V9Zm17-2v-2c0-.552-.448-1-1-1H7v3h15Zm-9.715,9.292c-.38,.391-.38,1.025,0,1.416l2.715,2.792v-2.5h2c1.654,0,3-1.346,3-3v-2.023h2.455l-2.756-2.711c-.386-.386-1.012-.386-1.398,0l-2.756,2.711h2.455v2.023c0,.552-.448,1-1,1h-2v-2.5l-2.715,2.792Z"></path>
                        </svg>
                    </span>
                    <span class="extension-title" data-id>
                        <span class="excerpt-title" data-id>{plugin_title}</span>
                    </span>
                    <span class="macros-actions" data-id>
                        <span class="macros-edit" data-id>
                            <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                            </svg>
                        </span>
                        <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>
                </div>
                <div class="macros-preview" data-id>
                    <div class="mso-preview-wrapper" data-id>
                        <img class="mso-preview-image" data-id id="mso-img_{attach_id}_1" src="{url_preview_img}"/>
                    </div>
                </div>
            </div>
        r  r   r   
sheet_namer  u   Листr   )numr~   r   r   imgUrlzOffice Wordwordz
.doc,.docxz.docz.docx)pluginTitle
pluginTypeacceptTypesacceptTypesList	pageScalezOffice Excelexcelz
.xlsx,.xlsz.xlsxz.xlsr   )viewdocviewxlsr   r   )verparentIdr   currentPageRefslicePageNum
pagesCountFr=  r  )r  r  r  plugin_titler  )r  r~   r   r  get_fullviewsortrK  r   r   r   r7   r   r  r   r   r  )rO   r   r  plugin_typeTMPLr  r  fullview_pagesr   r  fullview_pager  param_typesr  r  s                  r&   _create_msoviewer_macro_tagz/ConfluenceAPIImport._create_msoviewer_macro_tag  s   'R 	-.///I	f455,,.."+N";"; 	 	C"..S1W..8El8SWY8Y8Y|44_sjmpqjq_s_s$U+) D LL  -$+$*G#4   .%+$+V#4 
 
$ GJ#Ahe**
 
 	kook223334::fSX:3Y3Y6?<K9?9N !, !P !P !.	/ / !!r%   c           
         ddg}|D ]f}|                     d|i          D ]I}	 |                    d          }t          d |                    d          D                       }|d         }	t          j                            ||		          }
|
st          d
|	 d          |                    d|i          }|r*|                    | 	                    ||
|                     # t          $ rv}d| d|j
         d|j        d          d}t          |t          j                  r|d|j         dz  }|d| z  }| j                            |d|p|           Y d}~Cd}~ww xY whdS )u7    Конвертирует макросы Word и Excel r  r  r  r  r  c              3   B   K   | ]}|                     d d          V  dS rF  r   Nr   rm   params     r&   r   z9ConfluenceAPIImport._convert_msoviewer.<locals>.<genexpr>	  s0      *g*g55;;sA+>+>*g*g*g*g*g*gr%   |r_   r   r_   &   Не найдено вложение 'r  0   Ошибка обработки макроса '   ' в документе 'r  r~   rl  r  r/  ERR-0012r  N)r   r7   r   r   r    r  r   r  r  r  r_   r  rP  r5  r7  r/   rQ  )rO   r   r  r  r  macro_types
macro_typer   original_paramsr  r  r  r]  
error_texts                 r&   r  z&ConfluenceAPIImport._convert_msoviewer	  s    ),% 	 	J"++3Dj2Q+RR  &)gg.E&F&FO&**g*gOLaLabeLfLf*g*g*g&g&gO / 7I#155W95UUF! _'(]QZ(](](]^^^'nn4Ez3RnSSG l,,T-M-MgW]_i-j-jkkk    d: d d29,d dCJCZ[_C`d d d  "&&*CDD R"&Q8N&Q&Q&QQ
*s**,JO--"#-"-g .        	 	s   CC**
E*4A+E%%E*c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}|                    ddi          D ]}d}|                    d          }|                    dd          }dt          |j                  ddddd}	t          d |                    d          D                       }
|
                    d          rd|	d<   nd|	d<   |
                    d          r|
d         |	d<   |
                    d          r|
d         |	d<   |
                    d           r|
d          |	d!<   |
                    d"          r$dd#d#d$}|                    |
d"                   |	d%<   |
                    d&          r$d'd(d)d*}|                    |
d&                   |	d+<   |
                    d,          rd|	d-<   d}|
                    d.          rE|
d.         d/k    r8t          |j        j                  |	d0<   t          |j        j                  }d1}nnd1}t          |
                    t          |j                  |t                              |	dd23                              d4d5          ||6                              d7d          d8          }|r|                    d|i          nd9}|s|                    ddi          }|r|                    |j                   d9S ):ua   
        Конвертирует макрос "Отображение дочерних"
        z
            <div
                class="macros-panel"
                contenteditable="false"
                data-children-docs="{doc_id}"
                data-id="a  "
                data-macro-parameters="{params}"
                data-macros="children-docs"
                original-data-macro-parameters="{original_params}"
                cmf_converted="{cmf_converted}"
            >
                <div class="extension-container" data-id="uW   " data-layout="default">
                    <span aria-label="Макрос " data-id="aq  " role="img">
                        <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="20" height="20">
                            <path d="M22.485,10.975,12,17.267,1.515,10.975A1,1,0,1,0,.486,12.69l11,6.6a1,1,0,0,0,1.03,0l11-6.6a1,1,0,1,0-1.029-1.715Z"></path>
                            <path d="M22.485,15.543,12,21.834,1.515,15.543A1,1,0,1,0,.486,17.258l11,6.6a1,1,0,0,0,1.03,0l11-6.6a1,1,0,1,0-1.029-1.715Z"></path>
                            <path d="M12,14.773a2.976,2.976,0,0,1-1.531-.425L.485,8.357a1,1,0,0,1,0-1.714L10.469.652a2.973,2.973,0,0,1,3.062,0l9.984,5.991a1,1,0,0,1,0,1.714l-9.984,5.991A2.976,2.976,0,0,1,12,14.773ZM2.944,7.5,11.5,12.633a.974.974,0,0,0,1,0L21.056,7.5,12.5,2.367a.974.974,0,0,0-1,0h0Z"></path>
                        </svg>
                    </span>
                    <span class="extension-title" data-id="u   ">Макрос "Отображение дочерних"</span>
                    <span class="extension-object-name" data-id="zQ"> | {doc_name}</span>
                    <span class="macros-actions" data-id="z>">
                        <span class="macros-edit" data-id="a  " style="margin-right: 7px;">
                            <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                            </svg>
                        </span>
                        <span class="macros-delete" data-id="aD  ">
                            <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>
                </div>
                <div class="ak-renderer-wrapper" data-fabric-macro="null" data-id="z7" data-macro-body=""></div>
            </div>
        r  rh  r  falser  r  r  F50none)isShowChildrenr  childrenAmountrB   includeViewTypeisOrderByDeskc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rF  r   r   Nr   r   r  s     r&   r   z:ConfluenceAPIImport._convert_childpages.<locals>.<genexpr>l	  s]       $ $u{{3**++q00 C##0000$ $r%   r  r  Tr  r  rB   firstr  depthstyle
headerTypeexcerptTyper?  r  simplezrich contentr  r  r_   r  r  r   creationr  sortTypereverser  r  r   
documentIdtrue,:r>  
separatorsrx  &quot;)r*   doc_namer  r  cmf_convertedr   r  N)r  r   r7   r   r~   r   r   r   r_   r   r  r   r   r   r  r  r  )rO   r   r  r  r  r   r  macro_iddata_macro_parametersr  macro_parametersview_type_mapsort_type_mapr  r  r  s                   r&   r  z'ConfluenceAPIImport._convert_childpages1	  sY   &
 ,,..& & <@<<>>& & @D||~~& && =ALLNN'& &( CG,,..)& &* <@<<>>+& &, =ALLNN-& &6 ?Cllnn7& &H UYT`T`TbTbI& & &P ''/@*.M'NN N	9 N	9C#Mww//H$'GG,CR$H$H! #(
OO"&#)!& F  $ $ $288==$ $ $    
  ##E** &+/'(("%w##G,, E+;G+D'(##G,, <"27";w##G,, A'7'@|$##M22 _"'$-! !
 -:,=,=>N}>],^,^()##F++ Q# 0 1! !
 &3%6%67G7O%P%Pz"##I.. /*.'H##F++ 	%#F+s22+.w~/@+A+AF<("7>#677H$*MM $#wz??%::%*#- &   gc8,,$9"/  
 
 '$## G LT]innOX+FnGGGY]G P#..0A:/N.OO 9$$W%7888]N	9 N	9r%   c           
      N   d}|                     ddi          D ]}|                    d          }|                    d          }t          d |                    d          D                       }|                    d	d
          }|r|                    d|i          nd}|s|                    ddi          }|rat          |                    |d                    d |j        D                                 d          }	|	                    |	j
                   
dS )uH   
        Конвертирует макрос "Выборка"
        u~  
        <div
            class="macros-panel macros-excerpt-block"
            contenteditable="false"
            data-id
            data-macros="exceprt"
            data-param-name="{name}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Include. 'Создать выборку'" data-id role="img">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id>Макрос Include. 'Создать выборку' <span class="excerpt-title" data-id>| name = {name}</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-edit" data-id style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <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>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-id data-macro-body="">{content}</div>
        </div>
        r  excerptr  r  r  c              3   B   K   | ]}|                     d d          V  dS r  r  r  s     r&   r   z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>	  s0      #a#aEEKKQ$7$7#a#a#a#a#a#ar%   r  r_   &   Выборка без названияNr  c              3   4   K   | ]}t          |          V  d S r   r  rm   r?  s     r&   r   z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>	  s(      'U'UG'U'U'U'U'U'Ur%   r_   r?  r  )r   r7   r   r   r  r   r  r  contentsr  r  )
rO   r  r  r  r   r  r  excerpt_namer  r  s
             r&   r$  z$ConfluenceAPIImport._convert_excerpt	  sX    D ''/@).L'MM 	9 	9Cww//H"ww'>??##a#aEUE[E[\_E`E`#a#a#aaa+//8`aaLKS]innOX+FnGGGY]G O#..0A9/M.NN 9'KK) "'U'UGDT'U'U'U U U     "  $$W%7888%	9 	9r%   c                 <   d}|                     ddi          D ]}|                    d          }|                    d          }d|v r|                    dd          \  }}	n`t          |t          j                  r |j                                        d	         }n$|j        j                                        d	         }|}	|                    d
          }
|
rCt          d |
                    d          D                       }
|
                    dd          }nd}t          |                    ||	|          d          }|r|                    d|i          nd}|s|                    ddi          }|r|                    |j                   dS )u~   
        Конвертирует макрос "Включить выборку"("Вставить фрагмент")
        u  
        <div
            class="macros-panel macros-include-block"
            contenteditable="false"
            data-id
            data-macros="include-excerpt"
            data-param-excerpt="{excerpt_name}"
            data-param-pageid=""
            data-param-pagename="{page_name}"
            data-param-projectkey="{space_key}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Include. " data-id role="img">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id>Макрос Include. "Вставить выборку" <span class="excerpt-title" data-id>| Имя = {excerpt_name}</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-edit" data-id style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <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>
            </div>
            <div class="ak-renderer-wrapper" data-id></div>
        </div>
        r  excerpt-includer  r  data-macro-default-parameterr  r   r
  r  c              3   B   K   | ]}|                     d d          V  dS r  r  r  s     r&   r   z?ConfluenceAPIImport._convert_excerpt_include.<locals>.<genexpr>
  s0      'e'eC(;(;'e'e'e'e'e'er%   r  r_   r  r  	page_namer  r  N)r   r7   r   rP  r    r  r  r9   r   r   r   r  r  r  r  )rO   r   r  r  r  r   r  macro_default_parameterr  r  r  r  r  r  s                 r&   r  z,ConfluenceAPIImport._convert_excerpt_include	  s   #J ''/@BS.T'UU !	9 !	9Cww//H&)gg.L&M&M#---'>'D'DS!'L'L$	99c6#455 I # 3 8 8 : :5 AII #
 : ? ? A A% HI3	"ww'>?? H#''e'eIYI_I_`cIdId'e'e'e#e#e /33F<deeG#!-''   
  G LT]innOX+FnGGGY]G W#..0ACT/U.VV 9$$W%7888C!	9 !	9r%   c                    d}|                     ddi          D ]"}|                    d          }|                    d          }d|v r|                    dd          \  }}	n`t          |t          j                  r |j                                        d	         }n$|j        j                                        d	         }|}	t          |
                    |	|
          d          }
|r|                    d|i          nd}|s|                    ddi          }|r|                    |
j                   $dS )u[   
        Конвертирует макрос "Включить страницу"
        uM  
        <div
            class="macros-panel macros-include-page"
            contenteditable="false"
            data-macros="include-page"
            data-param-pageid=""
            data-param-page-label="{page_label}"
            data-param-projectkey="{space_key}"
            data-rendered="true"
        >
            <div data-layout="default" class="extension-container" contenteditable="false">
                <span role="img" aria-label="Макрос Include. ">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title">Макрос Include. "Вставить страницу" <span class="excerpt-title">| Имя = {page_label}</span></span>
                <span class="macros-actions">
                    <span class="macros-edit" style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete">
                        <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>
            </div>
            <div class="ak-renderer-wrapper"></div>
        </div>
        r  includer  r  r  r  r   r
  
page_labelr  r  N)r   r7   r   rP  r    r  r  r9   r   r   r  r  r  r  )rO   r   r  r  r  r   r  r  r  r  r  r  s               r&   r  z$ConfluenceAPIImport._convert_include3
  sr   "H ''/@).L'MM 	9 	9Cww//H&)gg.L&M&M#---(?(E(Ec1(M(M%	::c6#455 I # 3 8 8 : :5 AII #
 : ? ? A A% HI4
#)'     G LT]innOX+FnGGGY]G O#..0A9/M.NN 9$$W%78883	9 	9r%   c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
|                                   d}|                    ddi          D ]}|                    dd          }t          d |                    d          D                       }|                    dd          |                    dd          |                    dd          |                    dd          |                    dd          d|                    dd           d|                    d d!           |                    d"          |                    d#          |                    d$d%          |                    d&d%          |                    d'          d(}t
                              |dd)*                              d+d,          }t          |	                    ||-          d.          }|                    d/          }	|	r|
                    d/|	i          nd0}
|
s|
                    d1ddi          }
|
r|
                    |j                   d0S )2uN   
        Конвертирует макрос "Оглавление"
        zr
        <div 
            class="macros-panel wiki-toc"
            contenteditable="false"
            data-id="z"
            data-macros="wikitoc"
            data-macros-parameters="{params}"
            data-macro-parameters-original="{original_params}"
        >
            <div class="extension-container" contenteditable="false" data-id="uR   " data-layout="default">
                <span aria-label="Макрос" data-id="a  ">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="14px" height="14px">
                        <path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill="var(--theme-hack-color, black)"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="<">
                    <span class="excerpt-title" data-id="u{   ">Макрос "Оглавление"</span>
                </span>
                <span class="macros-actions" data-id="z<">
                    <span class="macros-action" data-id="a	  " data-macros-action="macros-edit">
                        <svg viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #222)" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-action macros-delete" data-id="ao  " data-macros-action="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #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="var(--color-gray-222, #222)" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" data-id="z">
                <p data-id="z1"></p>
            </div>
        </div>
        r  tocr  r  r  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  r  s     r&   r   z3ConfluenceAPIImport._convert_toc.<locals>.<genexpr>
  ]        u{{3**++q00 C##0000 r%   r  rC  r7  outlineF	separatorbracketsrK  40pxr  mixedhminLevelr  maxLevel6excluder  	printableTabsoluteUrlclass)rC  r"  r#  rK  r  r(  r)  r+  r  r,  r-  r.  r  r  rx  r  r  r  r  r  Ndiv)r  r   r7   r   r   r   r   r   r   r  r  r  r  )rO   r  r  r  r   r  r  
parametersr  r  r  s              r&   r!  z ConfluenceAPIImport._convert_tocv
  sE   % llnn	% % PT||~~% % ;?,,..% % 9=% %  ;?,,..!% %$ 8<||~~%% %& ;?,,..'% %0 IM1% %B 8<||~~C% %D "\\^^E% % %N ''/@%.H'II *	9 *	9C"ww'>CC  -33C88    F 

6622!::i77#ZZZ@@ **Xv66GW55=

:s ; ;===

:s ; ;==!::i00!::i00#ZZT::%zz->>G,, J "% $   gc8$$	  $%$4     G ww//HKS]innOX+FnGGGY]G R#..7H%6P.QQ 9$$W%7888U*	9 *	9r%   c                 ^   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}|                    ddi          D ]}d}|                    dd          }t          d |                    d          D                       }|                    dd          }|                    d          }	|	rRt
          j                            ddd| j        j	        j	        j
         dgddd|	 dggdg          }
|
r|
j        }	nd }|	d! |                    d"d                              d#          D             ||                    d$d%          d&}t                              |d'd()                              d*d+          }t          |                    ||||,          d-          }|                    d.          }|r|                    d.|i          nd/}|s|                    d0ddi          }|r|                    |j                   d/S )1uj   
        Конвертирует макрос "Livesearch" (Динамический поиск)
        z#
        <div
            data-id="a>  "
            class="macros-panel wiki-live-search"
            contenteditable="false"
            data-macros-parameters="{params}"
            data-macro-parameters-original="{original_params}"
            data-macros="wikilivesearch"
            cmf_converted="{cmf_converted}"
        >
            <div data-id="l" data-layout="default" class="extension-container" contenteditable="false">
                <span data-id="u  " aria-label="Макрос">
                    <svg viewbox="0 0 24 24" width="12px" height="12px" class="ng-star-inserted">
                        <path fill="currentColor" d="M23.707,22.293l-5.969-5.969a10.016,10.016,0,1,0-1.414,1.414l5.969,5.969a1,1,0,0,0,1.414-1.414ZM10,18a8,8,0,1,1,8-8A8.009,8.009,0,0,1,10,18Z" ></path>
                    </svg>
                </span>
                <span data-id="zT" class="extension-title">
                    <span class="excerpt-title" data-id="us   ">Макрос "Динамический поиск"</span>
                </span>
                <span data-id="=" class="macros-actions">
                    <span data-id="a'  " class="macros-action" data-macros-action="macros-edit">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path _ngcontent-aiw-c17="" fill="var(--color-gray-222, #222)" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span data-id="ax  " class="macros-action macros-delete" data-macros-action="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;" >
                            <path fill="var(--color-gray-222, #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="var(--color-gray-222, #222)" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div data-id="u  " class="ak-renderer-wrapper" contenteditable="false">
                <div class="search-preview-wrapper temporary-element search-preview-wrapper_large">
                    <div class="search-preview-icon">
                        <svg viewbox="0 0 24 24" width="14px" height="14px" class="ng-star-inserted">
                            <path fill="currentColor" d="M23.707,22.293l-5.969-5.969a10.016,10.016,0,1,0-1.414,1.414l5.969,5.969a1,1,0,0,0,1.414-1.414ZM10,18a8,8,0,1,1,8-8A8.009,8.009,0,0,1,10,18Z"></path>
                        </svg>
                    </div>
                    <input class="search-preview" placeholder="{placeholder}" type="text" /> <button class="search-button">Поиск</button>
                </div>
            </div>
        </div>
        r  
livesearchr  r  r  r  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  r  s     r&   r   z:ConfluenceAPIImport._convert_livesearch.<locals>.<genexpr>  r!  r%   r  placeholderu
   ПоискspaceKeyr   r   %::::%r  ILIKE%"key":""%r  r  r  c                 :    g | ]}||                                 S r$   strip)rm   lables     r&   re  z;ConfluenceAPIImport._convert_livesearch.<locals>.<listcomp>  s6       KKMM  r%   rT  r  rU  medium)currentSpaceKeyrT  r7  rU  Fr  r  rx  r  )r  r  r7  r  r  r  Nr0  )r  r   r7   r   r   r    r  sgetr/   r   r   r~   r   r   r   r   r  r  r  r  )rO   r  r  r  r   r  r  r  r7  r  rC  r1  r  r  r  s                  r&   r"  z'ConfluenceAPIImport._convert_livesearch
  sR   -llnn- -  <<>>- - !%- -  !%!- -" ;?,,..#- -& !%'- -( %)LLNN)- -2 %)LLNN3- -D  <<>>E- - -^ ''/@,.O'PP 9	9 9	9C"M"ww'>CC  -33C88    F !**]LAAK

:..I , +00!6+_1G1N1Z+_+_+_`*G5M	5M5M5MN !6 1    , '
II$+M $- !'Hb!9!9!?!?!D!D  
  +

6844	 	J "% $   gc8$$	  $%$4 +"/	     G ww//HKS]innOX+FnGGGY]G Y#..7H,6W.XX 9$$W%7888s9	9 9	9r%   c                    d}|                     dddi          D ]+}|                    d          }|                    dd          }t          d	 |                    d
          D                       }|                    dd          }|                    dd          }	t	          |                    ||	          d          }
t          j        |
          }|                    |
j                   |r|	                    d|i          nd}|s|	                    ddi          }|r|                    |j                   -dS )uF   
        Конвертирует макрос 'Статус'
        z
        <span
            data-macros="wiki-status"
            text="{text}"
            color="{color}"
            class="statusView-content-wrap"
            contenteditable="false"
        >
            <span>{text}</span>
        </span>
        r  r  rz  r  r  r  r  c              3   B   K   | ]}|                     d d          V  dS r  r  r  s     r&   r   z6ConfluenceAPIImport._convert_status.<locals>.<genexpr>N  sD         C##     r%   r  r   colourneutral)r   colorr  N)
r   r7   r   r   r   r  copyr  r  r  )rO   r  r  r  r   r  r  r  r   rI  r  new_tag_viewr  s                r&   r  z#ConfluenceAPIImport._convert_status;  s   
 ''6G5R'SS 	> 	>Cww//H"ww'>CC  -33C88    F ::gr**DJJx33E#     G  9W--L
 W/000KS]innOX+FnGGGY]G N#..0A8/L.MM >$$\%<===;	> 	>r%   c                    ddl m} t                      }t                      }t	          |                     d                    }	 |D ]}|dk    rt          |          }t          |          }	|dk    r|	                    d          g}
n8|dk    r2d |	                    d	                              d
          D             }
t                      }t                      }|
D ]D}|                    dd                              dd          } ||dd          }	 t          j
                            dddd| dgdd|gddd| dggddg          }|s1t          
                    |          }|                    d           n7# t          $ r*}t                              d| d|            Y d }~d }~ww xY w|j        j        |vrW|                    |j        j                   |                    |j        j        |j        j        |j        j        dd           F|r|                    dd|g           ||d<   |d k    rwt          |          }t          |          }	|dk    r|	                    d          g}n8|dk    r2d! |	                    d	                              d
          D             }t                      }t                      }|D ]}|d"k    r|r|}n3t          j                            d#d$d%| d&gd'd$d(| dggddg          }|st                              d)| d*           a|j        j        |vrW|                    |j        j                   |                    |j        j        |j        j        |j        j        d+d           |r|                    d,d|g           ||d,<   n# t,          $ r Y nw xY w||fS )-Nr   translitr   rt  z\=rx  inc                 8    g | ]}|                     d           S rx  r?  )rm   rt  s     r&   re  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>x  s$    !^!^!^u%++c"2"2!^!^!^r%   z()r  r   #r  ruTlanguage_codereversedORaliasr;  r=  r_   r2   r  rk   r   *   Не удалось создать тег r   r  )r_   r2   r~   	classNamer}  INr   c                 8    g | ]}|                     d           S rQ  r?  rl   s     r&   re  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>  s"    !V!V!V1!''#,,!V!V!Vr%   zcurrentSpace()r   r   r9  r:  r  r<  u.   Не удалось найти проект «   »r  r   )transliteraterN  r7  r   iterr   nextr@  r   r    r  r7   r   r   r=   r   r~   rb   r   r_   r2   r  StopIteration)cqlr   r   rN  bql_listbql_dict	cql_partscql_partopr   rT  tags_ids	tags_listrt  label_aliasr   r   r   
parent_idsparent_listr   rC  s                         r&   _bql_from_cqlz!ConfluenceAPIImport._bql_from_cqlj  s   ******66663((	H	% E9 E9w&&iB!)__FU{{"(,,s"3"3!4t!^!^T@R@R@X@XY\@]@]!^!^!^#vvH $I!'   %c3 7 7 ? ?R H H&.huDSW&X&X&X%"(-"3"3D%,g}5}}}$E%+We$<%,g7J;7J7J7J$K<" ,26*:	 #4 #< #<C
 $' ;&,mmm&?&? #T : : :( % % %#OO,eY^,e,ebc,e,efff$HHHH% 6<x77$OOCFL999%,,(+(+&)fl-5	. .      5 x(@AAA+4(((iB!)__FU{{"(,,s"3"3!4t!V!VT8J8J8P8PQT8U8U!V!V!V!%J"&&&K!'   $4444&,GG&,&7&;&;%-v7M[7M7M7M$N%6@T5@T@T@T$U(" )/'7 '< ' 'G  ' %#OO,f]b,f,f,fggg$":+:==&--gj.>???'..(/(:(/(:&-j&6-9	0 0    " 9 4(DEEE-8*KE9L  	 	 	D	!!s?   CO A+F
O 
F? F:5O :F??HO 
OOc                    d}|                     ddi          D ],}|                    d          }t          |                    d                    }	 |                    d          }t	          d |D                       }	|                     |	                    d	d
          | j        j        j        j                  \  }
}ddd|	                    dd          dv t          |	                    dd                    |	                    dd          dv |	                    dd          dv d|
|                    dg           d
}n*#  | j        
                    d| d| d|           Y nxY wt          |                    t          |                              dd                              dd
                              dd                               d!d"          #          d$          }|r|                    d|i          nd%}|s|                    ddi          }|r|                    |j                   .d%S )&u`   
        Конвертирует макрос "Содержимое по меткам"
        u  
        <div
            class="macros-panel content-by-label"
            contenteditable="false"
            data-id
            data-macros="contentbylabel"
            data-macros-parameters="{parameters}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Содержимое по тегам" data-id role="img"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="14" height="14">
                    <path d="M20.457,4.555,12.486.126a1,1,0,0,0-.972,0L3.543,4.555A3,3,0,0,0,2,7.177V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V7.177A3,3,0,0,0,20.457,4.555ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V7.177A1,1,0,0,1,4.515,6.3L12,2.144,19.486,6.3A1,1,0,0,1,20,7.177Z"></path><circle cx="12" cy="7" r="1.5"></circle></svg>
                </span>
                <span class="extension-title" data-id><span class="excerpt-title" data-id>Содержимое по тегам</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-action" data-id data-macros-action="macros-edit">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-action macros-delete" data-id data-macros-action="macros-delete">
                        <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>
            </div>
            <div class="macros-preview" data-id></div>
        </div>
        r  contentbylabelr  r  r  r  c                 :    g | ]}|                     d d          S rF  r   r  rm   ps     r&   re  zAConfluenceAPIImport._convert_content_by_label.<locals>.<listcomp>  $    GGG1qwwsAGGGr%   rb  r  r   defaultr  FTr  Truemax   
showLabelsT	showSpacer  r}  )
r  modelr  r  rx  rz  r{  r  bqlr}  ui   Не удалось конвертировать макрос «Содержимое по меткам»     с параметрами: zERR-0034r  r  r  r   z:Truez:truez:Falsez:falser1  r  N)r   r7   r   r   r   rm  r/   r   r   r9  rQ  r   r  r   r  r  r  )rO   r   r  r  r  r   r  r  all_parametersr  r}  rd  r1  r  r  s                  r&   r  z-ConfluenceAPIImport._convert_content_by_label  s   < ''/@BR.S'TT &	9 &	9Cww//H"377+B#C#CDD8!1!7!7!<!<GGGGGHH $ 2 26::eR3H3H$/J`JgJs t tX&%%zz)U;;?UUvzz%4455"(**\4"@"@DZ"Z!'K!>!>BX!X#)$LL44 

8))F  AH F F3CF F)w * 8 8 8 8 8 $": h// b)) '22 844    	 	G LT]innOX+FnGGGY]G V#..0ACS/T.UU 9$$W%7888M&	9 &	9s   C3E

%E1c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}i }|                    ddi          D ]}|                    d          }t          |                    d                    }	t	                      }
	 |	r4|	dk    r.|	                    d          }t	          d |D                       }
n*#  | j                            d| d|	 d|           Y nxY w|
                    d          |
                    dd          dv d}|                                  }t          	                    |d          
                    dd          }d                    d  |j        D                       }t          |                    ||r|nd||d         rd!nd"          d#          }|d         r!|j                            d$|j                   n|r|                    d|i          nd%}|s|                    ddi          }|rsd                    d& |j        D                       }t          |                    ||r|nd||d         rd!nd"          d#          }|                    |j                   t)          |t*          j                  rei }	 t          |d'                              d(          }|st/          d)          |                    d*          d$                             d+d,i          sd- |                    d*          d$                             d+d.i          D             }d/ |                    d*          d0                             d+d,i          D             }t	          t1          ||                    }n,t	          d1 |                    d*          D                       }t)          |t*          j                  s|||<   # t.          $ rJ}t)          |t*          j                  s%| j        j                            d| d2|            Y d%}~d%}~ww xY w|r	 |j                                         |j        j        i |_        ||j        d<   |j                                         |j        j        i |_        ||j        d<   |                     d34           tC                       d%S # t.          $ r?}tE                       | j                            d| d5| d6| d7|           Y d%}~d%S d%}~ww xY wd%S )8u[   
        Конвертирует макрос "Свойства страницы"
        aS  
        <div
            class="macros-panel details{details_hidden}"
            contenteditable="false"
            data-macros="details"
            data-macros-parameters="{parameters}"
            data-id="{macro_data_id}"
        >
            <div class="extension-container" contenteditable="false" data-layout="default" data-id="ui   ">
                <span aria-label="Макрос Свойства страницы" role="img" data-id="  ">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewbox="0 0 24 24" width="16" height="16">
                        <path d="M22,15h2v7h-7v-2h5v-5Zm2-10v6.731l-2-1.976v-.755H7v11h4.738c.033,.036,.057,.078,.092,.113l1.887,1.887H0V5c0-1.654,1.346-3,3-3H21c1.654,0,3,1.346,3,3ZM2,5v2h3v-3H3c-.551,0-1,.448-1,1Zm3,4H2v11h3V9Zm17-2v-2c0-.552-.448-1-1-1H7v3h15Zm-9.715,9.292c-.38,.391-.38,1.025,0,1.416l2.715,2.792v-2.5h2c1.654,0,3-1.346,3-3v-2.023h2.455l-2.756-2.711c-.386-.386-1.012-.386-1.398,0l-2.756,2.711h2.455v2.023c0,.552-.448,1-1,1h-2v-2.5l-2.715,2.792Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="r  uy   ">Свойства страницы</span>
                </span>
                <span class="macros-actions" data-id="U">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="  ">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id="J  ">
                        <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>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-macro-body="" data-id="za">
                {content}
            </div>
            <div class="macros-preview" data-id=" "></div>
        </div>
        r  detailsr  r  r  Noner  c                 :    g | ]}|                     d d          S rq  r  rr  s     r&   re  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>9  s$    "K"K"Kq1773??"K"K"Kr%   ud   Не удалось конвертировать макрос «Свойства страницы» r~  zERR-0035r  r~   hiddenFrv  )r~   r  r=  rx  r  r  c                 ,    g | ]}t          |          S r$   r  rm   cs     r&   re  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>E  s    #A#A#AqCFF#A#A#Ar%   z details-hidden)macro_data_idr1  r?  details_hiddenr  r   Nc              3   4   K   | ]}t          |          V  d S r   r  r  s     r&   r   z7ConfluenceAPIImport._convert_details.<locals>.<genexpr>\  s(      *X*XG3w<<*X*X*X*X*X*Xr%   r   tableu5   Отсутствует таблица свойств.trr.  confluenceTdc                 .    g | ]}d |j         d          S )key_details r   )r  )rm   ths     r&   re  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>u  s6     " " " 8r{1~77" " "r%   confluenceThc                 V    g | ]&}d                      d |j        D                       'S )r  c              3   @   K   | ]}|d k    t          |          V  dS r   Nr  r  s     r&   r   zBConfluenceAPIImport._convert_details.<locals>.<listcomp>.<genexpr>z  s,      II1qDyyAyyyyIIr%   )r  r  )rm   tds     r&   re  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>y  sE     " " " IIIIIII" " "r%   r   c           
          g | ]b}d |                     ddi          j        d          d                    d |                     ddi          j        D                       fcS )r  r.  r  r  r   r  c              3   @   K   | ]}|d k    t          |          V  dS r  r  r  s     r&   r   zBConfluenceAPIImport._convert_details.<locals>.<listcomp>.<genexpr>  s4      'w'w1mnrvmvmvAmvmvmvmv'w'wr%   r  )r  r  r  )rm   r  s     r&   re  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  s       
 !# !frwwg~=Vw/W/W/`ab/c e e "'w'wwP^F_8`8`8i'w'w'w w w  r%   r   Tr   uE   : не удалось сохранить значения macro_db «u   »: zERR-0037)#r  r   r7   r   r   r   r/   rQ  r   r   r   r  r  r   r  r@  insertr  r  r  rP  r    r  r   zipr5  r?   r   	macros_dbr9   rb   macros_db_draftr   r   r	  )rO   r   r  r  r  r  r  r   r  r  r  r  r1  r  prmcontents_strr  r  
propertiescontents_table	first_row
second_rowr   s                          r&   r%  z$ConfluenceAPIImport._convert_details  sh   % fjeqeqeses% % hlgsgsgugu% % 9=% % ;?,,..% %" 8<||~~#% %$ TXS_S_SaSa%% %. ;?,,../% %@ {  {G  {G  {I  {IA% %F 37,,..G% % %N ''/@).L'MM [	j [	jCww//H"377+B#C#CDDVVF8# M(8F(B(B%5%;%;C%@%@N!"K"KN"K"K"KLLF8))F  |C F F3CF F)w * 8 8 8 8 8
 jj&& **Xu559OO J !LLNNM**Ze*<<DDS(SSC77#A#ACL#A#A#ABBL#"/&08ssb(8B88L#T#4#4RT	     G (# =
 %%a);<<<< PXa)../J.KKK]a S'nn4Ey3QnRRG =#%77*X*XwGW*X*X*X#X#XL+*7.8'@ssb$0@J8@T+\+<+<Z\	 $   & G (();<<<'6#455   Jj!.|V!D!D!I!I'!R!R% ^#$\]]]%..t44Q7<<G^C\<]] " ""0"9"9$"?"?"B"K"KSZ\jRk"K"l"l" " "I" ""0"9"9$"?"?"B"K"KSZ\jRk"K"l"l" " "J "&c)Z&@&@!A!AJJ "& 
 '5&=&=d&C&C  " "J "&&*CDD 8-7GM* j j j!&&*CDD jO*22  4i  [b  4i  4i  fg  4i  4i  j  j  jj
  	88!&&((($*2(*G%/6!),',,...*08.0G+5<'	2... 8 8 8))l  |C l l[bl lhil l)w * 8 8 8 8 8 8 8 8 88	8 	8s>   $6E%FER		
S?SS#BU5 5
V>?4V99V>c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
|                                   d}|                    ddi          D ]a}|                    d          }t          |                    d                    }	 |                    d          }t          d |D                       }	|                     |	                    dd          | j        j        j        j	        |j
                  \  }
}d |	                    dd                              d          D             }|	                    dd          dv dd|	                    dd          dv dd|	                    dd          dv t          |	                    dd                    d|	                    d           |	                    d!          d                    |          ||
d"}n*#  | j                            d#| d$| d%|&           Y nxY wt                              |d'                              d(d)          }t#          |                    |*          d+          }|r|                    d|i          nd}|s|                    ddi          }|r|                    |j                   cdS ),um   
        Конвертирует макрос "Отчёт по свойствам страницы"
        a6  
        <div
            class="macros-panel details-summary"
            contenteditable="false"
            data-macros="detailssummary"
            data-macros-parameters="{parameters}"
            style="display: inline-flex; flex-direction: column; position: relative; width: 100%;"
            data-id="zp"
        >
            <div class="extension-container" contenteditable="false" data-layout="default" data-id="u{   ">
                <span aria-label="Макрос Отчёт по свойствам страницы" role="img" data-id="r  z;>
                    <span class="excerpt-title" data-id="u   ">Отчёт по свойствам страницы</span>
                </span>
                <span class="macros-actions" data-id="r  r  r  z:"></div>
            <div class="macros-preview" data-id="r  r  detailssummaryr  r  r  r  c                 :    g | ]}|                     d d          S rq  r  rr  s     r&   re  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>  rt  r%   rb  r  c                 6    g | ]}|                                 S r$   r?  )rm   r'  s     r&   re  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>  s     UUU!AGGIIUUUr%   headingsr  showCommentsCountFrv  showLikesCountreverseSortpageSize   NsortByfirstcolumn)r  showCreatorshowLastModifiedr  showPageLabelsshowUnresolvedCommentsCountr  r  r~   r  r  r  settingsParamsr}  uv   Не удалось конвертировать макрос «Отчёт по свойствам страницы» r~  zERR-0036r  r=  rx  r  r  r  )r  r   r7   r   r   r   rm  r/   r   r   r   r9  r  rQ  r   r   r   r   r  r  r  r  )rO   r   r  r  r  r   r  r  r  r  r}  rd  r  r1  r  r  r  s                    r&   r  z,ConfluenceAPIImport._convert_details_summary  s   $ llnn$ $ fjeqeqeses$ $ z~  zF  zF  zH  zH$ $ 9=$ $  ;?,,..!$ $$ 8<||~~%$ $& TXS_S_SaSa'$ $0 ;?,,..1$ $B {  {G  {G  {I  {IC$ $D 37,,..E$ $ $L ''/@BR.S'TT (	9 (	9Cww//H"377+B#C#CDD8!1!7!7!<!<GGGGGHH $ 2 26::eR3H3H$/J`JgJsu|  vD  !E  !EXUUvzz*b/I/I/O/OPS/T/TUUU)/4G)O)OSi)i#((-&,jj1A5&I&IMc&c&+38#)::mU#C#CG]#] #FJJz2$>$> ? ?$jj22#)::m#<#< # 2 2&. 

 8))F  NU F F3CF F)w * 8 8 8 8 8 **Ze*<<DDS(SSC#"    	 G LT]innOX+FnGGGY]G V#..0ACS/T.UU 9$$W%7888Q(	9 (	9s   )EI??%J&c                 P   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}|                    ddi          D ]}|                    d          }t          |                    d                    }t	          |                    t          j                            |                    d          }|r|	                    d|i          nd}|s|	                    ddi          }|r|
                    |j                   dS )uD   
        Конвертирует макрос "Якорь"
        a:  
        <span
            class="macros-panel anchor-macros"
            contenteditable="false"
            style="display: inline-flex; flex-direction: column; position: relative;"
            data-param-name="{param_name}"
            data-rendered="true"
            data-macros="anchor"
            data-id="z'"
        >
            <span data-id="r3  ur  " role="img" aria-label="Макрос Якорь">
                    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewbox="0 0 204.851 204.851" style="enable-background: new 0 0 204.851 204.851;" xml:space="preserve" width="16" height="16">
                        <path xmlns="http://www.w3.org/2000/svg" style="fill: #010002;" d="M139.518,128.595l16.834,16.336c0,0-20.644,29.877-42.725,30.473 c0.479,0,0.117-84.092,0.039-104.472c14.694-4.797,25.402-18.182,25.402-34.117c0-20.009-16.697-36.218-37.273-36.218 c-20.615,0-37.312,16.209-37.312,36.208c0,15.671,10.376,28.929,24.748,33.961l0.098,104.277 c-26.643-1.837-42.061-27.474-42.061-27.474l17.997-17.41L0,120.505l9.887,63.301l17.362-16.795 c15.036,12.105,32.017,37.244,72.876,37.244c51.332-1.309,63.184-28.939,76.344-39.804l18.993,18.514l9.389-63.907 L139.518,128.595z M82.558,36.208c0-10.298,8.608-18.661,19.218-18.661s19.257,8.363,19.257,18.661 c0,10.327-8.647,18.681-19.257,18.681S82.558,46.535,82.558,36.208z"></path>
                    </svg>
                </span>
                <span data-id="u^   " class="extension-title">Якорь
                    <span class="excerpt-title" data-id="z>">| {param_name}</span></span>
                <span data-id="r4  u  " class="anchor-copy" role="img" title="Скопировать ссылку" area-label="Скопировать ссылку">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="14" height="14">
                            <path d="M22,4.145,17.986,0H10A3,3,0,0,0,7,3V4H5A3,3,0,0,0,2,7V24H18V19h4ZM16,22H4V7A1,1,0,0,1,5,6H7V19h9ZM9,17V3a1,1,0,0,1,1-1h6V6h4V17Z"></path>
                        </svg>
                    </span>
                    <span data-id="a  " class="macros-edit" style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span data-id="a   " class="macros-delete">
                        <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>
        r  anchorr  r  r  )
param_namer  N)r  r   r7   r   r   r  r   r   quoter  r  r  )	rO   r  r  r  r   r  macro_param_namer  r  s	            r&   r   z#ConfluenceAPIImport._convert_anchor  s   ' llnn' ' !LLNN' ' !%' '  !%!' '" ;?,,..#' '$ !%%' '& %)LLNN'' '0 %)LLNN1' ': %)LLNN;' ' 'R ''/@(.K'LL 	9 	9Cww//H"377+I#J#JKK#%|112BCC    	 G LT]innOX+FnGGGY]G N#..0A8/L.MM 9$$W%7888	9 	9r%   c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d}|                    d	d
i          D ]}|                    d          }|                    d          }i }t          j        d|          D ]D}	|	                    dd          \  }
}|                                ||
                                <   E|                    d          s|d                             dd          }t          j        dd|          }t          j        dd|          }||d<   |                     |d                   }||d<   t          |           }d}|                    d          r7|d                             d          }|
                    ||d                   }|j         d| }t          j                            |dd g!          }|s"t                              || j        d"#          }|j        r||_        |                    d"$           g d%}d&|p||                    d'd(          dddt%          |j                  d"d)}t(                              |d&d*+                              d,d-          }t-          |                    ||.          d/          }|r|                    d|i          nd}|s|                    d0d	d
i          }|r|                    |j                   dS )1u   
        Конвертиация макроса "Результаты фильтра" ("Вставить фильтр/проблему Jira")
        zw
        <div
            class="macros-panel wiki-task-list"
            contenteditable="false"
            data-id="z"
            data-macro-parameters="{params}"
            data-macro-parameters-original="{original_params}"
            data-macros="bql-task-filter"
        >
            <div class="extension-container" data-id="ui   " data-layout="default">
                <span aria-label="Результаты фильтра" data-id="uo   " role="img">Результаты фильтра</span>
                <span class="extension-title" data-id="z@"></span>
                <span class="macros-actions" data-id="z:">
                    <span class="macros-edit" data-id="a  " style="margin-right: 7px;">
                        <svg viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #222)" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id="a  ">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #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="var(--color-gray-222, #222)" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
        <!--div data-fabric-macro="null" data-macro-body class="ak-renderer-wrapper"></div-->
        </div>
        r  jirar  r  r  z	(?<!\\)\|rF  r   jqlQuery\r  z\|\|?rW  z&&?ANDserverIdrg  N	columnIdsr  r   r}   r   r  r  T)r   r/   r   r   )
logic_typer2   r_   responsibler  priorityrz  r  r  r  deadlineFmaximumIssues   )bordercolumns	itemsSizefilterId
filterNamefilterParentNameuserFilterIduseCustomFilterr  r  rx  r  r/  r  r0  )r  r   r7   r   r   r@  r   subr`  r   convert_fieldsr   r    CmfBqlFilterr/   r   r  r   r   r~   r   r   r   r  r  r  r  )rO   r   r  r  r  r   r  r  r  r  r
  rb   	jql_queryrg  jqlr  
column_ids	tf_ext_idtfdefault_columnsr1  r  r  s                          r&   r  z(ConfluenceAPIImport._convert_task_filter3  s    llnn	  8<||~~  RVQ]Q]Q_Q_  9=  8<||~~  9= $ ;?,,..%  > ''/@&.I'JJ T	9 T	9Cww//H"ww'>??F,0@AA 4 4"[[a00
U&+kkmmsyy{{##::j)) z*224<<Ixy99Ivui88I!*F:((
);<<G 'F9%%CGzz+&& Q#K066s;;
,,Z9OPP #>77X77I$(( )+<= )  B  (($#$( )  
 ! ,%+"GGG%%%  O  "5o#ZZ<< "$( #BE

#'	 	J "% $   gc8$$	  $%$4     G LT]innOX+FnGGGY]G S#..7H&6Q.RR 9$$W%7888iT	9 T	9r%   c                    t           j                            dd|gg dg dgg d          D ]O}	 |j        d         d         d	         r|                    d
|j        d         d         d	         i          D ]}d                    d |j        D                       }t          |j                  dk    rb| 	                                |j
        d<   t          |j                  |j
        d<   dg|j
        d<   d|j
        d<   d|j
        d<   d|j
        d<   n|                                 ||_        |                    d           Ґ!#  | j                            d| d|j         d|           Y NxY wd S )Nr   r   )r  r   T)r  r   N)r  r   rz  html_contextr  r  inlineProperties	markerRefzdata-refr  r  c                 ,    g | ]}t          |          S r$   r  r  s     r&   re  z@ConfluenceAPIImport._convert_inline_comments.<locals>.<listcomp>  s    .L.L.L!s1vv.L.L.Lr%   r   zdata-idzdata-object-idzinline-highlightr.  inlineCommentzdata-mark-annotation-type
annotationzdata-mark-typeTr  r   uO   Не удалось конвертировать inline комментарий r   zERR-0020r  )r    r  r7  r  r   r  rh  r   rz  r  r   r~   unwrapr  r   r/   rQ  r   )rO   r   r  r  r   tag_contexts         r&   r#  z,ConfluenceAPIImport._convert_inline_comments  s   (--4%&&&///
   . 
 
 "	J "	JGJ*<89KL[Y 7(11#-w/F|/TUg/hit/u"v  2  x  x 7 7&(gg.L.Ls|.L.L.L&M&Mw~..&8837<<>>CIi0:=gj//CI&672D1ECIg.ETCI&AB:FCI&679=CIo66  JJLLL/:,6666J))  +R|  +R  +R  DK  DP  +R  +R5?S * J J J J JC"	J "	Js   DE*E<c                 b   dd l }|                    dddd| j        j        j         d| j        j         d|j         d| d	| d
gddt          dd          t          dd                    }| j                            d|j         d| d| d           | j                                         |S )Nr   /usr/bin/python3	manage.pyshell,plugin = models.CmfPluginConfluence.get(id="z+");retcode = plugin.process_document_fork("", "", , );T"/var/log/eva-import-subprocess.logr   &/var/log/eva-import-subprocess.err.log	close_fdsstart_new_sessionstdoutstderru.   Запустили process_document_fork (pid= offset= limit=rl  	
subprocessPopenr/   r   r~   r   r  pidr  rO   rC  rd  r  r  r  s         r&   _execute_docz ConfluenceAPIImport._execute_doc  s   "Kvt?U?X v v;??;Mv vSZS]v vbhv vlqv v v
 d<dCC@$GG   	
 	
 	vTXvv_evvnsvvvwww""$$$r%   c                 \    t                       _        |                    d          }|r j        j        dk    rt          d           }i }                     |d                              |d                             D ]W}d }|d         r|d         d         d         }|d	         d
         }|dk    r|d         }|t          |          d||d         <   Xd  fd ||d         d            j        j	        
                    d j                                         |d                   }g }	t           j                  D ]J}
|s nE|                    d          \  }}                     |||          }|	                    |           K|rt#          j        d           t'          |	          D ]}|                                }|m xj        |z  c_        |	                    |           |s nE|                    d          \  }}                     |||          }|	                    |           |t'          |	          D ]2}|                                 |j        r xj        |j        z  c_        3 j        j	        
                    d           d S )Nhomepager#   r~   rv   r  	ancestorsr   r~   r  positionr  r   )r   r  c                 @    d t          j        d|           D             S )Nc                 |    g | ]9}|                                 rt          |          n|                                :S r$   )isdigitr9  r+  )rm   r   s     r&   re  zKConfluenceAPIImport._process_documents.<locals>.natsort.<locals>.<listcomp>  s7    ddddACIIITZZ\\dddr%   z(\d+))r   r   )rn   s    r&   natsortz7ConfluenceAPIImport._process_documents.<locals>.natsort  s$    ddbhW_abNcNcddddr%   c                      fd                                  D             }|                     	fd           |}g }|D ]+}|dz   }|                    ||f             ||          },|r
|
j        <   |S )Nc                 2    g | ]\  }}|d          k    |S )r   r$   )rm   rO  r   r   s      r&   re  zNConfluenceAPIImport._process_documents.<locals>.build_tree.<locals>.<listcomp>  s,    ZZZ+%hSYAYAYAYAYAYr%   c                 2     |          d                   S )Nr  r$   )rO  r  r  s    r&   r   zLConfluenceAPIImport._process_documents.<locals>.build_tree.<locals>.<lambda>  s    GGDK
4K,L,L r%   )r
  r  )r!  r  r   rH   )r  r   ordernorh  current_ordernochildren_in_orderrO  next_orderno
build_treer  rO   s   ``      r&   r  z:ConfluenceAPIImport._process_documents.<locals>.build_tree   s    ZZZZZZZHMMLLLLLMMMM &O "! H H.3!((%)>???",*T5,"G"G  6$5	&!""r%   i uJ   Грузим документы в несколько процессов: r   r   u:   Закончили обработку документов)r   rH   r7   r  r  rf  rk  r   r/   r?   r   rZ   rr  r  popr  r   rL  sleepr7  pollr;   rN  communicate
returncode)rO   r   rC  r  r   r   r   r  ro  r  r   rd  r  r  r  new_procr  r  s   `               @@r&   _process_documentsz&ConfluenceAPIImport._process_documents  s   FF	99Z((	%*m;;t}}}H&&uV}D<W<WX]^dXe<f<f&gg 	M 	MCF; 4[)"-d3 <(4H6!!w<*0c(mmLLE#d)	e 	e 	e	# 	# 	# 	# 	# 	# 	#  	
5(4.'222 	##  %Fqu  rD  %F  %F  	G  	G  	G 33E&MBBt)** 	! 	!A #KKNNMFE$$Wfe<<DNN4     	- JqMMMW 	- 	-!YY[[
)OOz1OONN4(((" $+KKNNMFE#00&%HHHNN8,,,  	-" MM 	3 	3D 34?2##$`aaaaar%   c                 (   | j         j                            d           |                    dg           |j        j        }| j                                        D ]\  }}	 | j                                         r d S |rh| j         j	        j	        j
         d| }t          j                            |dg          }|s(| j                             d| d| j         dd	
           n| j        }|D ]\  }}| j         j	        j	        j
         d| }t          j                            |g d          }|s$| j                             d| d| d|           i|j        rD|r||k    r| j        |_        n|j        |k    r||_        ||_        |                    d           |r$|j        sd|_        |                    d           t+                       #  t-                       | j                             d| dd	
           Y xY wd S )Nu6   Построение дерева документовr  r}   tree_node_is_branchr  u?   Не найдена родительская страница 'uQ   '. Дочерние страницы будут помещены в корень zERR-0120r#   ru  )r   r  r   r	  u-   Не найден потомок по ext_id=z tree_parent_ext_id=zERR-0003r  Tr   uI   Не получилось привязать ноду tree_parent_ext_id=zERR-0024)r/   r?   r   r  r  rb   rH   r!  r  r   r   r    r#   r7   rQ  r  r   r  r	  r   r  r   r	  )	rO   rC  project_homepagetree_parent_ext_idrh  r  r   r	  rO  s	            r&   _process_documents_treez+ConfluenceAPIImport._process_documents_tree9  s   ##$\]]]-.///"17,0IOO,=,= -	Y -	Y(,Y?,,.. EE% 3,0O,B,I,U)m)mYk)m)m&"("4"8"81 56 #9 # #K ' 11@^p @ @mqm}@ @'1%2	 2    #'"2K'/ 5 5OFG $ 6 = IUUVUUF".22&  JA  JA  JA2  B  BE  !11  3Sbh  3S  3S  Q  3S  3S=G[ 2 Z Z Z , 	5 +<*.>>>040@E--".+==0;E-(/

t
444 7{'F 76:K3$$$666Y))  +K  wI  +K  +K5?- * Y Y Y Y YY-	Y -	Ys   "G>EG0Hc                 b   dd l }|                    dddd| j        j        j         d| j        j         d|j         d| d	| d
gddt          dd          t          dd                    }| j                            d|j         d| d| d           | j                                         |S )Nr   r  r  r  r  z/");retcode = plugin.process_doc_versions_fork("r  r  r  r  Tr  r   r  r  u2   Запустили process_doc_versions_fork (pid=r  r  rl  r  r  s         r&   _execute_doc_versionsz)ConfluenceAPIImport._execute_doc_versionsn  s   "Kzt?U?X z z?C?Qz zW^Waz zflz zpuz z z
 d<dCC@$GG   	
 	
 	zQUQYzzcizzrwzzz{{{""$$$r%   c                 h   | j         j                            d| j                    |                     |d                   }g }t          | j                  D ]J}|s nE|                    d          \  }}|                     |||          }|                    |           K|rt          j
        d           t          |          D ]}|                                }	|	m| xj        |	z  c_        |                    |           |s nE|                    d          \  }}|                     |||          }
|                    |
           |t          |          D ]2}|                                 |j        r| xj        |j        z  c_        3| j         j                            d           d S )Nue   Обрабатываем версии документов в несколько процессов: rv   r   r   uP   Закончили обработку всех версий документов)r/   r?   r   rZ   rr  r  r  r  r   rL  r  r7  r  r;   rN  r  r  )rO   r   rC  ro  r  r   rd  r  r  r  r  s              r&   _process_documents_versionsz/ConfluenceAPIImport._process_documents_versions  s   ##  %a  MQ  M_  %a  %a  	b  	b  	b 33E&MBBt)** 	! 	!A #KKNNMFE--gvuEEDNN4     	- JqMMMW 	- 	-!YY[[
)OOz1OONN4(((" $+KKNNMFE#99'65QQHNN8,,,  	-" MM 	3 	3D 34?2##$vwwwwwr%   c                 `	   g ddgg ddgdgdgdgdgg d	gd

}t          |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                  }||_
        |d          d|d          |_        |                    d           g d}|ddgz   }	t          j                            ||	          D ]Q}
|
j        rHg |
_        |D ]}t#          |
|d           |
j        j        dv rd|
_        |
                    d           R|d         D ]}	 |	                    |d         d           }|#| j        j                            d|            E|D ]}t          j        	                    |d           }|s4| j                            d!| d"| d#d$%           | xj        d&z  c_        Zt          j        	                    ||d'dg(          }|s4| j                            d)| d"| d#|*           | xj        d&z  c_        |j        s|d+         D ]g}|                     |          }|r|j                            |           4| j                            d,| d-| d.|*           | xj        d&z  c_        h|d/         D ]=}|d         }| j        j        r$d| j        j        j        j         d|d          d}n#d| j        j        j        j         d|d          d}t          j        	                    d0d1d2| d2gd0g3          }|s%t          j        	                    dd4|gd0g3          }|rZ|j        s||_        n||j        vr|j         | |_        |                    d           |j                            |           
| j                            d5| d-| d6|*           | xj        d&z  c_        ?|d7         rd|_         |                    d           #  | j                            d8| d9d:%           | xj        d&z  c_        Y xY w|S );N)zPPP-DOC-CREATEzPPP-DOC-EDITzPPP-DOC-PUBLISHzPPP-DOC-TREEMOVEzPPP-OBJ-ORDERPPP-DOC-DELETE)zPPP-COM-ADDzPPP-COM-EDIT-OWNzPPP-COM-DELETE-OWNzPPP-COM-DELETE-ALLzPPP-ATT-CREATEzPPP-ATT-DELETE-ALLzPPP-PR-BROWSEzPPP-ATT-DELETE-OWNzPPP-PR-ADMIN)
r  r  r  r  r  r  r  r  r  r  rv   r  r1  r}   r~   r  T)r   r   r/   r
  u?   : Схема проектных прав доступа для r_   r   )access_local_useraccess_owneraccess_owner_assistantaccess_authoraccess_spectatorsaccess_executorsaccess_responsibleaccess_list_owneraccess_project_owner_assistantaccess_project_spectatorsaccess_project_executorsaccess_sdesk_clientaccess_anonymousaccess_guestaccess_sharelink_anonymousproject_permissionaccess_members)r   r`   F)r  zPPP-OBJ-DELETEr  r  u8   Не найдено соответствие права )r2   rG  u    Не найдено право "u	   " для zERR-0059CmfProjectPermPermissionr;  r   r   )r/  r   r`   u2   В схеме не найдено правило "r  r   u)   Не нашли пользователя u    для прав zERR-0060r  r   r   r   r  r;  u   Не нашли группу zERR-0061rD  u>   Не удалось импортировать правило zERR-0063CmfProjectPermSchemeRule)!r   r   r   r9   r/   r   r   r    CmfProjectPermSchemer7   r  r_   r   r3  r7  r   r0  r  r/  r2   r#  r?   r   r1  rQ  r;   r   r   r.   rE   r   r   r,  )rO   r   mapping_permr  r   	perm_listperm_scheme_ext_idperm_schemerule_bool_fieldsrule_fieldsruler   	perm_dictr  r  r  scheme_rulery   r   r|   
group_namer   	group_objs                          r&   _process_permissionsz(ConfluenceAPIImport._process_permissions  s    tss+,PPP23!1 2!5 6)*!5 6"$$2#3
 
 %-BBBCC/3'' 	%1		!I	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% !% 6 = IZZUSW[ZZ155=O5PP 	 55) $? 6  K
 '0##ElzzkpqwkxzzT***
 
 
" '*>@P)QQ 388T_8`` 	, 	,D# ,&(#- 0 0ED%////*/3WWW)-D&		d	+++";/ [	% [	%IZ%*..y/FMM&O*223ynw3y3yzzz"- M7 M7J!:>>'(, ?  D   !11_z__T]__&%? 2   
 1, "("A"E"E+/* #%56 #F # #K
 ' !11qQ[qqfoqq& + 2   
 1, &6 !  )' 2 
1 
1!%!1!1$!7!7! 1'6==fEEEE O55 nD n ncl n n *$/ 6   
 !OOq0OOO!*8!4 1 1%*6]
?0 i%f$/*@*G*S%f%fW\]aWb%f%f%fFF%h$/*@*G*S%h%hW\]cWd%h%h%hF$*$9$=$=$,fm&mmm#D$,: %> % %	  ) (.(=(A(A(.'D(0z )B ) )I % 1#,#3 Q39	 0 0!'y/?!?!?6?6F3P3P3P	 0%NNtN<<<'6==iHHHH O55 h
 h h]f h h *$/ 6   
 !OOq0OOO - <7;4$$$6666[M7\%))`U^``7 *   
 1$s&   A((A,/A,A Q6JQ662R+c           	      <   g }|}|}d}t           j                            g dddd|gdd|gggdg d	          }|D ]}|j                                        |                                k    r|d
z  }|                    d           |j                                        |                                k    r|dz  }|                    d           |rFd}| j        	                    dd
                    |           d| d| dt          j        d           |||fS )u8  
        Добавляет суффикс 'Wiki' к названию или коду импортируемого проекта,
        если есть существующие НЕ Wiki-проекты с аналогичными названиями или кодами

        Args:
            space_name (str): название проекта
            space_key (str): код проекта

        Returns:
            tuple[str, str, bool]: новые названия и код проекта и флаг добавления суффикса
        F)logic_prefixr   project.wikirW  r_   r;  task_code_prefixT)r  r_   rD  r   rG  r`   z Wikiu   названиеWIKIu   кодu   В u    и u9    проекта добавлен суффикс 'Wiki': 'r  rl  rB   rD  )r    r  r  r_   r+  r   rD  upperr/   r  r  r=   r  )	rO   
space_namer  r  new_space_namenew_space_key
has_suffixmatching_projectsmatching_projects	            r&   _add_project_suffixz'ConfluenceAPIImport._add_project_suffixE  s    #!
 #-33666Wj1')< !   4 
 
  !2 	) 	)$**,,
0@0@0B0BBB')122206688IOO<M<MMM'x((( 	JO8fkk'** 8 8"8 8'48 8 8o	      }j88r%   c                    dddd| dgg dg}t           j                            |dd|ggddg	          }|r2|d
| dz  }| j                            d|j         d| ddd           |}d}t           j                            |dd|ggddg          r3|dz  }| | }t           j                            |dd|ggddg          3||k    r$| j                            d| d| ddd           ||fS )ue  
        Проверяет унакальность названия и кода проекта

        Args:
            space_name (str): название проекта
            space_key (str): код проекта

        Returns:
            space_name, space_key (tuple[str, str]): новые названия и код проекта
        rW  r   NOT LIKEr   )r   rF  Nr_   r;  r  r  r  rl  u   Проект с именем 'ud   ' уже существует. Импортируемый проект переименован в 'r  zERR-0131r  ru  r   rD  TrE  r   u   Проект с кодом 'ug   ' уже существует. Код импортируемого проекта изменен на 'zERR-0132)r    r  rD  r/   rQ  r_   )rO   rI  r  r   ext_id_filterrC  original_space_keycounters           r&   _check_project_uniquenessz-ConfluenceAPIImport._check_project_uniquenessz  s    z=v===1!!!
 #((!FGZ#@A&> ) 
 
  	.v...(JO%%f f fXbf f f%%	 &    '$$!$6#KL 6 % 
 
 	9
 qLG-8w88I $$!$6#KL 6 % 
 
 	9 **O%%h/A h h[dh h h%%	 &    9$$r%   c           
      n   |                      | j        j        d                   }|d         d         d         }| j        j        j                            d          }|                                  |                                 D 	]}i }d}	 | j                                        r d S |d         d | j        D             vr>d|d	          d
|d          d|d          d}| j        j	        
                    d|            t          |d                                       d          }|                    d          rI|d         d         }	|                     ||	          }
|
s"t          d|d         d          d|	 d          n| j        j	                            d| d           |d         D ]I}	 |                     ||          }
|
r n<#  | j        j	                            d| d|            Y GxY wt          d          |
d         d         }| j        j	        
                    d|            |d         dk    rt           j        |d <   n#|                     || j                           |d <   |
d                             d!          }|rb| j        j	        
                    d"|            |d         dk    rt           j        |d#<   n/|                     || j                           |d#<   n|d          |d#<   |
d         d$         d%         }| j        j	        
                    d&|            |d         dk    rt           j        |d'<   n#|                     || j                           |d'<   |
d         d(         |d)<   |
d         d$         d*         |d+<   |d	         }|d         d,k    r
|d-z  }d.|d/<   | j                            |d                   }d0| j        j        j        j         d0|d          d0}t.          j                            d1d2d3| d3gt3          |                                          g d4z   5          }|r<d6}d7| }|j        d8k    rd9| d:| d| d}| j                            |d;           nL|d<v rd=| d| d}d>t.          j                            d?@          dA}|dBk    r"dC| d| dD}|                    dEdFdFdG           | j                            |d;           t.                              || j        |dH          }n|d>k    rt.          j                            g dIdJdKdL|gd	dL|gggg dM5          }|st          dN          | j                            dO| d| dP| d;           |j         d0| |_        |                     dQ           tC                       nt          dR|           |j        d8k    rot.          j"                            dSdT|j#        gg dUgd1g5          }|st          dV|           |j$        r||_%        |                     dQ           || _&        n`|j$        r&tO          |j%        o|j%        j                            dW                    }|s|r| (                    ||          \  }}}||dW<   | )                    |||          \  }}||d	<   ||dK<   | *                    |          |dX<   ||dY<   |D ]}tW          ||||                    |j,        j-        r|.                                |_/        |                                  tC                       |                    d          r| 0                    |
|           n+| j                            dZ| d[tb          j2        d\           || _&        || _3        |rJt.          j"                            dSdT|j#        gg dUg]          }|j        d8k    r:t.          j"                            |d^_          }|r|4                    d`           n|j        dak    rt.          j"                            |d^_          }t.          j"                            |db_          }|r|4                    d`           |r|4                    d`           |r|4                    d`           |5                    dcg           |j6        j        }| j        |_        |                     dQ           tC                       | 7                    ||           | 8                    ||           | 9                    |           tt          j;        rXtt          j;        }tt          j;        ddk    rde}| j        j	        
                    df| dg           | <                    ||           n| j        j	        
                    dh           	W# tz          $ rK}t}                       | j        ?                    di|d	          d|d          dj| dkdlm           Y d }~	d }~ww xY wd S )nNrP  rc   rb   r~   
add_suffixTc                     g | ]
}|d          S r  r$   rd  s     r&   re  z7ConfluenceAPIImport._process_spaces.<locals>.<listcomp>  s    &Q&Q&QSs4y&Q&Q&Qr%   r  r_   z' (id: z, key: r
  rl  u0   Импортируем пространство rv   rK  r  uE   В дампе не найдена домашняя страница 'r   r  u   У пространсва u    нет домашней страницы. Сведения о создателе и дате создания пространства будут взяты из первой корневой страницы.rU  uW   Не удалось получить данные корневой страницы id=u(    в дампе пространства uS   В дампе не найдено ни одной корневой страницыr  r  uD   Определяем автора домашней страницы rC  rD  r  r  uJ   Определяем владельца домашней страницы r  r  rB  r~  r  r  r  r  r  personalu(    (Личное пространство)u%   Личное пространствоdescriptionr}   r   r   r   )rB  rD  r  r  FuI   Найден ранее импортированный Wiki-проект project.agileu    Найден Agile-проект u_    с импортированным в раздел 'Документы' Wiki-проектом ')rD  )project_wikir   u3   Создание нового Wiki-проекта 'rC  zproject.wiki:defaultr1   )project_typer  r   u,   Создание нового раздел 'u-   ) в портале 'Моя компания'sectionzCmfWiki:Class)r]  	parent_idtree_parent_id)r_   r/   r   r   )rB  r   r[  rW  rD  r;  )rB  rD  r   u   Не найден Agile-проект для объединения. Создайте или импортируйте одноименный Agile-проект и повторите импорт проектаu"   Импорт Wiki-проекта 'u<   ) в раздел 'Документы' Agile-проекта r   u8   Неизвестный тип опции импорта r`  r   )r_   r   u   ДокументыuL   Не найден раздел 'Документы' в Agile-проекте rL  project_perm_schemer  u"   Настройки проекта u    были изменены пользователем. Изменения из импорта не будут примененыrG  r   u   Документ1)r  r_   rH  rC  u   Документ2r  r   u   ВсеuY   У документов будет обработано последних версий: u   . Для изменения, поменяйте значение параметра IMPORT_CONFLUENCE_PROC_LAST_PAGE_VER в config.u   Обработка версий документов отключена параметром IMPORT_CONFLUENCE_PROC_LAST_PAGE_VER в config.u6   Ошибка импорта пространства 'z). zERR-0032r  ru  )@rp   r/   rW  rb   r7   r[  rF  r  rY  r?   r   r   r   rM  rr  r   rd   r  r   rD   get_correct_keyr   r   r    r  r7  keysrB  r  CmfLogicTyper   r   r   r   r#   r~   r   r  r  r?  rO  rU  r@  r  r_   r   gen_coder2   r   r=   r  rC  r  r  r  _process_project_tagsr  r  rL   rL  r  r   r	  rQ  )rO   rh   rc   rW  r   project_fieldsproject_is_newspace_full_namer  homepage_idr  	root_pager  r  r  rI  r  r   rC  log_msg
doc_folderrL  r
  rm_doc_folderrm_doc1rm_doc2r  rU  r]  s                                r&   _process_spacesz#ConfluenceAPIImport._process_spaces  sQ   ++DO,IJ[,\]]}-g6t<_28<<\JJ
  """'')) O	 O	EN!NK?,,.. EE;&Q&QD<P&Q&Q&QQQ"_eFm"_"_E$K"_"_PUV[P\"_"_"_&++,p_n,p,pqqquV}--66{CC99Z(( "'
"3D"9K#11';GGH# &N %j 1' :N N?JN N N   O*22f_ f f f   &+<%8  	'+'9'9'9'M'MH' & %& O2::!\  {D !\ !\JY!\ !\    
 ''}~~~!),[9&++,{sy,{,{|||&>[00343CN<00373C3CF4=DY3Z3ZN<0 +//	:: OO*//  1E  ~C  1E  1E  F  F  FV}33787G{336:6F6FuT]G[6\6\{332@2NN;/#I.}=dC&++,vlt,v,vwwwF#{22898HN#4558<8H8HRVR_I`8a8aN#453;I3F}3U/04<Y4G4VW]4^01"6]
=J.."LLJ4[N=1 O;;E%LII	Zdo4;GZZ5QU;ZZZ !+//$fm&mmm< 3 3 5 566 : : :  0    Aq%*NsjqssG+>>Rw R R6@R RENR R R   O''4'@@@@"&>>>"sXb"s"sgp"s"s"s,5*0*=*A*AG]*A*^*^* * '&00!Oz !O !O^g !O !O !O $ +1109-<2A3 3   
 ++Gt+DDD"("3"3!+'+#),0	 #4 # # %	11 #)"3"7"7 G G G$(%7)$L%+Wj$A!C$$ $ $ #8 # #  ' "*!T# # 
 ++c c cPY c cY`c c&* ,   
 -4N)F)Ff)F)F666"&'obm'o'oppp'?::!'!3!7!7!14 DFjFjFjk (z "8 " "J & A&'v}''  A  A  A!1 :5:
2"D999'1D$$. )%)#3 P ' 7 = A A, O O& &
 & = = AE@X@X * )A A=J	: 3=E,/040N0N&%"1 1-
I 2<v.=F'9:@D@Y@YZ_@`@`'<=<A'89#1 G GC#GS.2EFFFF"<2 >+2+;+;+=+=GL" !99Z00 J 66xIII++i i i i")/&*	 ,    (/D$&! @$*$6$:$:-tWZ@@@@  %; % %M +>>"("4"8"8]Yl"8"m"m" B#NNDNAAA -??"("4"8"8WSf"8"g"g"("4"8"8]Yl"8"m"m" B#NNDNAAA" B#NNDNAAA( H)00$0GGG++-=,>???+2+A+G(6:o(3(--$-??? **5':::''w777,,W555> "("MKBbHH&.O*//]t ] ] ]   44UGDDDDO*// g      ))uUSY]uu_dej_kuupsuu)) *        SO	 O	s?   g*gC3g8Gg'G<:_!g
h2'A h--h2r   c           	         ddl m} t                      }|                     |d         |                     |d                             D ]>}| j                                        r d S |d         D ]}|d         |vr|||d         <   ?|                                D ]}| j                                        r d S |d                             dd	                              d
d          } ||dd          }	 d| j        j	        j	        j
         d|d          d}	t          j                            ddd|	 dgdg          }
|
s9dddd| dgdd|gddd| dgg}t          j                            |dg          }
|
s#t                              || j        d|	          }
|
j        s|	|
_        n|	|
j        vr|
j         |	 |
_        ||
_        ||
_        |
j        r|
                    d           t'                       m#  t)                       | j                            d| d|           Y xY wd S )Nr   rM  rv   r  rT  r~   r_   r   r   rR  r  rS  TrT  r}   r   r   r   r   r  rW  rX  r;  rx  r=  r|  r   rY  zERR-0022r  )r^  rN  r   rf  rk  r/   r  r   r   r   r   r    r  r7   r   r_   r  r   r   r   r	  rQ  )rO   r   rC  rN  r}  r   r   tag_name
name_aliasr   tag_objr   s               r&   rf  z)ConfluenceAPIImport._process_project_tags  s   ******vv&&uV}D<W<WX]^dXe<f<f&gg 	* 	*C((** 8} * *t9D((&)DTO* ;;== 	 	C((** 6{**344<<S"EEH!($NNNJXdo4;GXX3t9XXX -++Hfm&mmm3T^a]b+cc N#$g/?8/?/?/?@#Wh7$g/A:/A/A/ABDG %m//wu/MMG |$mmdogktzm{{G~ A%+GNN7>11(/%@%@%@GN'*-'% 3LLTL222))*aW_*a*a7Aw * P P P;	 	s   <DH0H>c              #   L  K   | j                                                             d          }t                              |          D ]Z}t          |                    |d          d          5 }t                              |          V  d d d            n# 1 swxY w Y   [d S )Nr  r2  r1  r   )rO   r  group_idr   s       r&   _get_groupszConfluenceAPIImport._get_groups  s      _6688AA(KK


:.. 	# 	#Hj))(K@@#FF #!iill"""# # # # # # # # # # # # # # #	# 	#s   /BB	B	c              #     K   |                     d          }t                              |          D ]Y}t          |                     |          d          5 }t                              |          V  d d d            n# 1 swxY w Y   Zd S )Nr   r1  )r   r   r   r   r   r9   )rO   
group_path	user_pathr"  r   s        r&   _get_group_membersz&ConfluenceAPIImport._get_group_members  s      ''00	zz),, 	# 	#Gi((11377 #1iill"""# # # # # # # # # # # # # # #	# 	#s   B  B	B	Tr  c           
         |                     d          }| j        j                            d|            t	          |d         t          |                     dd                               }|s| j        j                            d|            t          j        j	        j
        t          t          j                  z
  dz
  }t                              |d                   d |          d	t          j         }t	          |d         |t          |                     dd                     
          }d| j        j        j        j         d|| j                  d}d}|d                             dd          }	t          |	          dk    r|	d         |d<   d|d<   d|d<   nct          |	          dk    r|	d         |d<   |	d         |d<   d|d<   n4t          |	          dk    r!|	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                    t5          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#$           |sXd%dd&d'| j        j        j        j         d(gg d)g}t(          j                             d*d+|d         g|g|
          }|st(          j                            dd+|d         g|g|
          }t          |          dk    rH| j                            d,|d          d-t          |           d"d#$           | xj        dz  c_        g }|sd.d+|d.         g|g}t(          j                            ||
          }|sd%g}tA          |	t          |	                    D ]}t          |	          dk    rdd+|d         g}!t          |	          dk    r*|!                    dd+|d         gdd+|d         gg           ^t          |	          dk    r3|!                    dd+|d         gdd+|d         gdd+|d         gg           ||g}t(          j                            ||
          }t          |          dk    rF| xj        dz  c_        | j                            d/|d.          d-t          |           d"d#$           |r|d         }d}|s|rd}d}|d         }t(          j                             d*d+|"                                g|
          r| j        #                    d0| d1tH          j%                   |d                             d	          \  }}| d2| d	| }|dz  }t(          j                             d*d+|"                                g|
          | j        #                    d3|            t(                              ||| j        d4          }nd |fS |r|j&        s|j'        r|D ]}tQ          ||||                    |)                    g d5           |j        r||j        vr|j         | |_        n||_        t(          j*        +                                }t(          j*        ,                                }||j-        vr|j-        !                    |           ||j-        vr|j-        !                    |           d|_.        |j/        r|                    d           | j        xj0        dz  c_0        ||fS )6Nr^   u2   Обрабатываем пользователя r)  
operationsT)r_   does_not_worku8   Не указан Email для пользователя r   @)r_   r^   r  r}   Fr   r   r   	last_namer  
first_namesecond_namer~  r   rg_member_ofr   r   r   r  u    ext_id пользователя uN    содержит несколько ID из одного источника: z::.+?::r   uP   Возможно найден некорректный пользователь ud   ,так как ext_id содержит несколько ID из одного источника: 'uq   '.Необходимо повторно импортировать локальных пользователей.zERR-0004ry   ru  rW  rQ  r9  r:  )r   r   Nloginr;  u+   Пользователей с почтой z > r_   u+   Пользователей с именем uQ   Обнаружена учетная запись с дублирующим email u   , добавляем цифруr   u1   Создадим пользователя ext_id=)r   r  r/   r   )r   r  
user_local)1r7   r/   r?   r   r   r?  warncmfr`   CmfEmail
max_lengthr   rL   
ORG_DOMAINrv  translit_stripr   r   rD   r   r    r!   r   rb   r  r   r   r  r   r;   rQ  r7  r   r   r+  r  r=   r  r   r  r  r  r   confluence_group
user_groupr  r  r   rF   )rO   r  r  r   r^   	user_dictmax_lenr   
is_created	full_namer`   r   not_source_hash_filterpersonsr   
name_combonr  prefix_emaildomainr
  
conf_groupr  s                          r&   _process_personz#ConfluenceAPIImport._process_person  s	   g&&##$dYb$d$deeei6.29==t3T3T.U.U*UW W W	 	hO"''(ncl(n(noooj)4s6;L7M7MMPQQG--i.FGGQggTZTeggEi6e.29==t3T3T.U.U*UW W W	_do,3?__9T]C[___
m,223::	y>>Q%.q\Ik"&(Il#')Im$$^^q  %.q\Ik"&/lIl#')Im$$^^q  %.q\Ik"&/lIl#'0|Im$^$!%%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  *# *     @	( :'[T_-C-J-V'['['[\&&&&"
 %))gy'9:*  *  F  .( *// '9W+=>. " 0   w<<!##O--  /B\efm\n  /B  /Bsvw~ss  /B  /B9Cf . W W WOOq(OO G W)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--  /A\efl\m  /A  /Aruv}r~r~  /A  /A9Cf . V V V ($QZF
 	( (!
(&**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 
 ##$`X^$`$`aaa))27DO<@ * B B Z'' 	.% 9 9$ 9 9CFC38888GGGHHH} '..'-}$>f$>$>FM &.??AAJ.99;;J!444#**:666!444#**:666 $F  .-----2--z!!r%   c           	      B   | j         j        j                            dd          s(| j                             dt
          j                   d S t                      }|                     d          D ]!}| j         	                    dd           | j         
                                r d S |                     |          \  }}|j        r|                    d           |rH|j        j                            t           j                  s|                    |j        j                   |                    d	g           D ]%}d
}| j        j        rd}d| j         j        j        j         d||          d}t.          j                            ddd| dgdg          }|s+t.          j                            d
d|d
         gdg          }|s+t.                              || j         |d
         d|          }n|j        r|d
         |_        |j        s||_        n||j        vr|j         | |_        |                    d           |j                            |           '|j        r|                    d           t=                       #|r| j         j        j                            dd          rd| j         j                             dtC          |           d|            tE          t.          j#        j$        tK          |          g           d S d S d S )Nr  TuA   Не грузим пользователей из-за опцийr}  r   ry   r  r   r  r_   r~   r}   r   r   r   r   r  r   r   r/   r_   r   r  send_invitesu,   Отправляем приглашения u    пользователям: )args)&r/   rW  rb   r7   r  r=   r  rI   r   rR  r  r  r   r   r^   r  rL   r  r5  r.   rE   r   r   r    r   r   r_   r   r  r   r   r?   r   r   schedule_deferred_jobr!   register_personsr7  )	rO   r  r  r   r  r   r
  r   r|   s	            r&   _process_personsz$ConfluenceAPIImport._process_persons  ss   ,266|TJJ 	O ckrkz{{{Fuu))'22 	 	IO$$V[999((** !%!5!5i!@!@FJ  .--- 5&,"4"="=f>O"P"P 5  !3444'mmHb99 2 2
?( C^do4;G^^:VY?^^^-11(FMPVMMM9Zdgch1ii o"155fdJW]L^=_ilhm5nnE 4"11DOblmsbt@DV` 2 b bEE* 4!+F!3EJ| =#)ELL5<//&+l#<F#<#<EL

t
,,,#**51111  .---LLLL 	`DO9?CCNTXYY 	`O"''  )VWZ[gWhWh  )V  )V  HT  )V  )V  W  W  W!&"2"C4P\K]K]J^______	` 	` 	` 	`r%   c                    |                                  D ]}d}| j        j        rd}d| j        j        j        j         d||          d}t          j                            ddd| dgdg          }|s+t          j                            dd	|d         gdg          }|s+t                              || j        |d         d
|          }n|j	        r|d         |_
        |j        s||_        n||j        vr|j         | |_        |                    d
           t                       |                     | j                                                            d||                             D ]U}|                     |d          \  }}|s|j                            |           |j        r|                    d
           Vt                       d S )Nr_   r~   r}   r   r   r   r   r  r   Tr  r   r  F)rx  r.   rE   r/   r   r   r    r   r7   r   r_   r   r   r   r|  r   r   r  r  r   r   )rO   r   r
  r   r|   r  r   r   s           r&   _process_groupsz#ConfluenceAPIImport._process_groups  s   **,, 	 	JC$ Z$/07CZZzRUZZZF)--hF5V`c_d-eeE k-11&$
SYHZ9[ehdi1jj 0--V^hio^p>BT^ . ` `& 0'/
< 9%u|++"',888JJ4J(((LLL!44T_5V5V5X5X5a5abjlvwzl{5|5|}} 2 2	 00EBB	 #**5111$ 2KKDK111LLLL7	 	r%   c                 T   | j         j                            d           t          |           }t	          j                    }t          j                            g dg dg dgg d          }|D ]}d|j	         d|j
         d	}|j        j                            d
          }|s7|j        j        d         d         }	 |                    ||          \  }}	||_        t                               |	d          |_        |                    d           | j         j                            d| d| d| d|	 d	           #  | j                             d| d| dd           Y xY wt	          j                    |z
  }
| j         j                            d|
dd           dS )u   
        Пост обработка JQL в фильтрах задач макроса "Результаты фильтра"
        uj   Обработка JQL в фильтрах задач макроса 'Результаты фильтра')r  r   z%"jqlQuery":"%r   )r   r   T)r  ubqlr}  r_   r  rx  ry  rl  r  rg  r   Fr=  Tr   u   Фильтр z: JQL u$    переобразован в UBQL z (BQL: "z")u0   : ошибка преобразования JQL zERR-0066r  r2  uC   Обработка JQL в фильтрах выполнена за rH  rI  N)r/   r?   r   r   rL  process_timer    r  r7  r_   r2   r  rb   r7   get_modifiedr  r   r   r}  r   rQ  )rO   r  rX  task_filterstask_filter
filter_msgr  r   r  r}  r^  s              r&   _process_jql_in_filtersz+ConfluenceAPIImport._process_jql_in_filters  s    	##y	
 	
 	
 D!!  *//===***///
 >== 0 
 
 ( 	 	KE[-EE+2BEEEJ/599*EEE %5;IF}UK,,UK@@	c#' "&**Su*"E"E  T 222&++vJvvevvaevvorvvv   ))gJgg`egg+ *        2%##$zjl$z$z$z$z{{{{{s    BE%E+c                 T   t          d          D ]]}|dk    r1| j                            d| j         d| t          j                   d| _        |                                  | j        s n^t          d          D ]N}d}|dk    r,| j                            d| d| t          j                   |                                 }|s nO| j        	                                 | xj        |z  c_        | 
                                 |                                  |                                  | j        j        j                            dd          r(| xj        | j                                        z  c_        n| j        j                            d	           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                   # t4          $ r,}| j        j                            d|            Y d}~d}~ww xY w| j         S )u   
        Запуск импорта

        :return bool: Истина в случае успешного импорта
        r~  r   uB   При дампе данных обнаружены ошибки (u0   ), попыка повторного дампа r}  uF   При дампе вложений обнаружены ошибки (process_linksTu2   Отключена обработка ссылокz2--------------------------------------------------r~   c                     g | ]
}|d          S r  r$   rd  s     r&   re  z6ConfluenceAPIImport.process_import.<locals>.<listcomp>:  s    $O$O$O3SY$O$O$Or%   u'   Импортирован проект 'r_   r  r}   )r  uC   Не удалось создать отчет по проекту. N)r  r/   r  r;   r=   r  r  r  r.   closer  rq  r  rW  rb   r7   process_cross_linksr?   r   r   rF  rY  r   r   r   project_statsr   r  )rO   r  r;   rC  project_ext_idr]  s         r&   process_importz"ConfluenceAPIImport.process_import  s>    q 	 	A1uu##  %nimix  %n  %n  kl  %n  %n  v}  vE#  F  F  FDO   ?  q 	 	AJ1uu##  %mmw  %m  %m  jk  %m  %m  u|  uD#  E  E  E,,..J  	:%$$&&&?(.22?DII 	aOOtBBDDDOOOO"**+_```H%%%))++ 	z 	zGt}$O$O$:N$O$O$OOO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 ?""s   A	I))
J3"JJc                     |                     dt          j        d          i          s |j        dk    s|                     d          r'|                    |                                           |S )uS   
        Из документов MS создаем наши превью
        r  
backgroundr  r  )r  r   compiler_   r  create_preview_tag)rO   r   r  s      r&   _create_previewz#ConfluenceAPIImport._create_previewE  so     887BJ|$<$<=8>> 	:#(eBSBSWZW_W_`eWfWfBSV6688999
r%   c                    dd l }|                    d           D ]}	 |j                            d          rF| j        j                            d|            	 | j        j                            d|            d| j        j                            d| d|            |                    d          r|j        d         }n|j        d	         }|                    d          rT|j        d         	                    d
          r3|
                    |          }|r|                    d          sR| j        j                            d|j        d                     	 | j        j                            d|            ot          j                            |d                             d
                    }	|j         d|	 }
|j        d         |j        d<   |
|j        d<   d|j        d<   | j        j                            d|
            	 | j        j                            d|            #d|j                            dd          v r|j        d                             d          d                             d          d         }|                     |          }|rV|j        d         |j        d<   |j        |j        d<   d|j        d<   | j        j                            d|j                    n-| j        j                            d|j        d                     	 | j        j                            d|            >t%          j        d|          }|r
|                    d          }|s2t          j                            |                    d                    }|r|                     |          }|rV|j        d         |j        d<   |j        |j        d<   d|j        d<   | j        j                            d|j                    n-| j        j                            d|j        d                     	 | j        j                            d|            `|
                    |          }|r|                    d          r|                    d          dk    rm|                    d          |d<   |                    d          |d<   |                    d          |d<   	 | j        j                            d|            t%          j        d|          }|r|                    d          }t,          j                            | j        j        j        j         d|            }|r/d|j        d<   |j        d         |j        d<   |j        |j        d<   n
d!|d<   ||d<   	 | j        j                            d|            |}t          j                            |                              d          d                             d          d         }|}|j                            d"          }|j        d#k    r|r||j                            d          d         k    rt9          | j        j                                        d$                   }t9          | j        j                                        d%                   }tA          | j        !                                          "                    d&|d'|d(          }| j        j        j        j         d| }t,          j                            |d)g*          }|r|}|#                                s\|rZtA          | j        !                                          "                    d&t9          |j$        j        d$                   d'|d(          }|#                                sO| j        %                    d+| d,| d-| d.| d/	d0|1           	 | j        j                            d|            .t,          j&        '                    d%d2|gd3d4| d5gg d6gg d78          }|rtA          |j(                  #                                rt,          j)                            ||9          }|st,          )                    ||| j        d:          }|j        r|j                            d;          r|j        d;         }|                    d<          |_*        |                    d=          r>|d=         d>         d?k    r,|                     |d=         | j+                           |_,        ntZ          j.        |_,        |/                    d@           ta          tA          |j(                  dA          5 }|1                    |2                                dB           d|_3        |/                    d@           d d d            n# 1 swxY w Y   ti                       nL| j        %                    dC| dD| dE| dFdG|1           	 | j        j                            d|            
lt,          j)                            |g dH|I          }|r|                    d	          r#|j        d	         |j        dJ<   |j5        j6        |j        d	<   d|j        d<   |                    dK          r|j        dK         |j        dL<   |j        dK= to          j8        |j        d	                             d          d                   }|rI|d         rA|d         	                    dM          r&dM|_9        dN|j        dN<   dO|j        dP<   dO|j        dQ<   n;|r#|d         r1|d         	                    dR          s| :                    ||           |                    d          r
|j        d         |j        d<   |j5        j6        |j        d<   d|j        d<   to          j8        |j        d                             d          d                   \  }}|r|	                    dM          rodM|_9        dN|j        dN<   dO|j        dP<   dO|j        dQ<   |;                    dS          } |j        d         | j        d	<   || j        d><   |<                    |            n| :                    ||           | j        j                            d|j5                    nc|j                            d          dk    rE| j        %                    dT| dU|1           	 | j        j                            d|            wn$#  | j        %                    dVdW|1           Y nxY w| j        j                            d|            # | j        j                            d|            w xY wd S )XNr   c                 V    |                      d          p|                      d          S r   r   r   s    r&   r   z4ConfluenceAPIImport._convert_links.<locals>.<lambda>P  s$    #,,v2F2F2]#,,W\J]J] r%   r  u   Уже обработали u'   Не обработали ссылку u&   Обрабатываем ссылку u    на странице r   r   rR  )r   zdata-anchoru1   Не найден якорь для ссылки z##	href_origTu   Заменили на z/people/r  r   r   r   u?   Пользователь не найден для ссылки r   zdata-usernamer   data-linked-resource-typer  zdata-linked-resource-idz$/pages/viewpage.action\?pageId=(\d+)r}   r  r  z!data-linked-resource-container-idr#   r
  r_   r@  rK  r0  zparent.import_raw_jsonr  u   Документ ID u)    с каталогом вложений 'u<   ' не найден в дампе пространства 'r  u~   ). Возможно он находится в пространстве, которое еще не импортированоzERR-0005r  rF  r   r   r:  r  rF  Tr  rv   r  r  r  r  r3  r  rB  rC  rD  r   r  r  u   Не найден файл '   ' страницы ID r  r  zERR-0006)r   r  r  )r_   r`   r   src_origsrcsetsrcset_origvideocontrolsr  r  r  imagesourceu%   Не найдено вложение zERR-0007u,   Ошибка обработки ссылкиzERR-0008)=zipfiler   r   r7   r/   r?   r   r   r   r   r  r   r   r  lstripr   r   r   r   r   r  r|   r    r#   r   r   r  r   r   r  r  r9   r   r   r   r   r   rQ  r  rD  rv   r  r  rD   r  rd   r  r   r   r   rt   r   r   r   rb   r  r  r_   r  r  r   )!rO   r   r  r  make_previewr  r   r   raw_taganchor_nameanchor_link
account_idr   r  	user_namer  rel_docattach_parentr_   r  resource_container_idr  rI  r  resource_ext_iddoc_with_attachdownloaded_file
attach_objr  r   r  r  r  s!                                    r&   r  z"ConfluenceAPIImport._convert_linksM  s   %%&]&]^^ ]	` ]	`C\`9==11 O*//0Ts0T0TUUUr &../^Y\/^/^____q &++,yUX,y,yqw,y,yzzz<<'' +)F+CC)E*C <<'' CIf,=,H,H,M,M )..C.88G# !M(B(B !.667~knktu{k|7~7~ X &../^Y\/^/^____W #),"4"4W]5K5R5RSV5W5W"X"XK%+["A"AK"A"AK-0Yv->CIk*(3CIf%15CIo.O*//0V0V0VWWWJ &../^Y\/^/^____E vr!:!:::!$6!2!8!8!=!=b!A!G!G!L!LQ!OJ!--j99F N1461B	+.,2K	&)59	/2.334ZV[4Z4Z[[[[.66  8My|  zC  DJ  zK  8M  8M  N  N  Np &../^Y\/^/^____k 	"=sCC ! # 8 8I$ I$*L$8$8Q$H$H	  	!!%!1!1)!<!<! R58Yv5FCIk206CIf-9=CIo6 O2778^QWQ\8^8^____ O2::  <Q  ~A  ~G  HN  ~O  <Q  <Q  R  R  R N &../^Y\/^/^____G &***44 !$?@@ ! ',G H HL X X;B;;Gb;c;c789@E^9_9_56-4[[-G-GM* x &../^Y\/^/^____s 	"I3OO #kk!nnG$044t?U?\?h<u<uls<u<u4vvG A59	/21461B	+.,3L	&)) <B789@56X &../^Y\/^/^____U !'|++C0066s;;B?EEcJJ1M 	(+	6Y(Z(Z%$55- 62G6=K^K^_cKdKdefKg2g2g #D$4$D$I$I$K$KE$R S SI!$T%5%E%J%J%L%LV%T!U!UJ'+DO,M,M,O,O'P'P'Y'Y"!#-%( ($ *.)?)F)R&m&mVk&m&mO&,&8&<&<. 89 '= ' 'O ' 8(7+2244  +/0Q0Q0S0S+T+T+]+]& 6 Fu MNN'1), ,( ,2244 
!11U3H U UGWU UYcU UhqU U U
 (2 & 2    !~ &../^Y\/^/^____y '-&>&C&C#S$/)6o3J3J3JK555 
  A@@ 'D ' 'O ' %!40D+E+E+L+L+N+N %!%+%9%=%=!*#0 &> & &
  * >)/)=)=%.'4+/?04	 *> * *J  /> M?CbCfCfgpCqCq M5D5TU^5_ 2<N<R<RSY<Z<Z
 9$6$:$:4$@$@!M(:4(@(HK(W(W<@<L<L(:4(@(O=& =&J$9$9 =><LJ$9&OOO===!$';"<"<dCC >q&2216688$2OOO9=J6&OOO===> > > > > > > > > > > > > > > #11a4 a a3Ha aM]a a a'1 &	 2    !^ &../^Y\/^/^____[ $1559<O <O <O;H 6 J J
  $||E** B03	%0@	*-+5>+?	%(59	/2<<11 47:y7JCIm4 #	( 3$-$859I9O9OPS9T9TUV9W$X$X	$ B1 B)A,:Q:QRY:Z:Z B'.CH4>CIj117CIg.28CIh//!* Bil B9Q<CZCZ[bCcCc B 00jAAA||F++ B1461B	+.,6N,@	&)59	/2,5,@6ARAXAXY\A]A]^_A`,a,a)	6$ 
B)=)=g)F)F 
B'.CH4>CIj117CIg.28CIh/%.%6%6x%@%@F25)F2CFL/3<FL0JJv.... 00jAAAO*//0Y0Y0YZZZZY]]#>??<OOO--.[VY.[.[hr28 . : : :
 &../^Y\/^/^____	8))*Yfp06 * 8 8 8 8 8 &../^Y\/^/^____&../^Y\/^/^____{]	` ]	`s   <v?C&v
Bv>C6vC=v;Bv.B v3H1v	FvAh!v!h%	%v(h%	)9vK&vwv42w$w?c                 8   |j         dv rd}nd}| j        j                            d           |                    ddi          D ]R}	 |                    d          r|                     |d                   }nt          d	          t          |	                    t          |j                  t          |j                  t          |j                  t          |j                  
          d          }t          j        |          }|                    |j                   |                    d|d                   }	|	r|	                    |j                   # t          $ r+}
| j                            d| d|           Y d}
~
Ld}
~
ww xY wdS )u]   
        Упоминания пользователей
        confluence-userlink
        r  z
                <a cmf_converted="true" class="external" href="{person_href}" rel="noopener" target="_blank" data-macros="mentions" data-mention-type="person" data-object-id="{person_id}">@{person_name}</a>
            u	  
                <span class="macros-panel mentions-macros" contenteditable="false" data-id style="display: inline-flex; flex-direction: column; position: relative;">
                    <span class="extension-container" contenteditable="false" data-id data-layout="default">
                        <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 cmf_converted="true" class="external" data-id data-macros="mentions" data-mention-type="person" data-object-id="{person_id}" rel="noopener">
                            <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>
            uH   Конвертируем упоминания пользователейr  userinfor  userkeyu]   Не найдены аттрибуты для определения пользователя)	person_idperson_loginperson_hrefperson_namer  zuser-mentionr   )class_r   uZ   Не удалось преобразовать ссылку на пользователя zERR-0009r  N)r  r/   r?   r   r   r7   r   r   r   r  r   r~   r  r   r_   rJ  r  r  r  rQ  )rO   r   r  r  r  r   r   r  rK  r  r   s              r&   r  z%ConfluenceAPIImport._convert_mentions/  s   
 ..DDD: 	##$nooo''/JJ.W'XX 	M 	MCM779%% E!--c)n==FF#  %D  E  E  E'c&)nnADV\ARAR@CFK@P@P@CFK@P@P )4 )R )R )6	7 7  $y11
   !3444#..S[.QQ B(()@AAA M M M))  +M  HK  +M  +M5?V * M M M M M M M MM/	M 	Ms   
DE""
F, FFc                 R   |dk    rd S 	 |                      |          }n=#  | j                            d| dt          j                   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        }|S )Nunknownu6   Не найден пользователь user_id = "u9   ", в дампе, указываем системногоr}  Fdefault_user_idr  uA   ", ставим пользователя по умолчанию u*   ", указываем системногоzERR-0023r!   ru  )r  r/   r  r=   ERRORrd   system_userr  rW  rb   r7   r    r!   r  rQ  )rO   r"  ry   r   r   s        r&   r   zConfluenceAPIImport._get_persons  s   i4	!0099DD	!O  !\Y`  !\  !\  !\  dk  dq  r  r  r=   ((ue<<	 	',2667HII ')--1NO`1a-bb##  %p]d  %p  %p  hn  %p  %p  x  xG#  H  H  H  H))  +Wcj  +W  +W  +W7AK * Y Y Ys	     8Ac                 &   	 |d         d         d         d         d         }t           j                            ||          }|st          d| d          |                    |                     |||                     dS # t          $ r}d	|d         d
          d|j         d|j        d          d}	t          |t           j	                  r|	d|j
         dz  }	|	d| z  }	| j                            |	d|p|           Y d}~dS d}~ww xY w)u_    Конвертирует макрос Word или Excel через atlas_doc разметку r   r1  macroParamsr_   rb   r  r  r  r  extensionKeyr  r  r~   rl  r  r/  r  r  N)r    r  r7   r   r  r  r_   r  rP  r5  r7  r/   rQ  )
rO   r   elemr   r  r  r  r  r]  r  s
             r&   _convert_msoviewer_in_atlas_docz3ConfluenceAPIImport._convert_msoviewer_in_atlas_doc  s   	Wl3MB6J7SI)--Sy-IIF W U U U UVVVT==c6:VVWWWWW 	 	 	T4=Q_C` T T*-(T T7:7J47PT T T  &&";<< JI0FIIII
*s**$JO%%%Mc &         	s   B B 
DA7DDr'  c                 D!   dd l }t          |          }d}t          |          D ]y}| j                                        r d S |dz  }|d         dk    r|                    ddddd	
          }	d |                    ddi
          D                                             }
g }|
j        D ]}|dk    r	|	                    |           t          |d                   D ]t\  }}|d         d         }|                    d| ddd| dd
          }|                    d ||         j        D                        |		                    |           u|
                    |	           n|d         dk    rd }
|d                             d          rf|                    d|d         d         i
          }
|
s?| j        j                            d|d         d          d|d         d                     nmd|d         d         v r]|d         d         d                             d          r6|                    d|d         d         d         d         d          i
          }
|d         d         d!k    rLd"}|                    d|d         d         i
          }
|
r!|d         d         d#         d$         d          }d%|v r|                    d%d          \  }}n`t%          |t&          j                  r |j                                        d&         }n$|j        j                                        d&         }|}|d         d         d#                             d'          }|rZt1          |                    dd$                              |d          ||(          d)          }|
                    |j                   n|d         d         d*k    rd+}|                    d|d         d         i
          }
|
r|d         d         d#         d$         d          }|rd%|v r|                    d%d          \  }}n`t%          |t&          j                  r |j                                        d&         }n$|j        j                                        d&         }|}t1          |                    dd$                              ||,          d)          }|
                    |j                   np|d         d                             d-          rs|d         d         d#         d.         d          }|}t&          j                            ||/          }d0}|s|d         d         d#         d1         d          }| j        j        j        j         d2| }t&          j         !                    d'd3|gd4d5| d6gg d7gg d89          }|rtE          |j#                  $                                rt&                              ||| j        d:;          }|j        r|j                            d<          r|j        d<         }|                    d=          |_%        |                    d>          r>|d>         d         d?k    r,| &                    |d>         | j'                           |_(        ntR          j*        |_(        |+                    d:@           tY          tE          |j#                  dA          5 }|-                    |.                                d:B           d:|_/        |+                    d:@           d d d            n# 1 swxY w Y   t&          j         !                    d'd5| dCgd4d5| d6gg d7gg dD9          }|rtE          |j#                  $                                r|j0        } t&          j                            d'd3| gdEdF|ggG          }!|!sEt&                              | ||j%        |j(        | j        d:H          }!|!+                    d:@           tY          tE          |j#                  dA          5 }|!-                    |.                                d:B           d:|!_/        |!+                    d:@           d d d            n# 1 swxY w Y   tc                       ntE          | j        2                                          3                    dIti          | j5        j                                        d&                   dJ|dK          }"| j        6                    dL| dM| dN|" dOdP|Q           	1|}t&          j                            dEdF|gd'd5| dCggdRg9          }!dS}dS}#|d         d         d#                             d          r |d         d         d#         d         d          }|d         d         d#                             dT          r |d         d         d#         dT         d          }#|j0        j7        |j8        j7        ||#dU}$|!r|!j9        |$dV<   nd$|$dV<   t1           |                    dd$          j        di |$d)          }|
                    |j                   n|d         d         dWk    r>dX}%ti          |j8                  }&ti          |j0                  }'dY|&|&dZd$d[dYd\}(|d         d         d#         })|)rQ|)                    d]          r;tt          ;                    |)d]         d          <                                          |(d^<   |)                    d_          r|)d_         d          }t&          j=                            |j>        |/          }*|*s t&          j                            |`          }*|*r,ti          |*j8                  |(da<   ti          |*j0                  }'n(| j        j                            db|d                     |)                    dc          r|)dc         d          |(dd<   |)                    de          r|)de         d          |(df<   |)                    dg          r|)dg         d          |(dh<   |)                    di          r*d[dddj}+|+                    |)di         d                    |(dk<   |)                    dl          r*d'dmdndo},|,                    |)dl         d                    |(dp<   |)                    dq          r;tt          ;                    |)dq         d          <                                          |(dr<   ds?                    dt |)@                                D                       }-t1          |%                    |&|'tt          A                    |(dYu          |-v                              dd$          d)          }.|
                    |.j                   n|d         d         dwk    r|                    ddwddx
          }/|                    dyddzi
          }0|0	                    |d         d         d#         dz         d                     |/	                    |0           |                    d{d|dd}d~
          }1|1	                    |d         d         d#         d         d                     |/	                    |1           |
                    |/           n|d         d         dk    r| B                    |||
d|           nU|d         d         dk    r| B                    |||
d|           n'|d         dk    r|d         d         dk    r|d         d         d#                             d'          r|d         d         d#         d'         d          }d}|                    d|d         d         i
          }
|
rvt1          |                    dd$                              |d$?                    d |
j        D                                 d)          }|
                    |j                   n"| j        j                            d|            |                    d          r| C                    ||d         ||           {d S )Nr   r   rC  layoutSectionr0  r  r  zmceNonEditable selected)contenteditablezdata-layout-sectionr.  r  c                 N    g | ]"}d |j         d         vd|j         d         v |#S )zfixed-widthr.  singler  rd  s     r&   re  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  sJ     j j js'sy/AAAhVYV_`gVhFhFh FhFhFhr%   r.  columnLayoutr   r?  r   r  r   zflex-basis: )zdata-column-widthzdata-layout-columnr  c                 6    g | ]}t          j         |          S r$   )rJ  r  s     r&   re  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  s     *V*V*VA49Q<<*V*V*Vr%   	extensionlocalIdzdata-local-idu&   Не удалось найти тег u    для r  macroMetadatar1  macroIdr  rb   r  uU  
                    <div
                        class="macros-panel macros-include-block"
                        contenteditable="false"
                        data-id
                        data-macros="include-excerpt"
                        data-param-excerpt="{excerpt_name}"
                        data-param-pageid=""
                        data-param-pagename="{page_name}"
                        data-param-projectkey="{space_key}"
                    >
                        <div class="extension-container" contenteditable="false" data-id data-layout="default">
                            <span aria-label="Макрос Include. " data-id role="img">
                                <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                                    <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                                </svg>
                            </span>
                            <span class="extension-title" data-id>Макрос Include. "Вставить выборку" <span class="excerpt-title" data-id>| Имя = {excerpt_name}</span></span>
                            <span class="macros-actions" data-id>
                                <span class="macros-edit" data-id style="margin-right: 7px;">
                                    <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                        <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                    </svg>
                                </span>
                                <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>
                        </div>
                        <div class="ak-renderer-wrapper" data-id></div>
                    </div>
                    r  r  r  r
  r_   r  r  r  u  
                    <div
                        class="macros-panel macros-include-page"
                        contenteditable="false"
                        data-macros="include-page"
                        data-param-pageid=""
                        data-param-page-label="{page_label}"
                        data-param-projectkey="{space_key}"
                        data-rendered="true"
                    >
                        <div data-layout="default" class="extension-container" contenteditable="false">
                            <span role="img" aria-label="Макрос Include. ">
                                <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                                    <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                                </svg>
                            </span>
                            <span class="extension-title">Макрос Include. "Вставить страницу" <span class="excerpt-title">| Имя = {page_label}</span></span>
                            <span class="macros-actions">
                                <span class="macros-edit" style="margin-right: 7px;">
                                    <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                        <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                    </svg>
                                </span>
                                <span class="macros-delete">
                                    <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>
                        </div>
                        <div class="ak-renderer-wrapper"></div>
                    </div>
                    r  r  diagramNamer  u  
                    <div data-drawio-title="{name}" data-drawio-type="diagram" data-attach-id="{attach_id}" class="drawio-content" contenteditable="false">
                        <div class="header">Диаграмма: "{name}"</div>
                        <div class="content">
                            <img cmf_converted=True src="{img_src}" alt="" data-mce-src="{img_src}" width="{width}" height="{height}">
                        </div>
                    </div>
                    pageIdr}   rF  r   r   r:  r  r  r  Tr  r3  r  rB  rD  r   r  r  r  )r  r_   rv   r   r   r   )r_   r   r  r  r/   r   r@  rK  r0  u7   Не найден файл Draw.io диаграммы 'r  r  r  zERR-0010r  r   r  r  r  r  rh  u  
                        <div
                            class="macros-panel"
                            contenteditable="false"
                            data-children-docs="{doc_id}"
                            data-id
                            data-macro-parameters='{params}'
                            data-macros="children-docs"
                            original-data-macro-parameters="{original_params}"
                        >
                            <div class="extension-container" data-id data-layout="default">
                                <span aria-label="Макрос " data-id role="img">
                                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="20" height="20">
                                        <path d="M22.485,10.975,12,17.267,1.515,10.975A1,1,0,1,0,.486,12.69l11,6.6a1,1,0,0,0,1.03,0l11-6.6a1,1,0,1,0-1.029-1.715Z"></path>
                                        <path d="M22.485,15.543,12,21.834,1.515,15.543A1,1,0,1,0,.486,17.258l11,6.6a1,1,0,0,0,1.03,0l11-6.6a1,1,0,1,0-1.029-1.715Z"></path>
                                        <path d="M12,14.773a2.976,2.976,0,0,1-1.531-.425L.485,8.357a1,1,0,0,1,0-1.714L10.469.652a2.973,2.973,0,0,1,3.062,0l9.984,5.991a1,1,0,0,1,0,1.714l-9.984,5.991A2.976,2.976,0,0,1,12,14.773ZM2.944,7.5,11.5,12.633a.974.974,0,0,0,1,0L21.056,7.5,12.5,2.367a.974.974,0,0,0-1,0h0Z"></path>
                                    </svg>
                                </span>
                                <span class="extension-title" data-id>Макрос "Отображение дочерних"</span>
                                <span class="extension-object-name" data-id>| {doc_name}</span>
                                <span class="macros-actions" data-id>
                                    <span class="macros-edit" data-id style="margin-right: 7px;">
                                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                        </svg>
                                    </span>
                                    <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>
                            </div>
                            <div class="ak-renderer-wrapper" data-fabric-macro="null" data-id data-macro-body=""></div>
                        </div>
                    Fr  r  )r  r  r  r  rB   r  r  r  r  r  rk   r  uE   Не удалось обработать тег оглавления r  r  r  rB   r  r  r  r  r  r  r  r  r  r  r  r  r  c              3   6   K   | ]\  }}| d |d          V  dS )rF  rb   Nr$   )rm   r  r  s      r&   r   z9ConfluenceAPIImport._convert_atlas_doc.<locals>.<genexpr>  s8      2k2k41aa3F3F!G*3F3F2k2k2k2k2k2kr%   r=  )r*   r  r  r  zpaste-code-macro)r.  r  rs  r   prezlanguage-markupr  )r.  r  zdata-mce-selected__bodyContentr  r  r  bodiedExtensionr
  u  
                    <div
                        class="macros-panel macros-excerpt-block"
                        contenteditable="false"
                        data-id
                        data-macros="exceprt"
                        data-param-name="{name}"
                    >
                        <div class="extension-container" contenteditable="false" data-id data-layout="default">
                            <span aria-label="Макрос Include. 'Создать выборку'" data-id role="img">
                                <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                                    <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                                </svg>
                            </span>
                            <span class="extension-title" data-id>Макрос Include. 'Создать выборку' <span class="excerpt-title" data-id>| name = {name}</span></span>
                            <span class="macros-actions" data-id>
                                <span class="macros-edit" data-id style="margin-right: 7px;">
                                    <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                        <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                    </svg>
                                </span>
                                <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>
                        </div>
                        <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-id data-macro-body="">{content}</div>
                    </div>
                    c                 ,    g | ]}t          |          S r$   r  rd  s     r&   re  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>A  s?      pR  pR  pR  ~Apstwpxpx  pR  pR  pRr%   r  u   Не нашли тег для r$   )Dr  r   rV  r/   r  r  r   r  r  r   rK  extendr  r7   r  r?   r   r   rP  r    r  r  r9   r   r   r   r  r  r  r  r   r   r  rD  r   rv   r   r  r   rD   r  rd   r  r   r   r   rt   r   r_   r   r   r   r   r  rQ  rb   r~   r   r   r   r+  r#   r_  r  r!  r   r  r  )2rO   r   r'  r  r  r  cntr  r  tag_layout_sectionr   r  r  colr  tag_layout_colr  macro_paramsr  r  r  rn   r  r_   r  r  r  r  r  r  r   
drawio_imgfile_name_imgr  r#  r  r  r  r_  r  r  r  parent_pager  r  original_params_strnew_soup
code_blockr   rb   s2                                                     r&   r  z&ConfluenceAPIImport._convert_atlas_doc  sx    )nnY'' a	S a	SD((** FAF|..%)\\%SZW]Ib@d @d\ &e &e"j jdmm7N:Sm&T&T j j jjmjmjojo  ' 'ADyy OOA&&&&'Y88 > >FAsL1E%)\\%X]U`U`U`V\I`X]I`I`I`@b @b\ &c &cN #))*V*V!AU*V*V*VWWW&--n====  !34444f,,=$$Y// s))?DM)<T*U)VVC !.66  8b`del`mnw`x  8b  8b  CG  HO  CP  Q_  C`  8b  8b  c  c  c ! %Wl(CCCWVbHcdsHtHxHx  zC  ID  IDC)).Wl0KO0\]f0gho0pq $ s sC=04EEE# HJ ))?DM)<T*U)VVC ;'+G}\'B='QRT'UV]'^,..3?3E3Ec13M3M0Iyy)#v/@AA U,/,?,D,D,F,Fu,M		,/J,F,K,K,M,Me,T	(4I'+G}\'B='Q'U'UV\']']' 	; - ( 0 0r : : A A1=g1F.7.7 !B !" !"
 !.! !A  ,,Q\:::']>2i??" HF ))?DM)<T*U)VVC ;'+G}\'B='QRT'UV]'^' ;"l228D8J8J3PQ8R8R 5	::#-c63D#E#E !Y030C0H0H0J0J50QII03
0J0O0O0Q0QRW0XI-9
 - ( 0 0r : : A A/9.7 !B !" !" !.! !A  ,,Q\:::']>2;;HEE ]c=6}EmTU\]D $I#155Sy5QQF H " R%"&w-"=m"LX"VW^"_(,(>(E(Q%^%^U\%^%^
!'!9!>!>!'d 3!-v*7I7I7I J 9 9 9$
 $E#D#D "? " " " F%d6;&7&7&>&>&@&@ F%%+%9%9%.'*+/?04	 &: & &F  &5 I&:P:T:TU^:_:_ I5;5KI5V 28J8N8Nv8V8V 5$6$:$:4$@$@!I(:4(@(HK(W(W8<8H8H(:4(@(O9& 9&F$5$5 9:8HF$5"KKDK999!%d6;&7&7!>!> >! & 2 216688$ 2 O O O9= 6 & = = => > > > > > > > > > > > > > >
 *0)A)F)F%+V^^^$D%16j;M;M;M$N$=$=$=("
 (>'='= *G * *J  * Fd:?.C.C.J.J.L.L F0:-3-A-E-E)/m(D)14(=,& .F ." ."
 (2 	!F171E1E-:/27=7L393D37?8< 2F 2& 2&J %/OOO$E$E$E%)$z*?*?%F%F !F!$.$:$:16688RV$:$W$W$WAEJ$>$.OOO$E$E$E!F !F !F !F !F !F !F !F !F !F !F !F !F !F !F 'LLLL(,T_-N-N-P-P(Q(Q(Z(Z * #D$4$D$I$I$K$KE$R S S + ' -) )I !O55!PZ^ !P !P7>!P !PCL!P !P !P+5$'	 6    % $I!'!5!9!98TSVBWCI6V_SfSfSfBgBirwqx ": "z "zJ"E#FG}\2=AEEgNN ] $Wl ;M J7 ST[ \G}\2=AEEhOO _!%g|!<]!KH!UV]!^$*K$5)/%*&, D
 " +*4.Y(*Y%&Gh&6&6tR&@&@&G&O&O$&O&OQ^__A$$Q\2222']>2j@@%DN !$CFI"38}}H +0$-&/*.!#+1). F '+7mL&A-&PO& n*..u55 k7;zz/RWBXY`BaBgBgBiBi7j7jF#34*..v66 	X(7(?(HI*0*<*@*@\e*@*f*fK#. T.4.?.C.C.C.S.S* X7:;>7J7J| 4+.{/?+@+@ $ 6 > >  @W  HL  MT  HU  @W  @W  !X  !X  !X*..w77 Y7Fw7OPW7XF#34*..w77 P.=g.Fw.OF7O*..w77 U3B73KG3TF<0*..}== s5;ybk,l,lM8E8I8I/ZgJhipJq8r8rF#45*..v66 e6<JZhy,z,zM1>1B1B?SYCZ[bCc1d1dF:.*..y99 n6:jjQZA[\cAdAjAjAlAl6m6mF?3*-((2k2kSbShShSjSj2k2k2k*k*k',T[[	BJ@D

6`e
@f@fI\ .9 .^ .^ _f^efjln^o^o-:	 <  <H
 $$X%89999']>26HHH!%eEWjp;q;q!r!rJ LLWg4FLGGELLg|!<]!KG!TU\!]^^^%%e,,, LL@QfmLO7Q 7QL R RELLg|!<]!KO!\]d!efff%%e,,,$$Z0000']>2i??88dC[a8bbbb']>2i??88dC[a8bbbf!222=0I==$w-P\B]^kBlBpBpqwBxBx=#'=#>}#Mf#UV]#^L  HB ))?DM)<T*U)VVC `)(*:*:4*D*D*K*KQ]gigngn  pR  pR  EH  EQ  pR  pR  pR  hS  hS*K  +T  +T  Vc  d  d((6666.667^X\7^7^___xx	"" S''T)_d6'RRRCa	S a	Ss&   A]]	]	Ab''b+	.b+	)Fr   )r
  N)r   rb  )TT)T)NN)jr   r   r   r   r   r    	CmfImportrQ   rC   r7  rg   staticmethodr	   r   rp   rr   r   r   r   r   r   r   r   r  r&  r  r`  r  r  r  r  r  r	  r*  r0  r>  rD  rF  r[  r`  rh  r  r  r  r  r  r  r   r  r  r  r  r)  r,  rR  rM  ra  rf  rk  rL   IMPORT_OBJ_CNTrr  ry  r  r  r  r  r  r  r$  r  r  r!  r"  r  rm  r  r%  r  r   r  r#  r  r  r  r  r  r@  rO  rU  rq  rf  rx  r|  r  r  r  r  r?  r  r  r  r  r   r  r  r$   r%   r&   r-   r-   *   s       EEN= Nf>N N N N N:A A A8d 8 8 8 8 0d 0t 0 0 0 \0    < < <|  B 3        # # #=n =nd =n =n =n =n =n~M M M2w w w w$IH IH IHVS/ S/ S/j2 2 2h_+ _+ _+B  >3 3 3j]+ ]+ ]+~v- v- v- v-p: : : :x!N !N !NF  
 
 
4% 4% 4%l     
7 
7 
7lk lk lk\' ' '>9 9 9.;# ;# ;#z? ? ?B& & && & &C$ C$ C$ C$ C$J       \0L L L\7 7 7 7r  \$ \ \ \ \|   \&  ; ; ; ;> > > >D=R    ./# /# /#bl# l# l#\-H -H -H^4 4 4l_" _" _"B   @z9 z9 z9x89 89 89tJ9 J9 J9XA9 A9 A9FU9 U9 U9nl9 l9 l9\-> -> ->^ N" N" N" \N"`H9 H9 H9T\8 \8 \8 \8|R9 R9 R9h:9 :9 :9xw9 w9 w9r$J $J $JL  &Rb Rb Rbh3Y 3Y 3Yj  &&x &x &xPZ Z Zx39 39 39j3% 3% 3%jU U Un'4 ' ' ' 'R# # ## # #c" c" c"D c" c" c" c"J'` '` '`R  <+| +| +|Z/# /# /# /# /#b  `` `` `` ``DBM3 BM BM BM BMH  (   0gS gS gSRU gS gS gS gS gS gSr%   r-   )#rJ  r  r   r   rL  r  cmf.appr   pathlibr   urllib.parser   r   typingr   r   r	   r
   	itertoolsr   r   cmf.includemodules.confluence.apir   %common.models.cmf_plugin_import_mixinr   bs4r   r   modules.jira.jql.parserr   	dataclassr   r(   r-   r$   r%   r&   <module>r     s        				                ! ! ! ! ! !       . . . . . . . . . . . . " " " " " "         0 0 0 0 0 0 F F F F F F        1 1 1 1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ O O O O O O O O\TS \TS \TS \TS \TS \TS \TS \TS \TS \TSr%   