
    ix                    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Zdedej        fdZ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ddefdZdefdZd ZdededefdZd ZddZd Zd Zd Zd Zd Z d  Z!d! Z"dd"Z#dd$Z$d% Z%dd&Z&d' Z'd( Z(d) Z)d* Z*d+efd,Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3d5 Z4d6 Z5defd7Z6d8 Z7ed9efd:            Z8d; Z9dd<Z:d= Z;d>efd?Z<ed@             Z=dA Z>ddDZ?dE Z@eAjB        fdFZCdG ZDdHefdIZEdJ ZFdK ZGdL ZHdM ZIdN ZJddOZKdP ZLdQ ZMdR ZNdS ZOdT ZPdU ZQdV ZRdW ZSdX ZTdY ZUdZ ZVd[ ZWedd\            ZXd] ZYdd^ZZd_ Z[d` Z\da Z]db Z^dc Z_dd Z`ddeZadf Zbdg Zcdh Zddi Zedj Zfdk Zgdl Zhdm ZidnefdoZjdp Zkdq ZlddsedefdtZmdu Zndv Zodw ZpdeqfdxZrdy ZsddzZtdefd{Zudd|Zvdd}Zwdd~edefdZxdS )ConfluenceAPIImportu;   Класс загрузки объектов через API).meta.dirty.trashed.remote
confluence
cmf_importc                    || _         || _        t                      | _        t          j                            d          | _        d| _        d| _	        t                              d          }| j        j        j        |_        |                    | j        j        j                   |                                  d| _        | j         j        rd| _        d| j        _        d| j        _        t+                      | _        t/                      | _        t          j        j        | _        t          j        j        | _        d| _        t>          j         | _!        d	d
d| _"        | #                                 d S )Nzdefault.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	accountIdFr#   	CmfFolder)pagefolder)$r2   r3   r   
total_datar    CmfWorkflowgetdefault_workflow
has_errorsexpandlogging	getLoggerloggerhandlerssetLevellevel_prepare_multiprocessinguser_keycloudimported_object_countjson_object_countr   treeset_selected_objsr#   get_random_str
random_strget_data_iddata_iddump_page_versionsconfig$IMPORT_CONFLUENCE_DUMP_LAST_PAGE_VERdump_last_page_vertype_model_map_set_fallback_person)selfr2   r3   rD   s       r&   __init__zConfluenceAPIImport.__init__3   s@   $$#++ & 2 6 6<T 6 U U] ""#:;;/09.4555%%'''!?  	('DM01-,-)FF	!ee ,;)5 #("("M "!
 

 	!!#####r%   c                     | j         j        j                            d          }t	          |          | _        | j        r't          j                            |          | _        dS t          j
        | _        dS )u   
        Устанавливает резервного пользователя,
        если пользователь не будет найден в методе _get_person()
        default_user_ididN)r3   json_settingsvaluer>   bool_is_default_userr    r!   _fallback_persongsystem_user)rZ   r]   s     r&   rY   z(ConfluenceAPIImport._set_fallback_personY   sm    
 /7=AABSTT $_ 5 5  	2$*$4$8$8O$8$L$LD!!!$%MD!!!r%   c                     dd l }dd l}|| _         || _        t          j        | _        t          j        | _        | j                                        | _	        d S )Nr   )
	threadingqueuerU   IMPORT_THREADSthreading_max_forks"IMPORT_CONFLUENCE_DOWNLOAD_THREADSdownload_threading_max_forksr3   get_max_processesmax_processes)rZ   rh   ri   s      r&   rH   z,ConfluenceAPIImport._prepare_multiprocessinge   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)rt   fieldsselectedObjects)rt   ra   import_type)r   re   current_personrs   rt   rZ   s    r&   calc_import_settingsz(ConfluenceAPIImport.calc_import_settingsn   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 rt   r$   .0ss     r&   
<dictcomp>z;ConfluenceAPIImport._normalize_settings.<locals>.<dictcomp>w   s    ///&	1///r%   r$   )r{   s    r&   _normalize_settingsz'ConfluenceAPIImport._normalize_settingst   s     0/h////r%   c                     g S )uo    Для импорта из Confluence предварительный просмотр не требуется r$   ry   s    r&   previewzConfluenceAPIImport.previewy   s    	r%   c                    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           |j                                         dd|j        gg dg}
t          j                            |
           |d         rBt                              |j        | j        d|d                                       d           |d         rHt                              |j        | j        d|d                                       d           d S d S d S d S )N)readwritepath	operationr   restrictionsuserresultsprivategroup::r_   rt   ext_idLIKE%filterupdatereadonlyr   Tsave_importparent==r3   !=N)r   r3   access_levelsubjects)_get_restrictions_get_personrI   appendr2   rJ   r3   pluginsource_hashr    CmfPersonGroupr>   import_originalperm_policy
is_changedsaveperm_aclloadCmfAccessRulebulk_delete)rZ   docdoc_objpermsr   restrictionr   person
group_infor   _filterr   s               r&   _process_restrictionsz)ConfluenceAPIImport._process_restrictions}   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" 	U{ 	U"-G! /...!!### $(89;U;U;UVG ,,G,<<<V} T$$G,<04f.3Fm % = ==ATdT=S=S=SW~ U$$G,<04g.3Gn % > >>Bdtd>T>T>T>T>T	U 	U 	U 	UU U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   r   lenreplacer2   get_page_by_title	Exceptionr3   rD   warninginfor   )	rZ   urlr6   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%Frt   c                 0   | j                                                             | d          }|                    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   |
                    |           | j                             d           t                       d S )N.jsonr/   a+r   
T	only_data)r3   get_download_pathjoinpathwith_suffixexistsopenrL   r   jsondumpsr   r   
cmf_commit)rZ   api_funcrt   	overwrite	file_pathfile_path_tmpfrows           r&   _simple_dumpz ConfluenceAPIImport._simple_dump   sN   O5577@@DPP	!--h77 	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 	i(((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+)r3   r   r   r   r   r   loads)rZ   rt   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   r3   r   r   oslistdirr   r   r   )rZ   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        |         	 g d}t          fd|D                       rJt          j	        d          r`d	}
                    d
          st          j	        |          r#| j         j                            d            t          j                                      }|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/z/servlet/benryanconversionc              3       K   | ]}|v V  	d S Nr$   )r   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   )r3   r   r	  r   Fu6   Не удалось обработать ссылку r   )'r3   rD   r   r   find_allr   attrsanyresearch
startswithr   urllibparser   schemenetlocurljoinr2   r   unquoter   	mimetypes
guess_typer    r#   _get_filenamer   r   r   CmfImportDownloadr>   r   rt   
downloadedr   r   r   cmf_rollback)rZ   r   r   r   r   key	url_partsemail_pattern
parsed_urlrt   	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 ;	t ;	tCC||F## )C.C5t  	 AAAAyAAAAA 98#>>  V>>),, 	-0M0M O*223N3N3NOOO#\22377
") <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 %.!$-!*/'!!### t t t&../rhk/r/rop/r/rssssssssts;	t ;	ts:   3M
M
)AM
8C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rA   r8   )usernamer'  c              3   :   K   | ]\  }}|vs|d k    ||fV  dS ) Nr$   )r   kv	user_infos      r&   r  z5ConfluenceAPIImport._get_user_info.<locals>.<genexpr>F  sJ       !C !CDAq$%Y$6$6!r'' #$Q:A'''!C !Cr%   
users.jsonr   r   u4   Информация о пользователе ID u    добавлена в дамп)_get_user_info_from_dumpr2   get_user_infoget_user_info_by_keyget_user_info_by_usernamerJ   get_user_detailr   itemsr   r   r   r   r   r3   rD   r   )rZ   user_id	dump_pathrA   user_detail
users_pathr   r,  s          @r&   _get_user_infoz"ConfluenceAPIImport._get_user_info6  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   rt   r)  r'  userNamers   displayNamefullNameuQ   Не нашли информацию по пользователю в дампе )r   r>   rI   lowerr   )rZ   r4  r   r,  s       r&   r.  z,ConfluenceAPIImport._get_user_info_from_dumpO  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   zccontent.version,content.body.storage,content.body.view,content.body.editor,content.body.export_viewz,content.body.atlas_doc_formatversionnumber)current_versionrA   last_versions6   Не удалось сдампить документ r   zERR-0038r#   dump
error_codeobj_type
error_typeFensure_asciir   r   contentbodyexport_viewra   bytype	anonymousrT   w+uE   Не удалось сдампить версии документа ERR-0025u    выполнен за .3f    сек.r   indentrP  )rW   r3   rD   r   r   r   r   r   r   timeperf_counterr   remover2   rJ   get_page_versions
isinstancer   	log_errorr   r   rL   inc_statr$  r>   r   rJ  )rZ   r*   doc_pathdoc_log_msgnum_ver_msgr   	doc_users
users_filer   t1	info_filedoc_dataversions_file_namerA   page_versionexct2users_fs                     r&   _dump_versionsz"ConfluenceAPIImport._dump_versionsa  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	) ) ) ) ) ) ) ) ) ) ) ) ) ) )   7	; ))+66Ii%% (99Q<<( ( ( ( ( ( ( ( ( ( ( ( ( ( ( "*!2!2?!C!C!((** .		,---($// "A1C  ?( ?>>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Z .3H)*i&& ;!		(AE	:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  	 	 	O%%lXcllgjll%&!	 &        	   2%##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$   r   r   s     r&   
<listcomp>z_ConfluenceAPIImport._dump_documents_expand_worker.<locals>.dump_child_pages.<locals>.<listcomp>  s    LLLLLLr%   
pages.jsonrW  )	r3   rD   r   r2   get_childrenr   r   r   rJ  )r*   rd  re  children
pages_filer   rZ   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-  rC  zrestrictions.jsonu%   Дамп прав документа r   r   r   r   r   zrestriction )rW  r   Fr[  )r   r   r   r   r   r   r_  r3   rD   r   r2    get_all_restrictions_for_contentr   r   r   rJ  )
r*   rd  re  rg  rh  r   restriction_filer   r   rZ   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   r_  r3   rD   r   r   r2   get_all_page_labelsr   r   r   )r*   rd  re  lables_filer   labelrZ   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_   r}  statustrashed   Документ uW    был удален. Пропускаем дамп расширенных данныхrG   r   r   rT      uO   Повтор дампа расширенных данных документа    , попытка u\   Не удалось сдампить расширенные данные документа rX  r#   rJ  rK  r   )r   r>   putr3   rD   r   qsize	is_cancellogrB   WARNINGrangerq  rb  )
rZ   
page_queueobjs_that_are_doner{  r  r  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                     d}| j                                         }| j                                         }d}|                                D ]}|                                r|j                            | j                  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   r   rD  rC  r_   r   r   r  rT   )r_   r   r   r  rT   uC   Дамп расширенных данных документов: z_dump_documents_expand_worker )r  r  targetrt   kwargs   Форк proc=uR   Ошибок дампа расширенных данных документов: )ri   Queueiterdiris_dirrt   endswithexcluded_doc_dir_endingsr   r   r   r   r   r>   rT   r  r3   rD   r   r  rh   Threadr  r   startjoinclearempty)rZ   objs_dirmax_workersr  r  r  
page_countdoc_dirrj  r   	info_datadataprocessr  procs                  r&   _dump_documents_expandz*ConfluenceAPIImport._dump_documents_expand  s   Z%%''
!Z--//
'')) 	% 	%G~~ %(=(=d>[(\(\ %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s   *CC	C	c                 n     fd}t          d          5  d}	 |                                }||                    |           n>|D ]8}	  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_        # t          $ r4} j                            d|	 d| ddd           |dz  }Y d }~2d }~ww xY wk|                    |           d d d            d S # 1 swxY w Y   d S )Nc                 |   d| d          d| d          d}                     t          | 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k    r|                     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nddz   z  }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%|_        ||_        |                                 t;                                           | 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&         d0         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| d1<   |                     d2          }t          |d          5 }	t          
                    ||	d3d%4           d d d            n# 1 swxY w Y   |)                    |           t          |          | d5<   |                     d6          }t          |d          5 }	t          
                    | |	d%7           d d d            n# 1 swxY w Y   | d         dk    r|                    d           j        *                    d8| d9           j        (                    d:           d S );Nr  r   r  r_   r}  r/   Texist_okhistory	createdBylastUpdatedrT  ownedByrU  rV  r:   rB  attachments.jsonc                     g | ]}|S r$   r$   ru  s     r&   rv  zUConfluenceAPIImport._dump_documents_main_worker.<locals>.dump_doc.<locals>.<listcomp>P  s%       C  r%   rE  )page_idrA   rW  )moder   _linksdownloadr  &zdownload=truerF  z[?&]version=(\d+)r   .)rt   r   r   )r	  r   ru   )r	  r   r3   FrR  viewra   zcomments.jsonu5   Дамп комментариев документа r   z@,extensions.inlineProperties,extensions.resolution,children.pager&  r   commentrS  rT   r-  r   r[  r   rD  rO  r  u     успешно сдампленr)   )+r   r   r   mkdirr   r>   r2   get_all_attachmentr   r   rJ  r3   r   r   
url_joinerr   r  r  r   r    r  rt   r   r   r   r   r  import_raw_jsonr   r   r$  r   r_  rD   r   rA   get_page_commentsr   r   rL   rc  r   r  )r   re  r  doc_dir_tmprg  ownerr   rj  attach_infor   
doc_ext_idattatt_idr"  download_linkdownload_urlrE  attachment_pathattachment_path_tmp
att_ext_idr#  comments_file_namerA   r  r7  	info_pathr  rZ   s                             r&   dump_doczAConfluenceAPIImport._dump_documents_main_worker.<locals>.dump_doc9  s   =s7|==T===K''CI77G!--h77K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%>??? 6{f$$")"2"2="A"A'001CDD	 #'?#E#E #D	( $F $ $   )$/// .1IIk1---. . . . . . . . . . . . . . . !% 6 = IXXSQUYXX
&  !  !C YF #GI$'M*$=M#'?#=#=do>QS`#a#aL C<,?,?SSSO$[[L C''"%i.":"$),@-"P"P6="D'--"2"2"21&5&>&>&?T?T7?T?T&U&UO*5*>*>}QWNcNcZaNcNc*d*d'$.!:!:&!:!:J#)#;#?#?#-$(O$:$A$M777 $@ $ $L
 ( '-'?'?'1(,(>(E(Q'+ (@ ( (
 )2L%(4L%(7L%#. ,6I6P6P6R6R ,27/7:4$))+++LLLL  VV!4W!=PSTTT &1%9%9/%J%J"%,,.. 2II0111&++,qdo,q,qrrr,d33 Vq $mmmF#'?#D#DSYW]#D#^#^ V V

7 3 3d :;;;99Q>9900;;;(()G)PRacfggg#I.229== L$+I$6y$A$R$R%,,WY-?	-JKKK#I.22;?? N$+I$6{$C9$T$T%,,WY-?-LMMM#I.22=AA V$+I$6}$Ed$KS\$\$\%,,WY-?-Nt-TUUU!VV V V V V V V V V V V V V V V, )-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 (((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 6{f$$%%t%444O aK a a abbbO$$Z00000sI   (GGG?F*W66W:=W:+YYY-[[[Fr  r   Tz,versionr  rA   r  r  currentarchivedr  r  r   r  r_   r}  u   Дамп документа r   r  u+   Повтор дампа документа r  r   u    из 3r  rI  rA  rX  r#   rJ  rK  )r   r>   r  r2   get_page_by_idrA   r3   r  rD   r   r  r  rB   r  rL   r   rb  )rZ   r  bulk_page_queuer  r  r  page_idsr  r  r  r  rn  s   ``          r&   _dump_documents_main_workerz/ConfluenceAPIImport._dump_documents_main_worker8  s   s	1 s	1 s	1 s	1 s	1 s	1j 5111 -	+ -	+F)$*..00##''111
  (  $  $G$$(O$B$B#&*k#;#;#;#( %C % %	
 %X.6XXX$'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jUajjehjj'1MV\ 2    !$I)$T ""6***[-	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+sk   6F*/E?F* .E.F*03E$C1/E19D,	*EF*
F)E>8F*>FF**F.1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.   Ошибок дампа документов: )ri   r  r  rh   r  r  r   r  r3   rD   r   r  r  r  r>   )	rZ   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}| j         }d}| j                                        }| 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                            | j         d|d	d
           | j        j                            | j         d|            t          j                    }||                     |||          z  }t          j                    |z
  }| j        j                            | j         d|d	d
           t          j                    }||                     ||          z  }t          j                    |z
  }| j        j                            | j         d|d	d
           | j                                        r| j        j                            d           |S )Nr   2   uV    Добавление страниц в очередь дампа пачками по u    страницr/   r   r  uZ    Добавление страниц в очередь дампа выполнено за rY  rZ  u>    Дамп основных данных документов: uS    Дамп основных данных документов выполнен за uD    Дамп расширенных данных выполнен за    Импорт прерван)rm   ri   r  r3   rD   r   	log_spacer]  r^  r  r  r   rt   r  r   r   r   r  r  r  r  r   )rZ   r  r  r  max_bulkr  r  	temp_listri  r  r  ro  s               r&   _dump_documentsz#ConfluenceAPIImport._dump_documents  s.   7***,,##~  O  Ou}  O  O  O	
 	
 	
 
	  '')) 	 	G>>## 3w|+<+<+E+Eh+O+O !OJl((--a0GS\\***9~~))##I...	 	+	***D!!!  2%##~  J  Jy{  J  J  J  J	
 	
 	

 	##~ii]gii	
 	
 	
   $++Ho{SSS  2%##~  C  Crt  C  C  C  C	
 	
 	
   $--hDDD  2%##~sscessss	
 	
 	
 ?$$&& 	JO"**+HIIIr%   c                 D	   ddddddddd	d
d
ddddd}i }	 | j         d         }t          |                    d          d                   }| j                            | j        d         |          }| j        j        rr|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#<   nn|d$k    r|D ]}|d         d         |d         d%         f}|                    |          }|s6|                    ||g g dd          }	|d&         }|d'         }|dk    rQ|d(         }| 	                    || j
                                                   |	d                             |           |dk    r$|	d                             d|d         i           |d#k    rd"|	d#<   n|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#<   ƌ| j                            d,          }|                                rt                               |           t%          |d-          5 }d. |                                D             |d/}t(                              ||           d d d            d S # 1 swxY w Y   d S # t,          $ r,}| j
                            d0| d1d2d34           Y d }~d S d }~ww xY w)5N	EDITSPACE
REMOVEPAGEEDITBLOG
REMOVEBLOGCOMMENTREMOVECOMMENTCREATEATTACHMENTREMOVEATTACHMENT	VIEWSPACEREMOVEOWNCONTENTSETPAGEPERMISSIONSSETSPACEPERMISSIONSEXPORTSPACE))r:   create)r:   delete)blogpostr  )r  r  )r  r  )r  r  )
attachmentr  )r  r  )r   r   )r   r  )r   
delete_own)r   restrict_content)r   restrict)r   
administer)r   exportrE  r  r   r  r   
targetTypeF)
permissionr   groupsrV  r   r   r   r8   r   r   r  r_   rt   )r_   rt   anonymousAccessTrV  
   operationKeysubjectrU  r7   spacePermissionsr:  	groupNamezpermissions.jsonr   c                     g | ]}|S r$   r$   r   r   s     r&   rv  z9ConfluenceAPIImport._dump_permissions.<locals>.<listcomp>  s    !G!G!G!!G!G!Gr%   )	convertedoriginalu@   Не удалось сдампить права доступа. zERR-0056
CmfProjectrJ  )rM  rN  )system_infointr   r2   get_space_permissions
space_datarJ   r>   
setdefaultr8  r3   r   r   project_dirr   r   r   r_  r   valuesr   rJ  r   rb  )rZ   mapping_typepermissions_dictconfluence_versionmain_versionpermissionsr  r   type_permr   r	  subject_typerI   permission_typepermission_filer   permissions_datarn  s                      r&   _dump_permissionsz%ConfluenceAPIImport._dump_permissions:  s    + ,$.$0#,#2&8&8*!3%7+?#7%:!.
 
$ l	!%!1)!<177<<Q?@@L/??& K
 $ Q5"- 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> ##"- 1 1J";/=";/?!I ),,Y77E  ! +66*/%'&().	  D )3G#*6?L#v--#*9#5++Hdo6W6W6Y6YZZZW,,X6666%00X--vwv.GHHHH%44,0[)7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& #.778JKKO%%'' +		/***ot,, /!G!G-=-D-D-F-F!G!G!G +$ $  		*A.../ / / / / / / / / / / / / / / / / /  	 	 	O%%XSVXX%!	 &         	s<   O<Q) =QQ) Q  Q) #Q $Q) )
R3!RRc           	         d}d}t          |d                   }|d         }|d         }	|d         }
|	dk    r |
dk    r|d         d	         d
         r9d | j                            |d|d          D             }||d         d	         d
<   |d         d         d
         r7d | j                            |d          D             }||d         d         d
<   | j        j        rV|d         D ]M}|d         dk    r?| j        5  | j                            |d                    ddd           n# 1 swxY w Y   Nd}|                    | d          }|	                                r<t          |d          5 }|                                }ddd           n# 1 swxY w Y   t                              |dd          }t          j        |                    d                                                    }||k    r| j        s||fS |d}nd}t          |d          5 }|                    |           ddd           n# 1 swxY w Y   |                    |          }|                    d          }|                    d          }|                    d          }|
dk    r| j        j                            d|	 d| d| d            |	                                r|                    |           n|	                                r|                    |           n|	                                r|                    |           n|	                                r|                    |           nj|	                                r|                    |           n@|	                                r|                    |           n|                    d!           ||fS )"u  
        Получает минимальные данные контента с информацией о последнем изменении
        и зависимыми объектами(комментарии, вложения).
        Вычисляет хеш данных и сравнивает его с хешем предыдущей проверки,
        если хеши отличаются, то помечает каталог контента .dirty для повторного дампа
        Fr_   r   rU  r  r:   r  ry  r  r   c                     g | ]}|S r$   r$   )r   r  s     r&   rv  z;ConfluenceAPIImport._check_content_hash.<locals>.<listcomp>  s%        'G  r%      )limitrA   ry  r  c                     g | ]}|S r$   r$   )r   r  s     r&   rv  z;ConfluenceAPIImport._check_content_hash.<locals>.<listcomp>  s%       #-J  r%   r'  	ancestorsr;   Nz.hashrC  T)rP  	sort_keyszutf-8rW  r/   r0   r1      Контент  '' (uc   ) удален в корзину. Он не будет сдамплен и импортированr  )r   r2   r  r  rJ   _folder_lock_folder_setaddr   r   r   r   r   r   hashlibmd5encode	hexdigestrefresh_dumpr   r   r3   rD   r   r   r  )rZ   rQ  content_hash_dirr  comment_expandis_new
is_updated
content_idcontent_titlecontent_typecontent_statuscommentsrB  ancestorcurrent_hash	hash_filer   content_jsonnew_hashr  doc_tmp_dirdoc_trashed_dirdoc_remote_dirs                          r&   _check_content_hashz'ConfluenceAPIImport._check_content_hash  sE    
''
(v * 6!!n	&A&Az"9-i8 
E O55"!-!&	 6     =E
#I.y9z"<0; K O66"! 7     @K
#L1)< $ A ' 4 A AH'833!. A A ,00$@@@A A A A A A A A A A A A A A A $--.B.B.BCC	 	(i%% ( vvxx( ( ( ( ( ( ( ( ( ( ( ( ( ( ( zz'zNN;|227;;<<FFHH8##D,=#:%%FFJ)T"" 	aGGH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##J//))(33!--j99 ,,Y77Y&& O"**U, U U- U UJ U U U  
 !!## 8##O4444!! 80000&&(( 8&&777~~ 1,,,, '')) 1''4444&&(( 1&&{3333!!4!000z!!s6    !D--D1	4D1	7FFF!II
Ir&  c                 T   |                     d          }|                    d           d}| d}| d}	t          d          5  d	d	d	d	g d
}
	 | j        5  | j        }| xj        |z  c_        d d d            n# 1 swxY w Y   	 | j                            ||||d          }|snO|D ] }|d         dvrt          |d                   }|d         }|
dxx         dz  cc<   |
d                             |           	 | 	                    ||||	          \  }}|
dxx         t          |          z  cc<   |
dxx         t          |          z  cc<   # t          $ rH}| j                            | j         d| d| d| ddd           |
dxx         dz  cc<   Y d }~d }~ww xY wnH# t          $ r;}| j                            | j         d| 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:   Tr  ancestors,history.lastUpdatedz%,children.comment,children.attachmentz2,extensions.inlineProperties,extensions.resolutionFr  r   r  allnewupdatedcontent_idsr  )r  r'  rA   r  r  r  r_   r   rL  r   rO  rM  rN  uC    Не удалось проверить хеш документа "r  ). rX  r#   rJ  rK  r  uV    Не удалось получить данные списка страниц: start=z, limit=z	, expand=rA  )r   r  r   _start_lock_startr2   get_all_pages_from_spacer   r   rH  r  r   r3   rb  r  r  )rZ   	space_keyr  hash_dirhash_stats_queuer'  r7  rA   page_expandr8  
hash_statsr  r   r:   r  
page_titler9  r:  rn  s                      r&   _check_page_hashz$ConfluenceAPIImport._check_page_hash$  s   #,,V44---0FFF"VVV5111 9	- 9	-! J.% ) ) KEKK5(KK) ) ) ) ) ) ) ) ) ) ) ) ) ) )) ODD!eKX] E  E !  % 6 6>1SSS$"%d4j//%)']
"5)))Q.)))"=188AAA6151I1I $ 0 ( .	2 2.FJ 'u---V<---&y111S__D1111( 6 6 6 O55#'> !X !X7A!X !XFM!X !XRU!X !X+5Z` 6   
 'x000A5000000006%62 ! 	 	 	O--> ! !!&! !05! !@K! !! ! $.!.#) .    EEEE	K.`   ,,,s9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	- 9	-s   HA=1H=B	HB	H	!F1*H,AF1AEF1
F-%>F(#F1(F--F10H1
G6;1G1,H1G66HH!$H!c                 J   |                     d          }|                    d           t          d          5  ddddg d}	 |                                }||                    |           n	 | j                            |dd	
          }|d         dvrW|dxx         dz  cc<   |d                             t          |                     | 	                    |||          \  }	}
|dxx         t          |	          z  cc<   |dxx         t          |
          z  cc<   nK# t          $ r>}| j                            d| d| ddd           |dxx         dz  cc<   Y d }~nd }~ww xY w0|                    |           d d d            d S # 1 swxY w Y   d S )Nr:   Tr  Fr  r   rK  rJ  r  r  r  r  rL  r   rO  rM  rN  u9   Не удалось проверить хеш папки rA  rX  r9   rJ  rK  r  )r   r  r   r>   r  r2   r  r   r   rH  r  r   r3   rb  )rZ   r  rU  folder_queuerV  r7  rX  	folder_idr;   r9  r:  rn  s               r&   _check_folder_hashz&ConfluenceAPIImport._check_folder_hashg  s}   #,,V44---5111 +	- +	-! J .(,,..	$ $$Y///.!_;;!>$ <  F h'/QQQ u%%%*%%%}-44S^^DDD)-)A)A( * *&FJ
 u%%%V4%%%y)))S__<))))  . . .O--fT]ffadff#-!,#)	 .    x(((A-((((((((.3 .D   ,,,W+	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	-sH   7F4'D)FBD)(F)
E134E,'F,E11FFFc                    | j                                         }d| _        | j                                        | _        t                      | _        | j                                        | _        | j	        }|d         }t          |d          d          }|                    d           t          j                    }g }	t          |          D ]z}
| j                            | j        d|
dz    ||||d	
          }|	                    |           |                                 | j        j                            d|            {|	D ]}|                                 ~| j        j        r| j                                         }| j        D ]}|                    |           |                    d            g }t          |          D ]z}
| j                            | j        d|
dz    ||||d
          }|                    |           |                                 | j        j                            d|            {|D ]}|                                 t          j                    |z
  }d}d}d}d}g }|                                so|                                }||d         z  }||d         z  }||d         z  }||d         z  }|                    |d                    |                                o|                                D ]}|                                r|j         !                    d          r1|j"        }||vrP|#                    | d          }|$                    |           | j        j        %                    d| d           | j        j                            | j&         d|dd| d| d| d
           | j        j                            | j&         d|            |S )Nr   r  r   z/hashTr  z_check_page_hash r   )rT  r  rU  rV  r  r  z_check_folder_hash )r  rU  r\  rV  u   Запущен r  rL  rM  rN  rO  r.   r1   r,  u    был полностью удален, либо перемещен в другое пространство. Каталог помечен '.remote'uD    Проверка хеша контента выполнена за rY  u8    сек. (всего/новых/обновленных: r   r}  u)    Ошибок хеша контента: )'ri   r  rR  rh   LockrQ  rN   r0  r/  rm   r   r  r]  r^  r  r  rZ  r   r  r3   rD   r   r  r2   rJ   r  r^  r  r>   extendr  r  rt   r  stemr   r   r   r  )rZ   r   r  	dump_datarV  r  rT  rU  ri  r  r  r  r\  r;   threadsthreadro  r  obj_allobj_newobj_updatedrO  rX  content_dirr;  content_remote_dirs                             r&   _check_hashzConfluenceAPIImport._check_hash  s     :++-->..0055 N//117%L	5=///00%%%   {## 	A 	AA>((,0Q00!* ( ((8	  ) 	 	D NN4   JJLLLO"''(?(?(?@@@@ 	 	DIIKKK ?  	:++--L* ) )  ((((T"""G;'' H H..26q1u66$,$,(4,<	  / 	 	 v&&&&++,Ff,F,FGGGG!    2%"((** 	:)--//Jj**Fz%((Gz%((G:i00Kz-8999 #((** 	: $++-- 	 	K%%'' ;+;+D+DW+M+M $)J,,%-%6%6*7M7M7M%N%N"##$6777&..?j ? ? ?   	##~ a acet a a>Ea aHOa aR]a a a	
 	
 	

 	##t~$h$h`f$h$hiii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                      }|	                                D ]}|
                                r|j                             j                  r6|                    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-  rC  c                 D    h | ]}t          |j                           S r$   )r   rI   )r   urZ   s     r&   	<setcomp>z5ConfluenceAPIImport._collect_users.<locals>.<setcomp>  s(    #Q#Q#QaC$-(8$9$9#Q#Q#Qr%   NrU  rV  rW  r   Fr[  )r3   r  r  rN   r   r   r   r   r   r  r  rt   r  r  r1  rI   r   unlinkrJ  list
differencer8  r   )rZ   r  r  current_userscurrent_user_idsrh  r   new_user_idsr  r7  r   
diff_usersr4  s   `            r&   _collect_usersz"ConfluenceAPIImport._collect_users  sB   t~mmmnnn 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'')) 	$ 	$G>>## w|'<'<T=Z'['[  )),77J  "" $*%% 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$F..F2	5F2	,HHH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   z
/info.jsonr   )r3   r   r   r   r   r   )rZ   project_keyr  r   projects        r&   _get_projectz ConfluenceAPIImport._get_project+  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          }|                                D ]}|j                            d          r|                    d          }|                                s$| j         j                            d| d           jt          |d          5 }t                              |          V  d d d            n# 1 swxY w Y   d S )Nry  )r/   r.   rD  uN   Отсутствует файл info.json в каталоге проекта ''rC  )r3   r   r   r  rt   r  r   rD   r   r   r   r   )rZ   projects_dirr  rj  r   s        r&   _get_projectsz!ConfluenceAPIImport._get_projects1  s:     88::CCJOO'//11 	# 	#K(()<== #,,[99I##%% &..sepsss   i%% #iill"""# # # # # # # # # # # # # # #	# 	#s   =C&&C*	-C*	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                   }n<# t          $ r/}j                            d|  d| ddd	
           Y d }~d S d }~ww xY w|d         d         d         D ]'}| d                             |d         dg d           (| d         D ]&}|d         r ||          E d {V  |d         V  'd S )N	isCheckedry  	documentsr_   u'   Документ не загружен rA  zERR-0015r#   rJ  rK  r:   r   Tr_   r  ry  )_get_documentr   r   r   r3   rb  r   )r  r  doc_dumprn  childrx  rZ   s        r&   rx  z=ConfluenceAPIImport._load_selected_objs.<locals>.get_childrenD  su     K( J' h	 #11$w--2H2H2U2UW_`dWeffHH       O--S(SScSS#-!.#)	 .     44444  &j1&9)D h hEZ(//uT{QUce0f0fgggg!*- & &% &+|E7;;;;;;;;;+%%%& &s   <A 
B$BBimport_settingsrv   ra   r   r  Nc                 "    g | ]}|d          
|S r  r$   r   setting_objs     r&   rv  z;ConfluenceAPIImport._load_selected_objs.<locals>.<listcomp>]  s#    ggg;kZeNfg;gggr%   ry  T
root_pagesr  archived_pagesr   r  r_   r   ry  uc   Не удалось вычислить выбранные документы для проекта u4   , скорее всего он не сдамплен)r   r   r   r3   r`   r  r   rN   r|  r1  r>   r   r   rD   r   rO   )
rZ   r{   rootselected_spacesr{  r*   resultr   r  rx  s
   `        @r&   _load_selected_objsz'ConfluenceAPIImport._load_selected_objsA  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   |                    |          pi S )Napplinks.jsonr   )r3   r   r   r   r   r   r>   )rZ   r  r   r   applinkss        r&   _get_applinksz!ConfluenceAPIImport._get_applinks|  s    O5577@@QQ	)T"" 	$ayy||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$||J''-2-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  rW  FrO  )cmf.utilr  r2   get_applinksshort_str_encr3   r   r   r   r   rJ  )rZ   r  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                             |          }|                    d          }|                                r|                    |           n|                    d           || _        d }| j                            d          }|                                rWt          |d          5 }t          	                    |          }d d d            n# 1 swxY w Y   |
                    d          }d }t          j        ;|&|dk    r3t          j        dk    s|t          j        k     rd| _        t          j        }|p|pd| _        | j                            |          }	|	| _        g |	d	<   | j                            |          D ]#}
|	d	                             |
d
                    $|	d	         st)          d          g |	d<   | j                            |          D ]#}
|	d                             |
d
                    $| j        j                            | j         d           |                                  t          |d          5 }t7          |          |	d<   | j        |	d<   t                              |	|           d d d            n# 1 swxY w Y   |                    |           || _        | j                            d          }| j                            d          }|                    d           t;          j                    }| j        r'| j        j                             | j         d           | j        j                            | j         d           | !                    |	|           | xj"        | #                    |          z  c_"        t;          j                    |z
  }| j        j                            | j         d|dd           | $                    ||           d S )Nr/   Tr  rD  rC  rW   r   r   r  r_   uJ   Пустой проект, возможно нет прав доступаr  u8    Дамп прав доступа (Разрешения)wr   r  uA    Дамп всего контента будет обновленuD    Проверка хеша контента пространстваu1    Дамп контента выполнен за rY  rZ  )%r  r   r   r   r   r  r  r   r   r   r>   rU   rV   rT   rW   r2   	get_spacer  get_root_pages_from_spacer   CmfError get_all_pages_from_space_archiver3   rD   r   r  r#  r   rJ  r]  r^  r6  r   rk  r@   r  rw  )rZ   rT  r  project_dirty_dirprev_dump_last_page_verrj  r   current_dumpnew_dump_last_page_verr   r:   r  ri  ro  s                 r&   _dump_spacezConfluenceAPIImport._dump_space  s   '00;;'33H== 	3 12222##T#222,"&$--k::	 	Mi%% ,#yy||, , , , , , , , , , , , , , , '3&6&67K&L&L#!%7C'/+r11CrII2V5``` '+D#%+%P""8"X<S"XWX )))44 lO==iHH 	3 	3D,&&tDz2222\" 	ighhh"$ODDYOO 	7 	7D"#**4:6666##t~$o$o$oppp   )S!! 	 Q,,E&M*.*AE&'IIeQ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 
 	!!+...&$--k::	#,,[99%%%   	AO"**dn+++  A  A  A 	##t~${${${|||))) 	4//999  2%##t~$x$xhj$x$x$x$xyyy 	K22222s$   7CC"%C"8JJ#&J#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
          | _	        | j	        
                    d           | j        D ]L}| j                                        r d S t          |d         d                   }t          |d         d                   }t          |d         d                   }d| d| d| _        	 | j        j                            | j         d| d           |                     |           | j        xj        dz  c_        | j                            d           t'                       # t(          $ rD}t+                       | j                            | j         d| d| ddd           Y d }~Fd }~ww xY wd S )Nr  rv   ra   r   r  Tc                 "    g | ]}|d          
|S r  r$   r  s     r&   rv  z4ConfluenceAPIImport._dump_spaces.<locals>.<listcomp>  s$    lllS^_jSkllllr%   ry  c                 $    g | ]}||d          dS )r_   )r   r_   r$   ru  s     r&   rv  z4ConfluenceAPIImport._dump_spaces.<locals>.<listcomp>  s$    #n#n#ncCs4y$A$A#n#n#nr%   ry  r  r   r_   r  original_namez[SPACE 'r.  z)]u$    Дамп пространства 'r~  r   r   u3    Ошибка дампа пространства ''. zERR-0026r  rJ  rK  )r   r3   r`   r  r   r2   get_all_spacesr   r   r  r  r  r   r  rD   r   r  rL   r   r   r   r  rb  )rZ   r{   r  r  space_idrT  
space_namern  s           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  O==??HHTT.../ 	 	K((** ;u-d344HK.u566I[/@AAJB	BBhBBBDN&++t~,p,pcm,p,p,pqqq  +++11Q611$$t$444   ))~nnZdnnilnn))%	 *        #	 	s   6A=G44
I>9H==I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_   rt   r   r   r   rD  r   rW  r   r   )r3   r   r   r   r  r2   get_all_groupsrJ   r   r   rL   r   r   rJ  get_group_membersrI   )rZ   
groups_dirr   r   	group_dir	data_filer   	users_dirall_users_dirr   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                 p   | j         j                            d           | j                                        | _        | j                                                             d          }t          |d          5 }t          
                    | j        |dd           d d d            n# 1 swxY w Y   | j                            dd          rdnd	}| j        d
         }| j        d         }| j         j                            d| d|            | j         j                            d| d           d S )Nu-   Сведения о системе Confluencezsystem_info.jsonr  r   Fr[  isCloudCloudServerrE  r   zConfluence r   zConfluence URL 'r~  )r3   rD   r   r2   get_system_infor  r   r   r   r   rJ  r>   )rZ   system_info_filer   confluence_typer  confluence_urls         r&   _dump_system_infoz%ConfluenceAPIImport._dump_system_info(  sz   ##$STTT?::<<?<<>>GGHZ[["C(( 	IAIId&!%IHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I &*%5%9%9)U%K%KY''QY!-i8)%0##$X/$X$XDV$X$XYYY##$H~$H$H$HIIIIIs   :$B**B.1B.c                 6   |                                   t          t          dd          | _        | 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 )NIMPORT_REFRESH_DUMPFd   u   Свободно места: r   u$   Скачаем данные из API
load_usersTu'   Дампим пользователейr   uA   Не дампим пользователей из-за опцийr  r   r   r   )ra   )r  getattrrU   r6  r3   r   shutil
disk_usagerD   r   r`   ra   r>   r   r2   get_all_usersr  rB   r  r  r  r   rc  )rZ   download_pathtotalusedfreefree_percentuser_cntr   s           r&   download_dataz!ConfluenceAPIImport.download_data7  s       $F,A5II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   Fr  TDONE)rt   r   r   r	  r  )r_   ru   r   r   u   [Страница ID: z] r)  r~  
extensionsfileSizei    (z.2fz MB)u   Скачивание : ')timeoutu	   Файл u    сохранен в 'r  u"   Ошибка скачивания r  zERR-0027r  rJ  )rL  rM  rN  ext_href)r   r3   r  r>   r    r  r   rt   r   r   r	  r   r   r  rD   r   r2   download_filerU   IMPORT_DOWNLOAD_TIMEOUTr  r   r   rc  r   r  rb  r  )rZ   download_queue
done_queuer  download_job_iddownload_objr"  file_urlr   ext_id_splitpage_id_msg	file_sizefile_size_mbrn  s                 r&   _download_file_workerz)ConfluenceAPIImport._download_file_workerS  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)rt   r   all_attachments.zipry  r   r  r   r   r   r   r   u3   Нет вложений для скачиванияu'   Скачивание вложений: r  )r  r  r  u    Запустили задачу --r   ru   r  r  uC   Закончили скачивание файлов, ошибок ) ri   r  r3   load_fieldsr   r   r   r   r  r   r  r    r  countr   rD   r   r  rm   rh   r  r  r  slistr  r_   r   r  r  r  r   r>   )rZ   r  r  r@   main_filterprojects_pathattachment_countfiltersr   rT  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   rZ   r   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 )Nr   c                 R	   	 | 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 ]} 	||           |j                             dd           S #  tA                       j         !                    d%
d&          d'|  d()           Y nxY w	 j                             dd           d S # j                             dd           w xY w)*Nr  draftuJ   Не обрабатываем черновики комментариев r  	processedr   r_   r   r   ru   r   r   r3   **r  r  rU  rV  r  createdDater  rT  whenrR  r  ra   editorr   r)  c                 ,    g | ]}t          |          S r$   r   r   xs     r&   rv  zMConfluenceAPIImport._process_obj_comments.<locals>.create.<locals>.<listcomp>
  s    3\3\3\qCFF3\3\3\r%   r  locationinlineT
resolutionresolvedclosedr   ry  u7   Ошибка обработки комментария r   r   zERR-0028rL  r   )"r3   rD   r   rc  r   r   r    
CmfCommentr>   r   r  r   rI   	cmf_ownerre   anonymous_usercmf_created_at
cmf_authorcmf_modified_bycmf_modified_atr   _convert_mentions_convert_linksr  rR  ry  r   r  tree_parentr  r  r   r  rb  )r  r!  r   cmf_commentr  r  	view_soupeditor_soupr  r  r   r   rZ   s            r&   r  z9ConfluenceAPIImport._process_obj_comments.<locals>.create  s2   >Ex(G33.66  8N  EL  8N  8N  O  O  Ov O,,YDDDDDu !% 6 = I\\WUY]\\F"("3"7"7vO`Na"7"b"bK" ;+F n O,,YDDDDDm ' 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& 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- -9Q(&R	 	R&)r  r  )r  )rZ   r   r   r  r  s   ``` @r&   _process_obj_commentsz)ConfluenceAPIImport._process_obj_comments  s    ))#f+66 A	$ A	$G?E ?E ?E ?E ?E ?E ?E ?E ?E@ F7#####CA	$ A	$r%   c              #      K   t          |                              d          }|                                D ]A}|                                s|j        }|dk    s|                    d          r:||dV  Bd S )NrB  r  r.   )r"  r   )r   r   r  is_filert   r  )rZ   obj_pathattachments_pathr   r"  s        r&   _get_obj_attachmentsz(ConfluenceAPIImport._get_obj_attachments!  s      >>22=AA)1133 		 		I$$&& !I111Y5G5G5P5P1&&     		 		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  rE  rF  r  r  1r   r   r_   )r  	fullmatchr   r   r   r   r   r   r  r  r   parse_qsqueryr>   )r"  r  
file_matchfile_idfile_versionr   attach_info_listattachrE  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}g }d         D ]E}t          |d                   }|                     j        j        j        j         d|            F|rRt
          j                            ddgdd|gg d	g
          }|D ]}|                                 t                        fd}	 
                    d                   D ]8}
| |	|
d         |
d                   z  } j                            dd           9|S )Nr   rB  r_   r   r   =r   zNOT INr   r   c                    d}g d}d }	                      | d                   }|r|d         nd}|r|d         n| }|r<j        j        j        j         d| }t          j                            ||          }|s.d	d
|gdd
gg dg}	t          j                            |	|          }|s9t                              |j        d          }|                    d           |j        rY|r||_	        nd|_
        j        |_        |r|                    d          r|d         }
|
                    d          |_        |
                    d          r>|
d         d         dk    r,                    |
d         j                           |_        nt"          j        |_        |j        |_        ||_        t+          |d          5 }|                    |                                dd           d d d            n# 1 swxY w Y   d|_        |                    d           |r|d         d         }|j        |k    sJ t3                       n# t4          $ rB t3                       j                            d| d| d|j         d| d	d !           d"}Y nCt8          $ r7 t;                       j                            d#| d| d$d !           d"}Y nw xY w|S # |c cY S xY w)%Nr   )r   r   url_preview_imgurl_previewr   r_   r)  r   r   r  rt   r8  r   r   r8  Nr  Trt   r   r3   r   r   rE  r  rT  rU  rV  rbFsmart_backup
mark_dirtyr  r  u   Размер файла 'r.  u@   ) не соответствует размеру из меты: z	 bytes / z byteszERR-0029r   r   u;   Не удалось обработать вложение 'r}  )r6  r3   r   r   r    CmfAttachmentr>   r   r   r   embeddedr   r{  r  r   rI   r  re   r  r  r  r   upload_filer   st_sizer   AssertionErrorrb  r   r  )r"  r   errorattachment_fieldsr  attachment_metaattachment_idattachment_nameattachment_ext_idattachment_filterattachment_versionr   file_size_metar   r   rZ   s                r&   _process_attachmentzIConfluenceAPIImport._process_obj_attachments.<locals>._process_attachment\  s8    E! ! ! JP"&"B"B9cRXk"Z"Z9H P 5 5b>M"\/'":":S\  +/?+A+H+T(g(gXe(g(g%!'!5!9!900 ": " "J " 	o6!3/---)%
 "(!5!9!900 ": " "J " 6!'!5!5,%#'?(,	 "6 " "J OOO555-  D % 3,=
)).2
+)/J&& 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/9/D
,5D
2i.. !"..FFHH)-', /                  26J.OOO555& D)8)Fz)R)1^CCCC!   ))i i iM i i5?5Gi iR`i i i	 *       ))vRavvfsvvv *   
  us\   GI +H8I HI HAI K( A	K#!K( #=K# K( "K##K( (K/r   r"  r   r  r  )r   r   r3   r   r   r    rC  rq  r  r   r*  rc  )rZ   r   r   r  attachment_ext_idsatt_datar  attachments_to_deleter  rQ  attachment_datas   ```        r&   _process_obj_attachmentsz,ConfluenceAPIImport._process_obj_attachmentsG  s|   M* 	` 	`H$((F%%)?)F)R&^&^V\&^&^____ 	$*$8$=$=sF+x);<... %> % %! 4 $ $
!!####LLL]	 ]	 ]	 ]	 ]	 ]	 ]	~  $88VEE 	@ 	@O)),,  F O$$\;????r%   c                    |d         d         d         }|d         d         d         }|d         d         d         }|s|s|S |s|rd}	 t          |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                       }n<# t          $ r/}|}| j                            d| d| d|           Y d }~nd }~ww xY w|S )NrR  storagera   r  r  z<p></p>r   uC   Конвертация текста из atlassian разметкиatlas_doc_formatrQ  )soupsubobjuT   Не удалось конвертировать разметку страницы "r   r  rE      (версия rF  r}  zERR-0031r  r[  r)  c                 ,    g | ]}t          |          S r$   r  r  s     r&   rv  z9ConfluenceAPIImport._convert_doc_text.<locals>.<listcomp>  s    DDDqCFFDDDr%   uA   Ошибка обработки текста документа. rA  zERR-0039)&r   r2   rJ   r3   rD   r   r   r   _convert_atlas_docr   r>   rb  r  _convert_status_convert_status_handy_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_livesearch_convert_recently_updatedr   _convert_table_filter_convert_pivot_table_convert_tabs_convert_inline_comments_convert_excerpt_convert_detailsr  rR  ry  )rZ   obj_datar   r[  rX  r  r  storage_soupr#  r$  	atlas_rawexception_textr   rn  s                 r&   _convert_doc_textz%ConfluenceAPIImport._convert_doc_text  s   6"9-g6'0&!(+G4 	 	K  	 	D5	(&99L%dF33I'77K$ 	^^O*//0vwww $

8F+;<N+OPW+X Y YI++C91EI^d+eeee  ^ ^ ^ 'X  G  K  K  LS  T  T  'X  'X  'XN||I.. ]&*\HY<OPX<Y*\*\*\\O--nY\-]]]]]	^ ""3	;???  K888&&y+>>>""3	;???  i===##CK#OOO$$S)[AAA%%c9kBBB))#y+FFF!!#y+>>>**3	;GGG))#y+FFF  K888i555$$Y<<<**3	;GGG Y<<< &&y,???%%i>>>y+666))#y999!!)[999!!#y+f!MMM77DDIN,CDDDEEDD 	 	 	DO%%aTWaa[_aa% &        	 s?   
<N A*C2 1N 2A*EN EH7N 
O!%OO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   )rZ   r   versions_file_pathr   r   s        r&   _get_versionsz!ConfluenceAPIImport._get_versions
  s      !T"9"9"9::$$&& 	*($// *1 * *C**S//))))** * * * * * * * * * * * * * * ts   "A((A,/A,rk  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 rF  r   r+  r
  r  rE  r  r	  r  rT  rU  rV  message%Y%m%d%H%M%S%fCLOSEDstatus_typerQ  r  r  r]  Tr   u@   Ошибка обработки истории страницы z): zERR-0033rB  r   )*r3   rD   r   r   r   r    CmfDocumentHistoryr>   r   rc  r  r  r   rI   r  r  r  re   r  reasonofficial_numberofficial_dater  ra   strftimecmf_versiondoc_versionworkflowget_default_statusr  rb   cur_workflowry  r   has_publishedr  r   r   r   r  rb  r@   )version_datacmf_document_historyr   r   version_contentrk  r   rZ   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   r8  T)r   include_deletedTEXKOM_db_deleter   )r  Fr)  )r   r  cmf_deletedr   r   )r    r  rq  r  r   	enumerater|  rU   $IMPORT_CONFLUENCE_PROC_LAST_PAGE_VERr  r   cur_workflow_versionr   )
rZ   rk  r   r  dhrG  version_countrE  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                    |                      |          }|                                sE|                    d          }|                                rd| d}nd| d}t          |          |                     d          }|                                st          d| d          t	          |d          5 }t
                              |          }d d d            n# 1 swxY w Y   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   g |d<   |                     d          }|                                rEt	          |d          5 }t
                              |          |d<   d d d            n# 1 swxY w Y   |S )Nr1   r,  un    был полностью удален, либо перемещен в другое пространство.u-   Не найден каталог дампа 'r~  rD  u)   Не найден файл данных 'rC  labelsr  rw  r:   )r   sizery  rB  r  )
r   r   r   FileNotFoundErrorr   r   r   r   r   r   )docs_dirr*   r  rG  	error_msgdoc_filer   reslabels_file	label_strrz  r   attachments_files                r&   r  z!ConfluenceAPIImport._get_documentp  s   ##F++~~ 		/$00;;N$$&& W]f ] ] ] 	
 WGVVV	#I...##K00   	]#$[PX$[$[$[\\\(C   	A))A,,C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 H&&}55 	@k3'' @1!" @ @IM((I)>)>????@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ %%l33
 	Sj#&& S!		!#)uc%jj+Q+Q"RJS S S S S S S S S S S S S S S  M"++,>??""$$ 	2&,, 2%)YYq\\M"2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
sH   ;C""C&)C&+9E11E58E552G33G7:G7<I&&I*-I*c              #      K   t          |                              d          }|                                D ]9}|                                r#|j                            | j                  s|V  :d S )Nr  )r   r   r  r  rt   r  r  )rZ   
space_pathdoc_dirsr  s       r&   _get_doc_dirsz!ConfluenceAPIImport._get_doc_dirs  s|      
##,,[99'')) 	 	G~~ (=(=d>[(\(\ 	 	r%   r     c              #      K   t          | d          }d}|                     |          D ]K}|dz  }||k     r|||z   dz
  k    r d S 	 |                     ||j                  V  <# t          $ r Y Hw xY wd S )Nz
/documentsr   r   )r   r  r  rt   r   )rZ   r  offsetr'  r  enum_dirr  s          r&   _get_documentsz"ConfluenceAPIImport._get_documents  s      ;22233))+66 	 	GMH&  &5.1,,,((7<@@@@@@   	 	s   
A((
A54A5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"      ==1======r%   )sumr  )rZ   r  s     r&   _count_space_documentsz*ConfluenceAPIImport._count_space_documents  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 r  r$   r  s     r&   r  zCConfluenceAPIImport._get_offsets_for_execute_doc.<locals>.<genexpr>  s"      LLaLLLLLLr%   c                     g | ]	\  }}||f
S r$   r$   )r   r  r'  s      r&   rv  zDConfluenceAPIImport._get_offsets_for_execute_doc.<locals>.<listcomp>  s     HHH}vuFE?HHHr%   )r  r  r  r|  r   r3  )	rZ   r  r'  offsetscurrent_offset	obj_countr  r  r  s	            r&   _get_offsets_for_execute_docz0ConfluenceAPIImport._get_offsets_for_execute_doc  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   Fr  Tr  r  r   r  r_   r}  r   r?  r@  u3   Обработка версий документа rA  r   )r   r  r  r   r  r  u4   Документ не найден в системеuQ   Документ изменен пользователем, пропускаем u@   Ошибка обработки версий документа zERR-0084r#   rL  rM  r   )r   cmfutildisable_aclr>   r3   r  rU   r  rD   r   r   r   r    r#   r   r   r  r  rb  r  )
rZ   	obj_queuer  r  r   re  rf  r   r   rn  s
             r&   _process_doc_versions_forkz.ConfluenceAPIImport._process_doc_versions_fork  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%r  c                 $   g }|D ]}|d         }d| j         j        j        j         d| d}t          j                            ddd| dg          }|r|                    |           f| j                             d| d| d	d
|           |S )u;  
        Возвращает список тегов документа

        Args:
            content_obj (CmfDocument): объект документа
            labels (list): список тегов страницы Confluence

        Returns:
            list: список тегов (CmfTag)
        r_   r   r   r   r   r   u   Не найден тег 'r.  r}  zERR-0017r  )r3   r   r   r    CmfTagr>   r   rb  )rZ   content_objr  tagsr  label_id
tag_ext_idr   s           r&   _get_obj_tagsz!ConfluenceAPIImport._get_obj_tags  s      	 	ET{HWdo4;GWW8WWWJ-##Hf>O*>O>O>O+P#QQC C    ))FFF8FFF)# *    
 r%   c                    | j         j        j        j         d|d          }t          j                            |dg          }|s$t                              |d|| j         d          }|d                             d	          r2| j                            | j        j        |d         d	                   }n| j         j        j        j	        }|j
         d
| d| d|_        |                    d           dS )u#  
        Создает комментарий со ссылкой на оригинальную страницу в Confluence

        Args:
            content_obj (CmfDocument): объект документа
            content (dict): данные страницы Confluence
        z
::comment:r_   r   r  r   T)r   	log_levelr   r3   r   r  webuiu4    импортирован из Confluence: <a href="z" target="_blank">z</a>"r   N)r3   r   r   r    r  r>   r2   r  r   ext_urlverbose_namer   r   )rZ   r  rQ  comment_ext_idr  r   s         r&   _add_external_link_commentz.ConfluenceAPIImport._add_external_link_comment	  s2    !O29E``QXY]Q^``#''!8 ( 
 
  	''"%? $ (  G 8  )) 	9?--#!'* DD
 ?)08D' < << <04< < < 	 	&&&&&r%   c                    d}t          d          5  t                                          5  	 |                                }|dk    rn/| j                                        rn|d         }|d         }|d         }	| j                            |	d	          }
t          t                    |
         }|	 d
| d| d}	 | 	                    |d         |          }| j        j
        j
        j         d| }| j                            d|            |d         o| j        j        dk    }|r|j        j        }n.|                    |dg          }|s ||| j        d|          }|j        sH| j                            | dt$          j        d           	 | j                            dd           |d         d         }| j        j                            d| d|            |d         dk    rt.          j        }n |                     || j                           }|s%| j        j                            d| d|            |d                             d          }|r_| j        j                            d | d|            |d         dk    rt.          j        }n#|                     || j                           }n|}|d         d!         d"         }| j        j                            d#| d|            |d         dk    rt.          j        }n |                     || j                           }|	d$k    r|j        j        }n| j        }|                    tA          j!        |d%                   &          }||||||||d         d!         d'         |d         d(         tE          |j#        d)k              ||d*}|j$        s|%                    d+d,g           |D ]}tM          ||||                    |j'        r|(                    d-           | )                    ||           |	d$k    r|| *                    ||          z  }| +                    ||           tY          |j-        j        .                    d.          d d/                   |_/        | 0                    ||d0                   |_1        d|_2        | 3                    ||          |_4        |j'        r|(                    d-           |j$        r| 5                    ||           tm                       n# tn          $ rP tq                       | j        9                    d1| d2d3|
4           | j        :                                 |d5z  }Y ntv          $ rS tq                       | j        9                    d1| d6| d7d3|
4           | j        :                                 |d5z  }Y n[tx          $ rO tq                       | j        9                    d1| d3|
4           | j        :                                 |d5z  }Y nw xY w| j                            dd           n # | j                            dd           w xY wK|=                    |           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 )8Nr   Fr  Tr  r_   r   rU  r#   r-  r.  r}  r  r   u   Обработка is_homepager  r   r  rt   r3   r   r   u|    был изменен пользователем. Изменения из импорта не будут примененыrG   rV  r)   r  r  r  u"   Определяем автора r   rV  u   Не найден автор r  u(   Определяем владельца r  rT  =   Определяем последнего редактора r:   r  r  r  r  r  )rt   r   r  r  r  r  r  r  r  cmf_archivedr   r  r
  r  r   r  r  r  u   Ошибка создания uS   . Попробуйте очистить дамп и повторить импортzERR-0018r  r   u^   . Попробуйте отменить импорты связанные с проектом uY   , чтобы он удалился из системы и повторите импорт)>r   r  r  r>   r3   r  rX   varsr    r  r   r   r  root_parent
class_namedescr_documentra   r   rB   r  rc  rD   r   re   r  r   rI   r   	scheme_wfdefault_document_workflowr?   r  r   get_status_typerb   r  r9  r  setattrr   r   r   rV  r%  r  r  r  r  r  r  full_screenry  r   r  r   r  r  rb  
log_detailAttributeErrorr   r  )rZ   r{  archive_folderr  r  r  content_datar;  r<  r=  content_model_namecontent_modelcontent_descriptionrQ  r   wiki_project_homepager  authorr  r  r  modifiedr  r  r  content_dictr  s                              r&   _process_document_forkz*ConfluenceAPIImport._process_document_fork9	  s   5111 e	# e	#73F3F3H3H e	# e	#cF(}}6))?,,.. )$/
 ,W 5+F3%)%8%<%<\=%Y%Y" $V-? @)5&X&X&X&X:&X&X&X#TF"00i1H*UUG $ 6 = IYYZYYFO''C.ACC  
 %]3 H ,7<G * - &-&<&B&3&7&7#)$,: '8 ' '  + *7-%2+/?04'-	+ + +K '6 !++* i i i")/&*	 ,    !d O,,ZEEEEa %Y/<FO*//0tUh0t0tlr0t0tuuuf~44%&%5

%)%5%5fT]6K%L%L
% x.667vWj7v7vnt7v7vwww#I.229==E /.334}_r4}4}v{4}4}~~~ =K77()(8II(,(8(8t}9M(N(NII$.	&y1-@FHO*//  1R  qD  1R  1R  HP  1R  1R  S  S  S';66*+*:*.*:*:8DM;R*S*S#v--#*#4#N#'#8%88$8$HQYIZ$[$[ 9  F
 !.")$,"(%.&0+:+29+=m+LV+T*1)*<]*K(,V-?8-K(L(L"(+2$ $L '- @#//v???+ E ES,s2CDDDD"- ;#((T(:::..wDDD#v--$"?"?W"U"UU 22;HHH25k6Q6W6`6`aq6r6rsvtvsv6w2x2x/+/+=+=k7S[K\+]+](26/+/+A+A';+W+W(&1 ?',,,>>>&- R ;;KQQQLLLL( 	  	  	  NNNO--m9L m m m#-!3	 .    O..000aKFFF% 
  
  
  NNNO--s9L s sw~s s s $.!3 .    O..000aKFFF        NNNO--N9LNN#-!3 .   
 O..000aKFFF  O,,ZEEEEDO,,ZEEEEGcFH NN6"""Ke	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	# e	#s   Z3BZ?CT-Z7M4T-+Y-AX9YAX9Y!AX96Y8X99Y<ZY55ZZ3Z	Z3"Z	#Z33Z7:Z7c                 H   d}ddg}	 |                     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|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>
        drawiozdrawio-sketchimgdata-macro-namer  zdiagramName=([^|]+)data-macro-parametersr   rt   r   u#   Диаграмма с именем u@    не найдена во вложениях документа zERR-0019r  r   r   rt   r   %.pngr   r  100%zdiagramWidth=([^|]+)zdiagramHeight=([^|]+)rt   	attach_idwidthheightimg_srcr)  r   html.parserr_   zdrawio-macro-content-data-macro-iduU   Неудалось конвертировать диаграмму из текста r$   )r
  r  r  r  r   r    rC  r>   r3   rb  rt   ra   r_   r   r   r   formatfindreplace_with
currentTag)rZ   r   r#  r$  TAG_TMPL
macro_namer   matchr"  r4  
attach_imgr  r  r  r   
drawio_tags                   r&   rc  z#ConfluenceAPIImport._convert_drawio	  s    0
$	H"++E:KZ9X+YY    	"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<Mz;Z"4"["[  J!d3g39UdKe3g3g-hii "//====   B	HO%%  'L  J  'L  'L3=3 & H H H H H Hs   G2G< <"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  rH  u.   Не удалось получить svg из zERR-0002r  z{})paramsumlsvgr  )r
  r    r#   convert_uml2svgr   r_   ra   r3   rb  r   r  r  )	rZ   r   r#  r$  TMPr   r  new_tagold_tags	            r&   rb  z%ConfluenceAPIImport._convert_plantuml
  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                  }|                                }|                    d            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:  c                     | d         S )Nr   r$   )r*  s    r&   r  zAConfluenceAPIImport._create_msoviewer_macro_tag.<locals>.<lambda>x
  s
    !E( r%   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
pagesCountFrO  r  )r
  r  r:  plugin_titler  )r  r_   r   r:  get_fullviewsortr  r   r   r   r>   r   r  r   r   r  )rZ   r   r4  plugin_typeTMPLr  r:  fullview_pagesr   r  fullview_pager:   param_typesr
  r  s                  r&   _create_msoviewer_macro_tagz/ConfluenceAPIImport._create_msoviewer_macro_tagH
  s   'R 	-.///I	f455,,.. 2 2333"+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 r8  r   Nr   r   params     r&   r  z9ConfluenceAPIImport._convert_msoviewer.<locals>.<genexpr>
  s0      *g*g55;;sA+>+>*g*g*g*g*g*gr%   |rt   r   rt   &   Не найдено вложение 'r~  0   Ошибка обработки макроса '   ' в документе 'r.  r_   r}  r\  rA  ERR-0012r  N)r
  r>   r   r   r    rC  r   r   r  r-  rt   r  ra  r  r  r3   rb  )rZ   r   r#  r$  r[  macro_types
macro_typer   original_paramsr"  r4  r  rn  
error_texts                 r&   rd  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  ry  r  falser  r  r)  F50none)isShowChildrenr!  childrenAmountrG   includeViewTypeisOrderByDeskc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r8  r   r   Nr   r   r2  s     r&   r  z:ConfluenceAPIImport._convert_childpages.<locals>.<genexpr>  ]       $ $u{{3**++q00 C##0000$ $r%   r4  rL  TrB  r,  rG   firstrC  depthstyle
headerTypeexcerptTyperQ  rA  simplezrich contentrD  r'  rt   r  r  r   creationr  sortTypereverserE  r:   r   
documentIdtrue,:rP  
separatorsr  &quot;)r*   doc_namer
  r<  cmf_convertedr   r  N)rS   r
  r>   r   r_   r   r   r   rt   r   r  r   r   r   r   r  r  )rZ   r   r#  r$  r)  r   r^  macro_iddata_macro_parametersr
  macro_parametersview_type_mapsort_type_mapr]  r  r  s                   r&   re  z'ConfluenceAPIImport._convert_childpages
  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           
      P   d}|                     ddi          D ]	}|                    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  r)  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rG  rH  r2  s     r&   r  z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>o  rI  r%   r4  rt   &   Выборка без названияNc              3   4   K   | ]}t          |          V  d S r  r  r   rQ  s     r&   r  z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>}  s(      'U'UG'U'U'U'U'U'Ur%   rt   rQ  r  )r
  r>   r   r   r   r   r  r  contentsr  r  )
rZ   r#  r$  r)  r   r_  ra  excerpt_namer  r  s
             r&   rs  z$ConfluenceAPIImport._convert_excerptE  si    D ''/@).L'MM 	9 	9Cww//H"ww'>CC# $ $-33C88$ $ $    
 ,//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-parameterrY  r   r  r  c              3   B   K   | ]}|                     d d          V  dS r0  r1  r2  s     r&   r  z?ConfluenceAPIImport._convert_excerpt_include.<locals>.<genexpr>  s0      'e'eC(;(;'e'e'e'e'e'er%   r4  rt   rg  rl  	page_namerT  r  N)r
  r>   r   ra  r    r  r  r   r   r   r   r  r   r  r  )rZ   r   r#  r$  r)  r   r_  macro_default_parameterrT  rr  ra  rl  r  r  s                 r&   rg  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  ro  rY  r   r  
page_labelrT  r  N)r
  r>   r   ra  r    r  r  r   r   r   r  r   r  r  )rZ   r   r#  r$  r)  r   r_  rs  rT  rw  r  r  s               r&   rh  z$ConfluenceAPIImport._convert_include  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="R   " 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="<">
                    <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 rG  rH  r2  s     r&   r  z3ConfluenceAPIImport._convert_toc.<locals>.<genexpr>?  ]        u{{3**++q00 C##0000 r%   r4  rU  rq  outlineF	separatorbracketsr\  40pxrL  mixedhminLevelr,  maxLevel6excluderu  	printableTabsoluteUrlclass)rU  r  r  r\  rL  r  r  r  ru  r  r  r  rW  rZ  r  r\  r
  r<  r  r  Ndiv)rS   r
  r>   r   r   r   r   r   r   r  r   r  r  )rZ   r#  r$  r)  r   ra  r
  
parametersr  r_  r  s              r&   rl  z ConfluenceAPIImport._convert_toc  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" (Динамический поиск)
        #
        <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="'  " 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  rV  r  r)  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rG  rH  r2  s     r&   r  z:ConfluenceAPIImport._convert_livesearch.<locals>.<genexpr>  r~  r%   r4  placeholderu
   ПоискspaceKeyr   r   %::::%r  ILIKE%"key":""%r  r  r?  c                 :    g | ]}||                                 S r$   strip)r   lables     r&   rv  z;ConfluenceAPIImport._convert_livesearch.<locals>.<listcomp>  s6       KKMM  r%   r  rX  r  medium)currentSpaceKeyr  r  r  FrW  rZ  r  r\  )r
  r<  r  r^  r  r  Nr  )rS   r
  r>   r   r   r    r  sgetr3   r   r   r_   r   r   r   r   r  r   r  r  )rZ   r#  r$  r)  r   r^  ra  r
  r  rT  r{  r  r  r_  r  s                  r&   rm  z'ConfluenceAPIImport._convert_livesearchi  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|                                   d|                                   d|                                   d|                                   d|                                   d	}|                    d
ddi          D ]}d}|                    dd          }t          d |                    d          D                       }d}	|                    dd                              dd                                          }
|
ry|
d         }t          j                            ddd| j	        j
        j
        j         dgddd| dggd g!          }|r|j        }	n:d"|
v rt          |j        j                  }	nd#}nt          |j        j                  }	|                    d$d                              dd                                          }|s|                    d%           nd&d'gfd(|D             }d}|                    d)d                              dd                                          }t!          |          d*k    rj	 |                     |d         d+,          }|rt          |j                  }n5# t$          $ r(}| j	                            |d-|d./           Y d}~nd}~ww xY wt)          |                    d0d1                    d2||	pd|                    d3d4          |pd|                    d5d                              dd                                          |                    d6d7          |                    d8d2          d9	}t*                              |d2d:;                              d<d=          }t/          |                    |||>          d?          }|                    d@          }|r|                    d@|i          nd}|s|                    dAddi          }|r|                    |j                   dS )But   
        Конвертирует макрос "Recently Updated Macro" (Недавно обновлено)
        r  aW  "
            class="macros-panel mceNonEditable wiki-recently-updated"
            contenteditable="false"
            data-macros-parameters="{params}"
            data-macro-parameters-original="{original_params}"
            data-macros="wikirecentlyupdated"
            cmf_converted="{cmf_converted}"
        >
            <div data-id="zT" data-layout="default" class="extension-container">
                <span data-id="uO  " aria-label="Макрос">
                    <svg viewbox="0 0 24 24" width="14px" height="14px" class="ng-star-inserted">
                        <path fill="currentColor" d="M12,0A11.972,11.972,0,0,0,4,3.073V1A1,1,0,0,0,2,1V4A3,3,0,0,0,5,7H8A1,1,0,0,0,8,5H5a.854.854,0,0,1-.1-.021A9.987,9.987,0,1,1,2,12a1,1,0,0,0-2,0A12,12,0,1,0,12,0Z"></path>,
                        <path fill="currentColor" d="M12,6a1,1,0,0,0-1,1v5a1,1,0,0,0,.293.707l3,3a1,1,0,0,0,1.414-1.414L13,11.586V7A1,1,0,0,0,12,6Z"></path>
                    </svg>
                </span>
                <span data-id="u   " class="extension-title">
                    <span class="excerpt-title">Макрос "Недавние обновления"</span>
                </span>
                <span data-id="r  r  aw  " 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="z<" class="ak-renderer-wrapper"></div>
        </div>
        r  r  zrecently-updatedr  rV  r  r)  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rG  rH  r2  s     r&   r  z@ConfluenceAPIImport._convert_recently_updated.<locals>.<genexpr>  r~  r%   r4  Nr   rX  r   r   r   r   r  r  r  r  r  r  r  r  z@selfr?  typesrL  r  newsc                     g | ]}|v|	S r$   r$   )r   r  unsupported_typess     r&   rv  zAConfluenceAPIImport._convert_recently_updated.<locals>.<listcomp>)  s$    TTT5UBS5S5S5S5S5Sr%   r  r   T)raise_on_errorzERR-0133r!   rL  r   rM  max   Fthemeconciser  r  r  hideHeading)	r  	maxToggler  r   r  r  r  r  r  rW  rZ  r  r\  )r
  r<  r^  r  r  r  )rS   r
  r>   r   r   r   r    r  r  r3   r   r   r_   r   r{  r   r   r   r   rb  r  r   r   r   r  r   r  r  )rZ   r   r#  r$  r)  r   r^  ra  r
  r   
space_keysrT  r{  r  r  authorsr   rn  r  r  r_  r  r  s                         @r&   rn  z-ConfluenceAPIImport._convert_recently_updated  s   %llnn% %  <<>>% % !%% %" !%#% %( !%)% %* %)LLNN+% %4 %)LLNN5% %F  <<>>G% % %N ''6GI[5\']] \	9 \	9C"M"ww'>CC  -33C88    F EHb1199#sCCIIKKJ ,&qM	 +00!6+_1G1N1Z+_+_+_`*G5M	5M5M5MN !6 1    ,#JEE
**//EE$+MMCKN++JJw++33C==CCEEE UU####%/$8!TTTTETTT Fjj2..66sC@@FFHHG7||q  
!--gaj-NNF 0!$VY    O--#-!,	 .         6::eR0011""GY77 ,B **Xr22::3DDJJLLGV44%zz-??
 
J "% $   gc8$$	  $%$4"/   
  G ww//HKS]innOX+FnGGGY]G _#..7HJ\6].^^ 9$$W%7888y\	9 \	9s   3K
K=K88K=c                 	   " d}|                     d          }t          |          D ]}|                    dd| dd          }g d}g d}g 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 i!          D ]7}|                    d"          }i }d#d$i}|                    d%          D ]}|                    dd&          }|j        r|j                                        nd'}|||<   ||v rE|	                    |          p|}|(||v r't          j        d(|          }|d)k    rd* |D             }||v r2t          |t                    rd+ |D             }nt          |          }n}|d	k    r$"fd,|D             }d                    |          }nS|d-k    r"                    |          }n7|d.k    r|
                    |          }n|d/k    r|                    |          }t          |t                    r5|                                d0k    rd$}n|                                d1k    rd2}|||<   g }d3d4d5d6d7d5d8d9d5d:d;d5d<d=d5d>d?d5d@dAd5dB}t          |                                d          D ]\  }\  }}|                    |          }|s |dCv r.|                    |dD         dE|dD         |dF         |dG           Rt          j        d(|          }|D ])}|                    |dE|dD         |dF         |dG           *d'gt%          |          z  }|                    dH          pg }t          |          D ]\  }}||         ||<   |}||dI<   |r|                    dJ|i!          nd'}|s|                    dKd i!          }|r fdLt          |          D             }dM                     dN           |dO<   t*                              |d2dPQ                              dRdS          |dT<   t*                              |d2dPQ                              dRdS          |dU<   |                    dVdWdXi!          }d&                    dY |j        D                       |dZ<    |j        d\i |} t3          | d[          }!|                    |!j                   9d'S )]uS   
        Конвертирует макрос 'Фильтр таблиц'
        u  
        <div
            id="{macro_id}"
            data-id="{data_id}"
            class="macros-panel table-filters"
            contenteditable="false"
            original-data-macro-parameters='{original_params}'
            data-macros-parameters='{params}'
            data-rendered="true"
            data-macros="tablefilters"
        >
            <div data-layout="default" class="extension-container" contenteditable="false" data-id="{data_id}">
                <span role="img" aria-label="Макрос Фильтры таблиц" data-id="{data_id}">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" height="16" viewbox="0 0 24 24" width="16" data-name="Layer 1">
                        <path d="m14 24a1 1 0 0 1 -.6-.2l-4-3a1 1 0 0 1 -.4-.8v-5.62l-7.016-7.893a3.9 3.9 0 0 1 2.916-6.487h14.2a3.9 3.9 0 0 1 2.913 6.488l-7.013 7.892v8.62a1 1 0 0 1 -1 1zm-3-4.5 2 1.5v-7a1 1 0 0 1 .253-.664l7.268-8.177a1.9 1.9 0 0 0 -1.421-3.159h-14.2a1.9 1.9 0 0 0 -1.421 3.158l7.269 8.178a1 1 0 0 1 .252.664z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="{data_id}">
                    <span class="excerpt-title" data-id="{data_id}">Фильтры таблиц</span>
                </span>
                <span class="macros-actions" data-id="{data_id}">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="{data_id}">
                        <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 class="macros-delete" data-id="{data_id}">
                        <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" contenteditable="true" data-id="{data_id}">
                {content}
            </div>
            <div class="macros-preview" data-id="{data_id}"></div>
        </div>
        	{data_id}	{data_id_}r   )r_   customNoTableMsgTextcustomNoTableMsgenabledInEditorhideFilters)orderinverser  totalRow)	fixedColslimitHeightr  rowsPerPageignoreFirstNRowsheightValueshowNRowsifNotFilteredr  
iconFilterr  thousandSeprator)totalrow
iconfilterignoreFirstNrowsthousandSeparatorr  rX  )	Point (.)	Comma (,)r  averagemuiltiplicationminr  r  nonemptyCount)SumAverageMultiplicationMinMaxCountzCount not empty
dynamicAscdynamicDesc	staticAsc
staticDesc)zDynamic AscendingzDynamic DescendingzStatic AscendingzStatic Descendingac:structured-macroac:nameztable-filterr  ac:macro-idddSeparatorsTac:parameterr)  Nu   (?<!\s)[,‚](?!\s)r  c                 >    g | ]}|                                 d k    S )rV  )r=  r   r+  s     r&   rv  z=ConfluenceAPIImport._convert_table_filter.<locals>.<listcomp>  s%    *T*T*T117799+>*T*T*Tr%   c                 ,    g | ]}t          |          S r$   )r  r  s     r&   rv  z=ConfluenceAPIImport._convert_table_filter.<locals>.<listcomp>  s    *G*G*Ga3q66*G*G*Gr%   c                 <    g | ]}                     ||          S r$   )r>   )r   r+  	total_maps     r&   rv  z=ConfluenceAPIImport._convert_table_filter.<locals>.<listcomp>  s'    &P&P&Pqy}}Q':':&P&P&Pr%   totalcolr  	numberingrV  r?  Fcolumnu!   Выпадающий список)r_   r  
userfilteru   Текстовой списокnumberfilteru   Числовой фильтр
datefilteru   Фильтр по датамvisualu!   Визуальный фильтрglobalu!   Глобальный фильтрhiddensu   Скрыть столбцы)r  r  r  r  r  globalFilterhideColumns)r  r  r  r   r_   )
columnNamecolumnIndexfilterLabel
filterTypefilterIdr  r  r  r  c                 @    i | ]}d |                                  S data_id_rS   r   r  rZ   s     r&   r   z=ConfluenceAPIImport._convert_table_filter.<locals>.<dictcomp>  )    UUU11UUUr%   ztable-filter-r   r_  rW  rZ  r~  &apos;r<  r
  r  r  ztablefilter-table-wrapperc              3   4   K   | ]}t          |          V  d S r  r  ri  s     r&   r  z<ConfluenceAPIImport._convert_table_filter.<locals>.<genexpr>,  (      )U)U7#g,,)U)U)U)U)U)Ur%   rQ  r  r$   )r  r  r   r
  r>   r   r  r  r   ra  rq  r  r  r   r=  r  r3  r   r   r   rQ   r   r   rk  r  r   r  r  )#rZ   r#  rv  r)  data_id_countr  unknown_paramslist_params
int_params
params_mapseparator_mapnumbering_maptable_filterr_  r<  r
  r3  
param_nameparam_valuer  filter_typesfilter_typefilter_datafilter_valuecolumn_nameordered_filtersr  	old_index	new_indexr  r  tablenew_htmlr  r  s#   `                                 @r&   ro  z)ConfluenceAPIImport._convert_table_filter`  s   (T 

;//}%% 	D 	DA<<-?!-?-?-?CCDD
 
 

 
 

 
 

 #& 2!3	
 

 
 

  /.
 
	 "."/ +!-	
 
 )112GPY[iOj1kk m	9 m	9L#''66H OF &..~>> &1 &1"YYy"55
49JHej..000D.9
+//'^^J77E:
*![00 ')h/E{&S&S%22*T*T*T*T*TK!Z//%k488 ;*G*G;*G*G*GKK*-k*:*:KK#z11&P&P&P&PK&P&P&P&)hh{&;&;#z11&/mmK&@&@#{22&3&7&7&D&D#{22&3&7&7&D&D!+s33 0&,,..&88*.KK(..00G;;*/K%0z"" G!)4WXX%1<]^^'5@_ ` `%1<Z[[%-8[\\'/:] ^ ^&/:WXX L 2;<;M;M;O;OQR1S1S  --K%zz+66# "AAANN&1'&:'('27';&1$&7$%$ $     $&8,BL#Q#QL'3  *5+,+6w+?*5d*;()( (      $fs7||3OJJw''-2E(1%(8(8 @ @$	9-4Y-?	**%G 'F9 LT]innOX+FnGGGY]G T#..0A>/R.SS 9UUUUm@T@TUUU#G4??13E3E#G#GZ *.**#!&) +5 + + '#x((	 &'
 "&!&) ", " " '#x((	 X  U7<W2XYY"$'')U)Uen)U)U)U"U"UY&4;....'-@@$$W%7888[m	9 m	9r%   c                     d}|                     d          }t          |          D ]}|                    dd| dd          }g d}ddg}d	d
ddd}|                    dddi          D ]^}	|	                    d          }
i }ddi}|	                    d          D ]}|                    dd          }|j        r|j                                        nd}|||<   ||v rD||                                dk    rd}n|                                dk    rd}t          |t                    rd|v r|                    dd
          }||v rt          |          }n|dv r|                    |          }|||<   |
r|                    d|
i          nd}|s|                    ddi          }|r fdt          |          D             }d                      d!           |d"<   t                              |dd#$                              dd%          |d&<   t                              |dd#$                              dd%          |d'<   |                    d(d)d*i          }d                    d+ |j        D                       |d,<    |j        d.i |}t%          |d-          }|                    |j                   `dS )/uW   
        Конвертирует макрос 'Сводная таблица'
        ul  
        <div        NOTE: 
            id="{macro_id}"
            data-id="{data_id}"
            class="macros-panel pivot-table"
            contenteditable="false"
            original-data-macro-parameters='{original_params}'
            data-macros-parameters='{params}'
            data-rendered="true"
            data-macros="pivottable"
        >
            <div data-layout="default" class="extension-container" contenteditable="false" data-id="{data_id}">
                <span role="img" aria-label="Макрос Сводные таблицы" data-id="{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="{data_id}">
                    <span class="excerpt-title" data-id="{data_id}">Сводные таблицы</span>
                </span>
                <span class="macros-actions" data-id="{data_id}">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="{data_id}">
                        <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 class="macros-delete" data-id="{data_id}">
                        <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" contenteditable="true" data-id="{data_id}">
                {content}
            </div>
            <div class="macros-preview" data-id="{data_id}"></div>
        </div>
        r  r  r  r   )r_   r  r  r'  rE  collapseAll
cumulativedecimalsnumberaccuracyr  rX  r~  r   )r  r  zApostrophe (')z	Space ( )r  r  zpivot-tabler  r  showrawdataFr  r)  NrV  Tr?  u   ‚)decimalseparatorr  r  r  c                 @    i | ]}d |                                  S r  r  r  s     r&   r   z<ConfluenceAPIImport._convert_pivot_table.<locals>.<dictcomp>  r  r%   zpivot-table-r   r_  rW  rZ  r  r<  r
  r  r  zoriginal-tablec              3   4   K   | ]}t          |          V  d S r  r  ri  s     r&   r  z;ConfluenceAPIImport._convert_pivot_table.<locals>.<genexpr>  r  r%   rQ  r  r$   )r  r  r   r
  r>   r   r  r=  ra  r   r  r   rQ   r   r   r  rk  r  r   r  r  )rZ   r#  rv  r)  r  r  r  r  r  pivot_tabler_  r<  r
  r3  r  r  r  r  r  r  r  s   `                    r&   rp  z(ConfluenceAPIImport._convert_pivot_table2  s   (T 

;//}%% 	D 	DA<<-?!-?-?-?CCDD
 
 
 

 !	
 
 (001FyZgNh0ii 5	9 5	9K"}55H OuF %--n== 1 1"YYy"55
49JHej..000D.9
+//*"((**f44&*$**,,77&+!+s33 F8L8L&1&9&9%&E&E!Z//&)+&6&6#'HHH&3&7&7&D&D%0z"" LT]innOX+FnGGGY]G S#..0A=/Q.RR 9UUUUm@T@TUUU#F$//!2D2D#F#FZ *.**#!&) +5 + + '#x((	 &'
 "&!&) ", " " '#x((	 X  U7<L2MNN"$'')U)Uen)U)U)U"U"UY&4;....'-@@$$W%7888k5	9 5	9r%   c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}|                    dddi          D ]p}|                    dd          }t          d |                    d          D                       }|                    d          }g }t          |                    dddi                    D ]U\  }	}
|
                    dd          }t          d |                    d          D                       }|                    d          }d|dddd|	dk    |dk    rdndddd 
}|
                    d!          }|r|                    d!|i          nd"}|s|                    d#d|d$          }|rt          |                    t          
                    |d%                              d&d'          |d                    d( |j        D                       )          d*          }|                    |j                   W|                    d!          }|r|                    d!|i          nd"}|s|                    d#ddi          }|rI|rG|                    |d                    |d         }|d+d"         D ]}|                    |           |}rd"S ),uu   
        Конвертирует макрос "Composition - deck of cards" (макрос "Вкладки")
        zr
        <div
            class="macros-panel wiki-tabs"
            contenteditable="false"
            data-id="z"
            data-macros="wikitabs"
            data-macros-parameters="{params}"
        >
            <div class="extension-container" contenteditable="false" data-id="ry  a  ">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="14px" height="14px">
                        <path d="M11.25,7.99874576 L18.75,7.99874576 L18.9896379,8.00744644 L18.9896379,8.00744644 C20.6119031,8.125678 21.9036924,9.43468674 21.9948552,11.0643219 L22,11.2487458 L22,18.7487458 C22,20.4817772 20.6435452,21.8979917 18.9344239,21.993601 L18.75,21.9987458 L11.25,21.9987458 C9.51696854,21.9987458 8.10075407,20.642291 8.00514479,18.9331697 L8,18.7487458 L8,11.2487458 C8,9.5157143 9.35645477,8.09949983 11.0655761,8.00389055 L11.25,7.99874576 Z M9.5,18.7487458 L9.50455771,18.8760231 L9.50455771,18.8760231 L9.52290455,19.0326048 C9.65099554,19.8179147 10.30178,20.427623 11.1064728,20.4929446 L11.25,20.4987458 L18.75,20.4987458 C19.6681734,20.4987458 20.4211923,19.7916355 20.4941988,18.892273 L20.5,18.7487458 L20.5,11.2487458 C20.5,10.2822474 19.7164983,9.49874576 18.75,9.49874576 L11.25,9.49874576 C10.3318266,9.49874576 9.57880766,10.205856 9.5058012,11.1052186 L9.5,11.2487458 L9.5,18.7487458 Z M15.75,5 C15.8305982,5 15.9105112,5.00293389 15.9896379,5.00870069 C17.236948,5.09952529 18.2890659,5.89453789 18.7501004,6.99804043 L16.9722957,6.99760388 C16.6889259,6.72100274 16.3120424,6.5397745 15.8935272,6.5058012 L15.75,6.5 L8.25,6.5 C7.3318266,6.5 6.57880766,7.20711027 6.5058012,8.10647279 L6.5,8.25 L6.5,15.75 L6.51083386,15.9458258 C6.55524501,16.3446817 6.73371018,16.7030658 7.00015022,16.974899 L7.0000564,18.7509418 C5.87931902,18.283597 5.07631822,17.2067274 5.00514479,15.9344239 L5,15.75 L5,8.25 C5,6.51696854 6.35645477,5.10075407 8.06557609,5.00514479 L8.25,5 L15.75,5 Z M12.75,2 C14.0497736,2 15.1713376,2.76300581 15.691219,3.86554427 L15.75,4 L13.9733002,3.99858514 C13.6898169,3.72143138 13.3125371,3.53981466 12.8935272,3.5058012 L12.75,3.5 L5.25,3.5 C4.3318266,3.5 3.57880766,4.20711027 3.5058012,5.10647279 L3.5,5.25 L3.5,12.75 C3.5,13.2269035 3.69076499,13.6592514 4.00015022,13.974899 L4.0000564,15.7509418 C2.87931902,15.283597 2.07631822,14.2067274 2.00514479,12.9344239 L2,12.75 L2,5.25 C2,3.51696854 3.35645477,2.10075407 5.06557609,2.00514479 L5.25,2 L12.75,2 Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="rz  u   ">Макрос "Вкладки" | {tab_name}</span>
                </span>
                <span class="macros-actions" data-id="r{  a  " 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="aA  " 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="ak-renderer-wrapper" contenteditable="true" data-id="zG">
                {content}
            </div>
        </div>
        r  r  deckr  r  r)  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rG  rH  r2  s     r&   r  z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>  s]        u{{3**++q00 C##0000 r%   r4  tabLocationcardc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rG  rH  r2  s     r&   r  z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>  s]       # #5;;sA..//144 KKQ''4444# #r%   r  r   z#254dcbDefaultFr   leftvertical
horizontalBasic)
r   tabsPageTitlecolorcolorPalettes	hasBorderfixed
primaryTab	directiontextAlignmentheaderStyler  Nr  )r  r  rO  r  r\  c              3   4   K   | ]}t          |          V  d S r  r  ri  s     r&   r  z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>  s(      +\+\WCLL+\+\+\+\+\+\r%   )r
  tab_namerQ  r  r   )rS   r
  r>   r   r   r  r   r   r  r   r   r   r  rk  r   r  r  insert_after)rZ   r#  r$  r)  r  deck_macro_parametersdeck_paramstab_locationtabsr  r   card_macro_parameterscard_params
card_lable
tab_paramscard_macro_id
card_macro	tab_macrodeck_macro_id
deck_macror  tabs                         r&   rq  z!ConfluenceAPIImport._convert_tabs  s   $ llnn	$ $ PT||~~$ $ ;?,,..$ $ 9=$ $ ;?,,..$ $" 8<||~~#$ $$ ;?,,..%$ $. IM/$ $@ OSllnnA$ $ $L  ((9JF8S(TT =	" =	"D$(HH-Db$I$I!  288==    K
 '??=99LD$T]]7CTV\B]]%^%^__ (/ (/4(,1H"(M(M%" # #!6!<!<S!A!A# # #  
 )__W55
%/&%.!&""#q&/;v/E/E<%+#* 
 !% 9 9WdnY^^?M2R^SSSjn
! !*/5%/  "0 " "J  	/ -#'::ju:#M#M#U#UVY[c#d#d%/$&GG+\+\
H[+\+\+\$\$\ $  
 &! !I KK	... HH_55MS`j.NOOOfjJ V&^^E:KV9T^UU
 "d "''Q000q'8 " "C((---!GG{=	" =	"r%   c           	         d}|                     dddi          D ]B}|                    d          }|                    dd          }t          d	 |                    d
          D                       }|                    dd          }|                    d|          }	t	          |                    |	|	pd|                                pd          d          }
t          j        |
          }|                    |
j	                   |r|
                    d|i          nd}|s|
                    ddi          }|r|                    |j	                   DdS )uF   
        Конвертирует макрос 'Статус'
        a  
        <span
            data-macros="wiki-status"
            text="{text}"
            color="{color}"
            class="statusView-content-wrap"
            contenteditable="false"
        >
            <span>{text_span}</span>
        </span>
        r  r  r  r  r  r  r)  c              3   F   K   | ]}||                     d d          V  dS r0  r1  r2  s     r&   r  z6ConfluenceAPIImport._convert_status.<locals>.<genexpr>,  J        C##     r%   r4  colourr      Задать статусneutral)r   	text_spanr(  r  N)r
  r>   r   r   r   r  r=  copyr  r  r   )rZ   r#  r$  r)  r   r_  ra  r
  r(  r   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
 JJx,,E::gu--D#"A&A++--49   
  G  9W--L
 W/000KS]innOX+FnGGGY]G N#..0A8/L.MM >$$\%<===?	> 	>r%   c                 n   d}|                     dddi          D ]}|                    d          }|                    dd          }t          d	 |                    d
          D                       }|                    dd          }t	          |                    ||pd          d          }	t          j        |	          }
|                    |	j                   |r|	                    d|i          nd}|s|	                    ddi          }|r|                    |
j                   dS )uF   
        Конвертирует макрос 'Handy Status'
        a  
        <span
            data-macros="wiki-status"
            text="{text}"
            color="neutral"
            class="statusView-content-wrap"
            contenteditable="false"
        >
            <span>{text_span}</span>
        </span>
        r  r  zstatus-handyr  r  r  r)  c              3   F   K   | ]}||                     d d          V  dS r0  r1  r2  s     r&   r  z<ConfluenceAPIImport._convert_status_handy.<locals>.<genexpr>]  rC  r%   r4  StatusrE  )r   rG  r  N)
r
  r>   r   r   r   r  rH  r  r  r   )rZ   r#  r$  r)  r   r_  ra  r
  r   r  rI  r  s               r&   ra  z)ConfluenceAPIImport._convert_status_handyJ  sv   
 ''6G5X'YY 	> 	>Cww//H"ww'>CC  -33C88    F
 ::h++D#"A&A     G  9W--L
 W/000KS]innOX+FnGGGY]G T#..0A>/R.SS >$$\%<===;	> 	>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   r  z\=r  inc                 8    g | ]}|                     d           S r  r  )r   r  s     r&   rv  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>  s$    !^!^!^u%++c"2"2!^!^!^r%   z()rX  r   #r)  ruTlanguage_codereversedORaliasr  r  rt   r6   r  r~   r   *   Не удалось создать тег r   r  )rt   r6   r_   	classNamer  INr   c                 8    g | ]}|                     d           S rR  r  r   s     r&   rv  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>  s"    !V!V!V1!''#,,!V!V!Vr%   zcurrentSpace()r   r   r  r  r  r  u.   Не удалось найти проект «   »r  r   )transliteraterO  rq  r   iterr   nextr  r   r    r  r>   r   r   rB   r   r_   ra   r   rt   r6   r  StopIteration)cqlr   r   rO  bql_listbql_dict	cql_partscql_partopr  r  tags_ids	tags_listr  label_aliasr   r   r   
parent_idsparent_listr   r{  s                         r&   _bql_from_cqlz!ConfluenceAPIImport._bql_from_cqly  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  r4  c                 :    g | ]}|                     d d          S r8  r   r1  r   ps     r&   rv  zAConfluenceAPIImport._convert_content_by_label.<locals>.<listcomp>  $    GGG1qwwsAGGGr%   rc  r)  r   defaultrT  FTrV  Truer  r  
showLabelsT	showSpacerA  r  )
r   modelr'  rT  r  ry  rz  rN  bqlr  ui   Не удалось конвертировать макрос «Содержимое по меткам»     с параметрами: zERR-0034r  r~  r\  r   z:Truez:truez:Falsez:falser  r  N)r
  r>   r   r   r   rn  r3   r   r   r  rb  r   r  r   r   r  r  )rZ   r   r#  r$  r)  r   r_  ra  all_parametersr
  r|  re  r  r  r  s                  r&   ri  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                 j   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           d%S # t.          $ r?}tC                       | 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="rz  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  Noner4  c                 :    g | ]}|                     d d          S rr  r1  rs  s     r&   rv  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>H  s$    "K"K"Kq1773??"K"K"Kr%   ud   Не удалось конвертировать макрос «Свойства страницы» r}  zERR-0035r  r_   hiddenFrw  )r_   r  rO  r  r\  r)  c                 ,    g | ]}t          |          S r$   r  r   cs     r&   rv  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>T  s    #A#A#AqCFF#A#A#Ar%   z details-hidden)macro_data_idr  rQ  details_hiddenr  r   Nc              3   4   K   | ]}t          |          V  d S r  r  ri  s     r&   r  z7ConfluenceAPIImport._convert_details.<locals>.<genexpr>k  s(      *X*XG3w<<*X*X*X*X*X*Xr%   r   r  u5   Отсутствует таблица свойств.trr  confluenceTdc                 .    g | ]}d |j         d          S )key_details r   )rk  )r   ths     r&   rv  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  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>  s,      II1qDyyAyyyyIIr%   )r  rk  )r   tds     r&   rv  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  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   rk  r  )r   r  s     r&   rv  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)"rS   r
  r>   r   r   r   r3   rb  r   r   r   r  rk  r   r  rR  insertr  r   r  ra  r    r  r   zipr  rD   r   	macros_dbr   ra   macros_db_draftr   r  )rZ   r   r#  r$  r[  r)  r  r   r_  ra  r
  r  r  r  prmcontents_strr  r  
propertiescontents_table	first_row
second_rowr   s                          r&   rt  z$ConfluenceAPIImport._convert_details  sa   % 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U' '
V014V++V0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  r4  c                 :    g | ]}|                     d d          S rr  r1  rs  s     r&   rv  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>  ru  r%   rc  r)  c                 6    g | ]}|                                 S r$   r  )r   r  s     r&   rv  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>  s     UUU!AGGIIUUUr%   headingsrX  showCommentsCountFrw  showLikesCountreverseSortpageSize   NsortByfirstcolumn)r  showCreatorshowLastModifiedr  showPageLabelsshowUnresolvedCommentsCountr  r  r_   r  r  r  settingsParamsr|  uv   Не удалось конвертировать макрос «Отчёт по свойствам страницы» r}  zERR-0036r  rO  r  r\  r~  r  )rS   r
  r>   r   r   r   rn  r3   r   r   r   r  r  rb  r   r   r   r   r  r   r  r  )rZ   r   r#  r$  r)  r   r_  ra  r  r
  r|  re  r  r  r  r  r  s                    r&   rj  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="r  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="r  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  ro  )r  r  N)rS   r
  r>   r   r   r  r  r  quoter   r  r  )	rZ   r#  r$  r)  r   r_  macro_param_namer  r  s	            r&   rk  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          }|                    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<   g }|                    d          r|d                             d          }|D ]{}	 t          j
        ||                    d                    }|                    |           A# t          $ r.}| j        j                            | d|            Y d}~td}~ww xY w|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*}t0                              |d'd+,                              d-d.          }t0                              |d'd+,                              d-d.          }t5          |                    ||/          d0          }|r|                    d|i          nd}|s|                    d1d	d
i          }|r|                    |j                   FdS )2u   
        Конвертиация макроса "Результаты фильтра" ("Вставить фильтр/проблему 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	(?<!\\)\|r8  r   jqlQuery\r)  z\|\|?rX  z&&?ANDserverIdr  	columnIdsrX  r   rA  Nr   r   r  r  T)r   r3   r   r   )
logic_typer6   rt   responsibler  priorityr  r  r  r  deadlineFmaximumIssues   )bordercolumns	itemsSizer  
filterNamefilterParentNameuserFilterIduseCustomFilterrW  rZ  r  r\  r  r  r  )rS   r
  r>   r  r   r  r   subr  r   convert_fieldr   r   r3   rD   r   r   r    CmfBqlFilterr   r  r   r   r_   r   r   r   r  r   r  r  )rZ   r   r#  r$  r)  r   r_  ra  r
  r3  r  ra   	jql_queryr  r  
column_ids	column_idr  rn  	tf_ext_idtfdefault_columnsr  r  r  s                            r&   rf  z(ConfluenceAPIImport._convert_task_filterA  s    llnn	  8<||~~  RVQ]Q]Q_Q_  9=  8<||~~  9= $ ;?,,..%  > ''/@&.I'JJ ]	9 ]	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Gzz+&& L#K066s;;
!+ L LIL!.!<YTaHbHb!c!cv....$ L L L.66'7J7JS7J7JKKKKKKKKL #>77X77I$(( )+<= )  B  (($#$( )  
 ! ,%+"GGG%%%  O  "5o#ZZ<< "$( #BE

#'	 	J "% $   gc8$$	   $zz "%  *     gc8$$	  $%$4     G LT]innOX+FnGGGY]G S#..7H&6Q.RR 9$$W%7888{]	9 ]	9s   2=H00
I(:$I##I(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   r  html_contextr  r  inlineProperties	markerRefzdata-refr  r)  c                 ,    g | ]}t          |          S r$   r  r  s     r&   rv  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  rq  r  r
  r  ry  r   r  rS   r  r_   unwrapr  r   r3   rb  r   )rZ   r   r#  r  r   tag_contexts         r&   rr  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=r}  	
subprocessPopenr3   r   r_   r   r  pidr  rZ   r{  r  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d}n|d         |d         f}i }                     |d                              |d                             D ]p}d }|d         r|d         d	         d         }n|d
         dk    r|\  }}|d         d         }|dk    r|d         }|t          |          |d         d||d         <   qd 		 fd ||d           d S )Nhomepager#   NNr_   rU  r   r)  r*  r   r  r  r  positionrA  r   )r   r  rU  c                 @    d t          j        d|           D             S )Nc                 |    g | ]9}|                                 rt          |          n|                                :S r$   )isdigitr  r=  )r   r   s     r&   rv  zPConfluenceAPIImport._prepare_documents_tree.<locals>.natsort.<locals>.<listcomp>  s7    ddddACIIITZZ\\dddr%   z(\d+))r  r   )r   s    r&   natsortz<ConfluenceAPIImport._prepare_documents_tree.<locals>.natsort  s$    ddbhW_abNcNcddddr%   c                     |\  }fd                                  D             }|                     fd           |}g }|D ]1}|\  }}	|dz   }
|                    ||	|
f             ||
          }2|r
|j        |<   |S )Nc                 B    g | ]\  }}|d          k    ||d         fS )r   rU  r$   )r   r  r   	parent_ids      r&   rv  zSConfluenceAPIImport._prepare_documents_tree.<locals>.build_tree.<locals>.<listcomp>!  s?       E4>Y.. V%...r%   c                 >     | d                  d                   S )Nr   r  r$   )r  r  r   s    r&   r  zQConfluenceAPIImport._prepare_documents_tree.<locals>.build_tree.<locals>.<lambda>'  s    GGDqN:4N,O,O r%   r  r  )r3  r'  r   rM   )r  r   ordernor   ry  current_ordernochildren_in_orderr  child_id
child_typenext_ordernor  
build_treer   rZ   s   `          @r&   r  z?ConfluenceAPIImport._prepare_documents_tree.<locals>.build_tree  s    !LIq   #'::<<  H MMOOOOOMPPP &O "! H H',$*.3!(((J)MNNN",*T5,"G"G  6$5	&!""r%   i )r   rM   r>   r  r  r  r  r   )
rZ   r   r  r   r   r   r   r  r  r   s
   `       @@r&   _prepare_documents_treez+ConfluenceAPIImport._prepare_documents_tree  sw   FF	99Z((	:*m;;#HH (89H&&uV}D<W<WX]^dXe<f<f&gg 	 	CF; %[)"-d3X*,,$	 <(4H6!!w< !MMF   E#d)	e 	e 	e	# 	# 	# 	# 	# 	# 	#. 	
5(G,,,,,r%   c                    	
 |sj         } j                                         j        j                            | d                                 |d                   	g 
	
 fd}	rt          j        d           t          
          D ]=}|	                                }|% xj
        |z  c_
        
                    |           >	  |             n# t          $ r 
s Y nw xY w	t          
          D ]2}|                                 |j        r xj
        |j        z  c_
        3 j        j                            | d           d S )Nu<    запущена в несколько процессов: r   c                  F   t                    k    rd S t          
j                            d          t                    z
            } t	          |           D ]A}s d S                     d          \  }} 	||          }                    |           Bd S )NF)r  r   )r   r  r3   rn   r  popr   )available_processesr   r  r'  r  funcro   r  r  r{  rZ   s        r&   execute_processeszFConfluenceAPIImport._run_parallel_processes.<locals>.execute_processesH  s    7||},,"%11e1<<G,# # .// % % EE 'AtGVU33t$$$$% %r%   r   u    завершена)r   r3   rn   rD   r   r  r]  sleeprq  pollr@   r_  r   communicate
returncode)rZ   r  r   r{  process_namer  r  r  ro   r  r  s   `` `    @@@r&   _run_parallel_processesz+ConfluenceAPIImport._run_parallel_processes8  s    	)=L 99;;##hhYfhh	
 	
 	
 33E&MBB	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  	 JqMMMW ) )!YY[[
)OOz1OONN4(((!!####       	" MM 	3 	3D 34?2##|$H$H$HIIIIIs   
C# #C32C3c           	         | j         j                            d           |                    dg           |j        j        }| j                                        D ]\  }}|\  }}	 | j                                         r d S d }|r| j	        
                    |d          }t          t                    |         }	| j         j        j        j         d| }
|	
                    |
ddgd          }|s(| j                             d	| d
| j         d|           |r||k    r| j        }|D ]\  }}}| j	        
                    |d          }t          t                    |         }| j         j        j        j         d| }|
                    |g dd          }|s%| j                             d| d| dd|           |j        r$||_        ||_        |                    d           dd|g}|g dg}t          j                            |dgd          }t          j                            |dgd          }t1          |p|          |_        |j        rd|_        nZt          j                            |dg          }t          j                            |dg          }t1          |p|          |_        |j        dk    r|j        rd|_        |                    d           t;                       # t<          $ r3 t?                       | j                             d| ddd           Y w xY wd S )Nu6   Построение дерева документовr  r#   r   tree_node_is_branchhas_children_archivedT)r   ru   include_archivedu    Не найден предок 'u>   '. Потомки будут помещены в корень zERR-0120r  )r   r!  r   r  u"   Не найден потомок 'u   ' у предка 'r~  zERR-0003r   r!  r8  )r  r8  Tr  )r   ru   r  r  r  u7   Не получилось привязать ноду 'zERR-0024) r3   rD   r   r  r  ra   rM   r3  r  rX   r>   r  r    r   r   rb  r  r   r!  r  r   r#   r  r9   rb   r  r  r  show_archiver   r   r  )rZ   r{  project_homepager   ry  r  parent_typer!  parent_model_nameparent_modeltree_parent_ext_idr  r	  r  child_model_namechild_modelchild_ext_idr  tree_parent_filterarchived_filterarchived_documentsarchived_foldersr  folderss                           r&   _process_documents_treez+ConfluenceAPIImport._process_documents_treeo  s.   ##$\]]]-.///"17 $	 1 1 V	 V	FH%+"I{T?,,.. EE" (,(;(?(?]([([%#'<<0A#BL,0O,B,I,U)d)dYb)d)d&"."2"2113  *. #3 # #K ' 11my m mZ^Zjm m'1%6	 2    # 3k5E&E&E"&"2K5= 5 51Hj''+':'>'>z='Y'Y$"&v,,/?"@K&*o&<&C&O#]#]S[#]#]L'OO+VVV)- ,  E
 ! !11jjj^gjjj'1%5 2   
 !, 5,7)(/

t
444&3S+%F"&///# &,%7%<%<* 6%) &= & &"
 $*#3#8#8* 6%) $9 $ $ 
 599K9_O_4`4`14 Q6:K33 & 2 7 7?Q[_Z` 7 a aI$.33;MW[V\3]]G6:9;O6P6PK3)\99k>_9/3K,  T 222   ))WfWWW)* *     aV	 V	s   'K>I9K>>9L;:L;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  r}  r  r  s         r&   _execute_doc_versionsz)ConfluenceAPIImport._execute_doc_versions  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                    g d}|ddgz   }t           j                            ||          D ]Q}|j        rHg |_        |D ]}t          ||d           |j        j        dv rd|_        |	                    d           Rd	S )
u   
        Сброс настроек правил схемы прав доступа

        Args:
            perm_scheme (CmfProjectPermScheme): Схема проектных прав доступа
        )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   ru   F)PPP-DOC-DELETEzPPP-OBJ-DELETETr   N)
r    CmfProjectPermSchemeRulerq  r   r?  r  r>  r6   r2  r   )rZ   perm_schemerule_bool_fieldsrule_fieldsruler   s         r&   _reset_rulesz ConfluenceAPIImport._reset_rules  s    
 
 
" '*>@P)QQ388T_8`` 	, 	,D# ,&(#- 0 0ED%////*/3WWW)-D&		d	+++	, 	,r%   c                 p   g ddgg ddgdgdgdgdgg d	gd

}	 |                     |d         d           }|$| j        j                            d|            d S |D ]}t          j                             |d          }|s6| j                            d| d| dd           | xj        dz  c_         d S t          j                             ||ddg          }|s6| j                            d| d| d|           | xj        dz  c_         d S |j	        s d 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                             d"d#d$| d$gd"g%          }|s%t          j                             dd&|gd"g%          }|rZ|j        s||_        n||j        vr|j         | |_        |                    d'           |j                            |           
| j                            d(| d| d)|           | xj        dz  c_        ?|d*         rd|_        |                    d'           d S #  | j                            d+| d,d-           | xj        dz  c_        Y d S xY w).N)zPPP-DOC-CREATEzPPP-DOC-EDITzPPP-DOC-PUBLISHzPPP-DOC-TREEMOVEzPPP-OBJ-ORDERr@  )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  r  u8   Не найдено соответствие права T)r6   r  u    Не найдено право "u	   " для zERR-0059CmfProjectPermPermissionrM  r   r   r?  )r>  r   ru   u2   В схеме не найдено правило "rB  r   u)   Не нашли пользователя u    для прав zERR-0060r  rt   r   r_   r   r   r   r  r  r   u   Не нашли группу zERR-0061rV  u>   Не удалось импортировать правило zERR-0063rA  )r>   r3   rD   r   r    rH  rb  r@   rA  r   r   r?  r   r2   rJ   r   r   r   r   r   r;  )rZ   	perm_dictrB  mapping_permr  r  r  scheme_ruler   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
 
Z	!&**9\+BDIIK"&../ujs/u/uvvv) M3 M3
6::#$( ;    O--[:[[PY[["!; .   
 OOq(OOFF$=AA'+&!12 B  
 # O--mZmmbkmm"' .   
 OOq(OOFF"2 FF%g. 
- 
-D!--d33F -#299&AAAA11jjj_hjj& + 2   
 1,&x0 - -E!&vJ, e!bdo&<&C&O!b!bSXY]S^!b!b!b!ddo&<&C&O!d!dSXY_S`!d!d!d & 5 9 9 (&-f---@ (z !: ! !I % $*$9$=$=$*GZ#@$,: %> % %	 ! -(/ M/5I,,#9+;;;2;2B/LF/L/LI,!4888#299)DDDD11dJddYbdd& + 2   
 1,[) 837K0  T 2222[M3 M3\	!O%%\QZ\\3 &   
 OOq OOOOOs'   A L  AL  :AL  L   GL   2L5c                    | j         j        j        j         d|d          }t          j                            |          }|s"t                              |d| j                   }|d          d|d          |_        |                    d	           d }t          |d
          d          }|	                                rBt          |d          5 }t                              |          }d d d            n# 1 swxY w Y   |ra|                     |           |                    dg           D ]}|                     ||           ||_        |                    d	           |S )Nr   r_   r   T)r   r   r3   r  u?   : Схема проектных прав доступа для rt   r   r   z/permissions.jsonrC  r  )r3   r   r   r    CmfProjectPermSchemer>   rt   r   r   r   r   r   r   rF  rO  r  )rZ   r   perm_scheme_ext_idrB  	perm_listr!  r   rJ  s           r&   _process_perm_schemez(ConfluenceAPIImport._process_perm_schemeo  s    $ 6 = IZZUSW[ZZ155=O5PP 	 55) $? 6  K
 $ElzzkpqwkxzzT***	%-BBBCC!!## 	)os++ )q IIaLL	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 	/k***&]];;; B B	)))[AAAA*3K'...s   C99C= C=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.wikirX  rt   r  task_code_prefixT)r  rt   rY  r   r  ru   z Wikiu   названиеWIKIu   кодu   В u    и u9    проекта добавлен суффикс 'Wiki': 'r.  r}  r  )r    r  r  rt   r=  r   rY  upperr3   r  r  rB   r  )	rZ   r  rT  rN  new_space_namenew_space_key
has_suffixmatching_projectsmatching_projects	            r&   _add_project_suffixz'ConfluenceAPIImport._add_project_suffix  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]): новые названия и код проекта
        rX  r   NOT LIKEr   r<  rt   r  r  r  r  r}  u   Проект с именем 'ud   ' уже существует. Импортируемый проект переименован в 'r~  zERR-0131r  r  r   rY  TrZ  r   u   Проект с кодом 'ug   ' уже существует. Код импортируемого проекта изменен на 'zERR-0132)r    r  r  r3   rb  rt   )rZ   r  rT  r   ext_id_filterr{  original_space_keycounters           r&   _check_project_uniquenessz-ConfluenceAPIImport._check_project_uniqueness  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                 T   |                      | 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 }	|                    d          r\|d         d         }		 |                     ||	          }
n# t          $ r)}t          d|d         d          d|	 d|           d }~ww xY w| j        j	                            d| d           |d         D ]\}	 |                     ||          }
|
r nO# t          $ r2}| j        j	                            d| d| d|            Y d }~Ud }~ww x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  }d0|d1<   | j                            |d                   }d2| j        j        j        j         d2|d          d2}t0          j                            d3d4d5| d5gt5          |                                          g d6z   7          }|r<d8}d9| }|j        d:k    rd;| d<| d| d}| j                            |d=           nL|d>v rd?| d| d}d@t0          j                            dAB          dC}|dDk    r"dE| d| dF}|                    dGdHdHdI           | j                            |d=           t0                              || j        |dJ          }n|d@k    rt0          j                            g dKdLdMdN|gd	dN|gggg dO7          }|st          dP          | j                            dQ| d| dR| d=           |j          d2| |_         |!                    dS           tE                       nt          dT|           |j        d:k    rot0          j#                            dUdV|j$        gg dWgd3g7          }|st          dX|           |j%        r||_&        |!                    dS           || _'        nd|j%        r*tQ          |j&        o|j&        j                            dY                    }|s|r| )                    ||          \  }}}||dY<   | *                    |||          \  }}||d	<   ||dM<   | +                    |          }|r||dZ<   ||d[<   |D ]}tY          ||||                    |j-        j.        r|/                                |_0        |!                                 tE                       |                    d          r| 1                    |
|           n+| j                            d\| d]td          j3        d^           || _'        || _4        |rlt0          j#                            dUdV|j$        gg dWg_          }|j        d:k    r:t0          j#                            |d`a          }|r|5                    db           n|j        dck    rt0          j#                            |d`a          }t0          j#                            |dda          }|r|5                    db           |r|5                    db           |r|5                    db           |6                    deg           |j7        j        }|	r | j        j        j        j         d2|	 |_         | j        |_        |!                    dS           tE                       | 8                    ||           | 9                    |           | :                    | j;        ||dfg           | <                    |           tz          j>        r`tz          j>        }tz          j>        dhk    rdi}| j        j	        
                    dj| dk           | :                    | j?        ||dlg           n| j        j	        
                    dm           	# t          $ rK}t                       | j        A                    dn|d	          d|d          d| dodpq           Y d }~
d }~ww xY wd S )rNr  rw   ra   r_   
add_suffixTc                     g | ]
}|d          S r^   r$   ru  s     r&   rv  z7ConfluenceAPIImport._process_spaces.<locals>.<listcomp>  s    &Q&Q&QSs4y&Q&Q&Qr%   r~  rt   z' (id: z, key: r  r}  u0   Импортируем пространство r   r  r  uE   В дампе не найдена домашняя страница 'r   r.  rP  u   У пространсва u    нет домашней страницы. Сведения о создателе и дате создания пространства будут взяты из первой корневой страницы.r  uW   Не удалось получить данные корневой страницы id=u(    в дампе пространства rA  uS   В дампе не найдено ни одной корневой страницыr  r  uD   Определяем автора домашней страницы rU  rV  r  r  uJ   Определяем владельца домашней страницы r  r  rT  r  r  r  r  r  r  personalu(    (Личное пространство)u%   Личное пространствоdescriptionr   r   r   r   )rW  rY  r  r  FuI   Найден ранее импортированный Wiki-проект project.agileu    Найден Agile-проект u_    с импортированным в раздел 'Документы' Wiki-проектом ')rV  )project_wikir   u3   Создание нового Wiki-проекта 'r{  zproject.wiki:defaultr5   )project_typer  r   u,   Создание нового раздел 'u-   ) в портале 'Моя компания'sectionzCmfWiki:Class)rp  r  tree_parent_id)rt   r3   r   r   )rW  r   rn  rX  rY  r  )rW  rY  r   u   Не найден Agile-проект для объединения. Создайте или импортируйте одноименный Agile-проект и повторите импорт проектаu"   Импорт Wiki-проекта 'u<   ) в раздел 'Документы' Agile-проекта r   u8   Неизвестный тип опции импорта rr  r   )rt   r   u   ДокументыuL   Не найден раздел 'Документы' в Agile-проекте r_  project_perm_schemer  u"   Настройки проекта u    были изменены пользователем. Изменения из импорта не будут примененыr  r   u   Документ1)r!  rt   r  rX  u   Документ2r  u'   Обработка документов)r  r   u   ВсеuY   У документов будет обработано последних версий: u   . Для изменения, поменяйте значение параметра IMPORT_CONFLUENCE_PROC_LAST_PAGE_VER в config.u4   Обработка версий документовu   Обработка версий документов отключена параметром IMPORT_CONFLUENCE_PROC_LAST_PAGE_VER в config.u6   Ошибка импорта пространства 'zERR-0032r  r  )Br   r3   r`   ra   r>   r  r  r  r  rD   r   r   r   r  r   r  r   re   r  r   rI   get_correct_keyr   r   r    r  rq  keysrW  r  CmfLogicTyper   r   r   r   r#   r_   r   r  r  rb   rb  rh  rU  r  rt   r   gen_coder6   r   rB   r  r{  r  r  r  _process_project_tagsr  r  r  r+  rU   r  r-  r  rb  )rZ   r{   rw   rj  r   project_fieldsproject_is_newspace_full_namer  homepage_idr  rn  	root_pager  r  r  r  rT  r   r{  log_msg
doc_folderr_  rB  r  rm_doc_folderrm_doc1rm_doc2r  rf  s                                 r&   _process_spacesz#ConfluenceAPIImport._process_spaces  s+   ++DO,IJ[,\]]}-g6t<_28<<\JJ
  """'')) `	 `	EN!N\?,,.. 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#'#5#5g{#K#K$   &U %j 1' :U U?JU UORU U   O*22f_ f f f   &+<%8 ~ ~	'+'9'9'9'M'MH' & %&(    O2::!c  {D !c !cJY!c !c]`!c !c        ''|}}}!),[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:&*&?&?&F&F& PDON+@A<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(& t9=9O9V9b6s6sfq6s6s,36:o(3(--$-??? **5':::,,U333,,%!J	 -    ,,W555> "("MKBbHH&.O*//]t ] ] ]   002%[	 1     O*// g      ))uUSY]uu_dej_kuupsuu)) *        u`	 `	su   i*iBiE)(i)
F3$FF0iG(%i(
H$2(HiH$$`*i
j%A j  j%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   rN  r   r)  r  r_   rt   r   r   rS  r)  rT  TrU  r   r   r   r   r   r  rX  rY  r  r  r  r  r   rZ  zERR-0022r  )r_  rO  r   r  r  r3   r  r  r   r   r   r    r  r>   r   rt   r  r   r   r   r  rb  )rZ   r   r{  rO  r  r   r   tag_name
name_aliasr   tag_objr   s               r&   rx  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  rD  rC  r   )rZ   r  group_idr   s       r&   _get_groupszConfluenceAPIImport._get_groupsG  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   rC  )r   r   r   r   r   r   )rZ   
group_path	user_pathr4  r   s        r&   _get_group_membersz&ConfluenceAPIImport._get_group_membersM  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 )6Nrs   u2   Обрабатываем пользователя r;  
operationsT)rt   does_not_worku8   Не указан Email для пользователя r   @)rt   rs   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-0004r   r  rX  rd  r  r  )r   r   Nloginr  u+   Пользователей с почтой z > rt   u+   Пользователей с именем uQ   Обнаружена учетная запись с дублирующим email u   , добавляем цифруr   u1   Создадим пользователя ext_id=)r   r  r3   r   )r   r  
user_local)1r>   r3   rD   r   r   rb   warncmfru   CmfEmail
max_lengthr   rU   
ORG_DOMAINr  translit_stripr   r   rI   r   r    r!   r   ra   r  r   r  r  r   r@   rb  rq  r   r   r=  r  rB   r  r   r9  r  r  r   confluence_group
user_groupr  r  r   rK   )rZ   r,  r  r   rs   	user_dictmax_lenr   
is_created	full_nameru   r   not_source_hash_filterpersonsr   
name_combonr  prefix_emaildomainr  
conf_groupr  s                          r&   _process_personz#ConfluenceAPIImport._process_personS  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   r   r  r   r  rt   r_   r   r   r   r   r   r  r   r   r3   rt   r   r  send_invitesu,   Отправляем приглашения u    пользователям: )args)&r3   r`   ra   r>   r  rB   r  rN   r   rc  r  r  r   r   rs   r  rU   r  r1  r2   rJ   r   r   r    r   r   rt   r   r  r   r   rD   r   r   schedule_deferred_jobr!   register_personsrq  )	rZ   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 )Nrt   r_   r   r   r   r   r   r  r   Tr  r   r  F)r  r2   rJ   r3   r   r   r    r   r>   r   rt   r   r   r   r  r   r   r  r  r   r   )rZ   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           
      b   t          t          dd          }|s!| j        j                            d           dS | 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8|j        j                            d          pi }|                    d          pd}		 | j                            d           | j                            d|            |                    ||	          \  }
}|
|_        t(                              |d          |_        |                    d           | j                            d|            | j                            d|
            | j                            d|            |j        D ]!}| j        j                            |           "# t2          $ r?}t5                       | j                            d| d| d| dd           Y d}~d}~ww xY wt          j                    |z
  }| j        j                            d |d!d"           dS )#u   
        Пост обработка JQL в фильтрах задач макроса "Результаты фильтра"
        IMPORT_CONVERT_JQLTu   Конвертация JQL в фильтрах отключена. Для включения, измените значение параметра 'IMPORT_CONVERT_JQL'Nuj   Обработка JQL в фильтрах задач макроса 'Результаты фильтра')r  r   z%"jqlQuery":"%r   )r   r   T)r  ubqlr|  rt   r  r  r  r}  r  r  r   r   2--------------------------------------------------u   ФИЛЬТР: FrO  r   zJQL:	zUBQL:	zBQL:	u   Фильтр u0   : ошибка преобразования JQL rA  zERR-0066r  rI  uC   Обработка JQL в фильтрах выполнена за rY  rZ  )r  rU   r3   rD   r   r   r   r]  process_timer    r  rq  rt   r6   r  ra   r>   r  get_modifiedr  r   r   r|  r   r  r   r  rb  )rZ   convert_jqljqlri  task_filterstask_filter
filter_msgr/  r  r   r  r|  r  rn  ro  s                  r&   _process_jql_in_filtersz+ConfluenceAPIImport._process_jql_in_filters?  s,    f&:DAA 	O"**w   F##y	
 	
 	
 oo  *//===***///
 >== 0 
 
 ( 	 	KE[-EE+2BEEEJ/599*EEE !17;;IFFL"G!++m44;K##H---##$AZ$A$ABBB,,UK@@	c#' "&**Su*"E"E  T 222##$4U$4$4555##$4d$4$4555##NSNN333!$ > >IO*229====>   ))nJnn`ennilnn+ *           2%##$zjl$z$z$z$z{{{{{s   DH))
I234I--I2c                 n   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           t.          j        sR	 d| j        j        j        j         d|d          d}| j                            || j        j                   # t8          $ 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   Отключена обработка ссылокr  r_   c                     g | ]
}|d          S r^   r$   ru  s     r&   rv  z6ConfluenceAPIImport.process_import.<locals>.<listcomp>  s    $O$O$O3SY$O$O$Or%   u'   Импортирован проект 'rt   r~  r   )rD   uC   Не удалось создать отчет по проекту. N)r  r3   r  r@   rB   r  r  r  r2   closer  r  r  r`   ra   r>   process_cross_linksrD   r   r   r  r  r   rU   IMPORT_COLLECT_STATSr   r   project_statsr   rH  )rZ   r  r@   r{  project_ext_idrn  s         r&   process_importz"ConfluenceAPIImport.process_import|  sL    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	I66
J, "J''J,c                     |                     dt          j        d          i          s |j        dk    s|                     d          r'|                    |                                           |S )uS   
        Из документов MS создаем наши превью
        rL  
backgroundr  r  )r   r  compilert   r  create_preview_tag)rZ   r   r4  s      r&   _create_previewz#ConfluenceAPIImport._create_preview  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.        |_,        |j,        |_/        |0                    d@           tc          tA          |j(                  dA          5 }|2                    |3                                ddBC           d|_4        |0                    d@           d d d            n# 1 swxY w Y   nL| j        %                    dD| dE| dF| dGdH|1           	 | j        j                            d|            
kt,          j)                            |g dI|J          }|r|                    d	          r#|j        d	         |j        dK<   |j5        j6        |j        d	<   d|j        d<   |                    dL          r|j        dL         |j        dM<   |j        dL= to          j8        |j        d	                             d          d                   }|rI|d         rA|d         	                    dN          r&dN|_9        dO|j        dO<   dP|j        dQ<   dP|j        dR<   n;|r#|d         r1|d         	                    dS          s| :                    ||           |                    d          r
|j        d         |j        d<   |j5        j6        |j        d<   d|j        d<   to          j8        |j        d                             d          d                   \  }}|r|	                    dN          rodN|_9        dO|j        dO<   dP|j        dQ<   dP|j        dR<   |;                    dT          } |j        d         | j        d	<   || j        d><   |<                    |            n| :                    ||           | j        j                            d|j5                    nc|j                            d          dk    rE| j        %                    dU| dV|1           	 | j        j                            d|            vn$#  | j        %                    dWdX|1           Y nxY w| j        j                            d|            # | j        j                            d|            w xY wd S )YNr   c                 V    |                      d          p|                      d          S r   r   r   s    r&   r  z4ConfluenceAPIImport._convert_links.<locals>.<lambda>  s$    #,,v2F2F2]#,,W\J]J] r%   r^  u   Уже обработали u'   Не обработали ссылку u&   Обрабатываем ссылку u    на странице r   r   rS  )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   rQ  r:   z!data-linked-resource-container-idr#   r  rt   ry  r  rB  zparent.import_raw_jsonr  u   Документ ID u)    с каталогом вложений 'u<   ' не найден в дампе пространства 'r.  u~   ). Возможно он находится в пространстве, которое еще не импортированоzERR-0005r  r8  r	  r   r  r  r8  Tr  r   r  r  r  r=  rE  r  rT  rU  rV  r   r>  Fr?  u   Не найден файл '   ' страницы ID r  r~  zERR-0006)r   r;  r:  )rt   ru   r   src_origsrcsetsrcset_origvideocontrolsr  r  r  imagesourceu%   Не найдено вложение zERR-0007u,   Ошибка обработки ссылкиzERR-0008)=zipfiler
  r  r>   r3   rD   r   r   r   r  r   r  r  r  lstripr   r   r   r  r  r  r   r    r#   r   r   r  r   r   r  r  r   r   r   r   r   r   rb  r  r  r   rC  r  rI   r  re   r  r  r   r   rE  r   r   r   ra   r  r  rt   r  r  r   )!rZ   r   r#  r$  make_previewr  r   r   raw_taganchor_nameanchor_link
account_idr   r  	user_namer  rel_docattach_parentrt   r"  resource_container_idrT  r  r)  resource_ext_iddoc_with_attachdownloaded_file
attach_objrO  r   r   r4  r  s!                                    r&   r   z"ConfluenceAPIImport._convert_links  s   %%&]&]^^ a	` a	`C``9==11 O*//0Ts0T0TUUUz &../^Y\/^/^____y &++,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~ ` &../^Y\/^/^_____ #),"4"4W]5K5R5RSV5W5W"X"XK%+["A"AK"A"AK-0Yv->CIk*(3CIf%15CIo.O*//0V0V0VWWWR &../^Y\/^/^____M 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x &../^Y\/^/^____s 	"=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 V &../^Y\/^/^____O &***44 !$?@@ ! ',G H HL X X;B;;Gb;c;c789@E^9_9_56-4[[-G-GM* @ &../^Y\/^/^____{ 	"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` &../^Y\/^/^____] !'|++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    !F &../^Y\/^/^____A '-&>&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$97A7L
 4&OOO===!$';"<"<dCC >q&22 !-1+0 3   
 :>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\/^/^____Ca	` a	`s   <v?C&v
Bv>C6vC=v;Bv.B v3H1v	FvAh."v.h2	2v5h2	6+vK&vwv31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  r3   rD   r   r
  r>   r   r   r   r  r   r_   r  r   rt   rH  r  r  r   rb  )rZ   r   r#  r$  r)  r   r   r  rI  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                 D   |dk    rdS 	 |                      |          }|                     |dd          \  }}|st          d|           nR# t          $ rE}|r | j        }| j        rd| nd}| j                            | d| d|d	
           Y d}~nd}~ww xY w|S )u  
        Возвращает пользователя по какому-либо идентификатору (id, имя, логин, email и др.).

        Args:
            user_id (str): Идентификатор пользователя для поиска.
            obj (optional): Объект в контексте которого был поиск пользователя. Defaults to None.
            raise_on_error (bool, optional): Вызвать исключение при ошибке поиска
                или вернуть резервного пользователя ('Система' или пользователь по умолчанию).
                Defaults to False.

        Raises:
            Exception: Исключение при ошибке поиска пользователя.

        Returns:
            CmfPerson: Объект пользователя.
        unknownNFue   Пользователь с указанными данными не найден в системе: u   по умолчанию u   'Система'u;   . Будет установлен пользователь zERR-0023r!   r  )r.  r  r   rd   rc   r3   rb  )	rZ   r4  r   r  r   r   r   rn  
person_msgs	            r&   r   zConfluenceAPIImport._get_person  s,   $ i4	0099D,,T5%@@IFA P  !O  IM  !O  !O  P  P  PP 	 	 	 
.DHDYq@@@@_q
))ccWacc)(	 *        	 s   AA 
B;BB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  r  macroParamsrt   ra   r5  r6  r~  r7  extensionKeyr8  r.  r_   r}  r\  rA  r9  r  N)r    rC  r>   r   r  r-  rt   r  ra  r  r  r3   rb  )
rZ   r   elemr   r;  r[  r"  r4  rn  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rw  c                 P!   dd l }t          |          }d}t          |          D ]}| 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                   nv|d         d                             d-          ry|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*        |_(        |j(        |_+        |,                    d:@           t[          tE          |j#                  dA          5 }|.                    |/                                d:dBC           d:|_0        |,                    d:@           d d d            n# 1 swxY w Y   t&          j         !                    d'd5| dDgd4d5| d6gg d7gg dE9          }|r#tE          |j#                  $                                r|j1        } t&          j                            d'd3| gdFdG|ggH          }!|!sKt&                              | ||j%        |j(        |j(        | j        d:I          }!|!,                    d:@           t[          tE          |j#                  dA          5 }|!.                    |/                                d:dBC           d:|!_0        |!,                    d:@           d d d            n# 1 swxY w Y   ntE          | j        2                                          3                    dJti          | j5        j                                        d&                   dK|dL          }"| j        6                    dM| dN| dO|" dPdQ|R           	7|}t&          j                            dFdG|gd'd5| dDggdSg9          }!dT}dT}#|d         d         d#                             d          r |d         d         d#         d         d          }|d         d         d#                             dU          r |d         d         d#         dU         d          }#|j1        j7        |j8        j7        ||#dV}$|!r|!j9        |$dW<   nd$|$dW<   t1           |                    dd$          j        di |$d)          }|
                    |j                   n|d         d         dXk    r>dY}%ti          |j8                  }&ti          |j1                  }'dB|&|&dZd$d[dBd\}(|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          |*j1                  }'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                    |(dBu          |-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   rU  layoutSectionr  r?  rV  zmceNonEditable selected)contenteditablezdata-layout-sectionr  r  c                 N    g | ]"}d |j         d         vd|j         d         v |#S )zfixed-widthr  singler  ru  s     r&   rv  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>2  sJ     j j js'sy/AAAhVYV_`gVhFhFh FhFhFhr%   r  columnLayoutr   rQ  r  r  r   zflex-basis: )zdata-column-widthzdata-layout-columnrL  c                 6    g | ]}t          j         |          S r$   )rH  r  s     r&   rv  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>>  s     *V*V*VA49Q<<*V*V*Vr%   	extensionlocalIdzdata-local-idu&   Не удалось найти тег u    для r  macroMetadatar  macroIdr  ra   rn  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)  rY  r  rt   rq  r  ru  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>
                    rv  r  diagramNamer5  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   r8  r	  r   r  r  r  r  Tr=  rE  r  rT  rV  r   r>  Fr?  r  )r  rt   r   r   r   r   )rt   r   r  r  r  r3   r   ry  r  rB  u7   Не найден файл Draw.io диаграммы 'r  r  r~  zERR-0010r  r   r  r  r  r  ry  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>
                    r@  rA  )rB  r!  rU  rC  rG   rD  rE  rL  rB  r:   r~   rU  uE   Не удалось обработать тег оглавления rJ  rC  rK  rG   rL  rM  rN  rO  rD  r'  r  r  rQ  rS  rT  rE  r4  c              3   6   K   | ]\  }}| d |d          V  dS )r8  ra   Nr$   )r   r*  r+  s      r&   r  z9ConfluenceAPIImport._convert_atlas_doc.<locals>.<genexpr>  s8      2k2k41aa3F3F!G*3F3F2k2k2k2k2k2kr%   rO  )r*   r]  r
  r<  zpaste-code-macro)r  r^  rt  r   prezlanguage-markupr,  )r  r  zdata-mce-selected__bodyContentr  r]  r  bodiedExtensionre  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  ru  s     r&   rv  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  s?      pR  pR  pR  ~Apstwpxpx  pR  pR  pRr%   rj  u   Не нашли тег для r$   )Dr  r   rW  r3   r  r  r
  r  rk  r   r  ra  r  r>   r   rD   r   r   ra  r    r  r  r   r   r   r   r  r  r  rC  r   r   r  r  r   r   r   r  r   rI   r  re   r  r  r   r   rE  r   r   rt   r   r   r   r  rb  ra   r_   r   r   r   r=  r#   r  r  r3  r   r  r_  )2rZ   r   rw  rZ  r[  r  cntr  r  tag_layout_sectionr   rk  r  colr  tag_layout_colr  macro_paramsrT  rr  rl  r   rw  rt   r"  r4  r  r  r  rO  r   
drawio_imgfile_name_imgr  r5  r  r  r)  r  r]  r
  r<  parent_pagerb  rc  original_params_strnew_soup
code_blockr   ra   s2                                                     r&   r_  z&ConfluenceAPIImport._convert_atlas_doc#  s    )nnY'' j	S j	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 fc=6}EmTU\]D $I#155Sy5QQF H " [%"&w-"=m"LX"VW^"_(,(>(E(Q%^%^U\%^%^
!'!9!>!>!'d 3!-v*7I7I7I J 9 9 9$
 $E#D#D "? " " " O%d6;&7&7&>&>&@&@ O%%+%9%9%.'*+/?04	 &: & &F  &5 E&:P:T:TU^:_:_ E5;5KI5V 28J8N8Nv8V8V 5$6$:$:4$@$@!I(:4(@(HK(W(W8<8H8H(:4(@(O9& 9&F$5$5 9:8HF$5393D 0"KKDK999!%d6;&7&7!>!> >! & 2 2$%FFHH15/4 !3 !" !" !"
 :> 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=7L393D282C37?8< 2F 2& 2&J %/OOO$E$E$E%)$z*?*?%F%F !F!$.$:$:()5938 %; %& %& %&
 BFJ$>$.OOO$E$E$E!F !F !F !F !F !F !F !F !F !F !F !F !F !F !F )-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RUj	S j	Ss&   A]!!]%	(]%	'Ab;;b?	b?	)Fr  )r&  )r   r  )TT)T)NFr  )yr   r   r   r   r  r   r    	CmfImportr[   rY   rH   rq  rz   staticmethodr	   r   r   r   r   r   r   r   r   r   r   r$  r8  r.  rq  r  r  r  r  r  r#  rH  rZ  r^  rk  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r   r%  r*  r6  rV  ry  r|  r  r  r  r  r  rU   IMPORT_OBJ_CNTr  r  r  r  r  rc  rb  r-  rd  re  rs  rg  rh  rl  rm  rn  ro  rp  rq  r`  ra  rn  ri  rt  rj  rk  rf  rr  r  r  r  r+  r-  rF  rO  rU  rb  rh  r  rx  r  r  r  r  r  r  rb   r  r  r   r  r   r  r_  r$   r%   r&   r-   r-   *   s       EE $$= $$f>N $$ $$ $$ $$L
2 
2 
2A A A8d 8 8 8 8 0d 0t 0 0 0 \0    9U 9U 9Uv  B 3        # # #@t @td @t @t @t @t @tDM M M2w w w w$LH LH LH\S/ S/ S/j2 2 2hc+ c+ c+J  >< < <|A A AFe" e" e" e"NA- A- A- A-F/- /- /-bl l l l\#N #N #NJ  # # # 9% 9% 9%v. . . . .
7 
7 
7S3 S3 S3j$ $ $L' ' '>J J J9 9 98;# ;# ;#z? ? ?B& & && & &B$ B$ B$ B$ B$H       \0{ { {zD D D DL  \$ \ \ \ \| ' ' \'R     "> > > >D=R    ./# /# /#b    4 '  '  'Dg# g# g#R.H .H .H`4 4 4l_" _" _"B   @z9 z9 z9x<9 <9 <9|J9 J9 J9XA9 A9 A9FU9 U9 U9nl9 l9 l9\G9 G9 G9RP9 P9 P9d|9 |9 |9|g" g" g"R/> /> />b-> -> ->^ N" N" N" \N"`H9 H9 H9T[8 [8 [8 [8zR9 R9 R9h:9 :9 :9x@9 @9 @9D$J $J $JL  &:- :- :-x5J 5J 5J 5Jn\ \ \|  &!, !, !,Fj! j! j!X  :39 39 39j3% 3% 3%jf f fP	'4 ' ' ' 'R# # ## # #c" c" c"D c" c" c" c"J'` '` '`R  <;| ;| ;|z2# 2# 2# 2# 2#h  d` d` d` d`LBM3 BM BM BM BMH' ' ' 'R   0pS pS pSRU pS pS pS pS pS pSr%   r-   )#rH  r  r  r  r]  r2  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ifS ifS ifS ifS ifS ifS ifS ifS ifS ifSr%   