
    	i                    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                   N   e 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dxdefdZdefdZd ZdededefdZd ZdydZd Zd Zd Zd Zd Zd Z d  Z!dyd!Z"dzd#Z#d$ Z$dyd%Z%d& Z&d' Z'd( Z(d) Z)d*efd+Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2defd4Z3d5 Z4ed6efd7            Z5d8 Z6dyd9Z7d: Z8d;efd<Z9ed=             Z:d> Z;d{dAZ<dB Z=e>j?        fdCZ@dD ZAdEe
fdFZBdG ZCdH ZDdI ZEdJ ZFdK ZGdydLZHdM ZIdN ZJdO ZKdP ZLdQ ZMdR ZNdS ZOdT ZPdU ZQedydV            ZRdW ZSdydXZTdY ZUdZ ZVd[ ZWd\ ZXd] ZYd^ ZZdyd_Z[d` Z\da Z]db Z^dc Z_dd Z`de ZadfefdgZbdh Zcdi Zdd|dkedefdlZedm Zfdn Zgdo ZhdeifdpZjdq Zkd}drZldefdsZmd~dtZndyduZoddvedefdwZpdS )ConfluenceAPIImportu;   Класс загрузки объектов через API
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/                      | _        d| _        t4          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)r.   r/   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_objsdump_page_versionsconfig$IMPORT_CONFLUENCE_DUMP_LAST_PAGE_VERdump_last_page_vertype_model_map_set_fallback_person)selfr.   r/   r@   s       r&   __init__zConfluenceAPIImport.__init__-   s&   $$#++ & 2 6 6<T 6 U U] ""#:;;/09.4555%%'''!?  	('DM01-,-)FF	!ee #("("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)r/   json_settingsvaluer:   bool_is_default_userr    r!   _fallback_persongsystem_user)rR   rU   s     r&   rQ   z(ConfluenceAPIImport._set_fallback_personP   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queuerM   IMPORT_THREADSthreading_max_forks"IMPORT_CONFLUENCE_DOWNLOAD_THREADSdownload_threading_max_forksr/   get_max_processesmax_processes)rR   r`   ra   s      r&   rD   z,ConfluenceAPIImport._prepare_multiprocessing\   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)rl   fieldsselectedObjects)rl   rY   import_type)r   r]   current_personrk   rl   rR   s    r&   calc_import_settingsz(ConfluenceAPIImport.calc_import_settingse   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 rl   r$   .0ss     r&   
<dictcomp>z;ConfluenceAPIImport._normalize_settings.<locals>.<dictcomp>n   s    ///&	1///r%   r$   )rs   s    r&   _normalize_settingsz'ConfluenceAPIImport._normalize_settingsk   s     0/h////r%   c                     g S )uo    Для импорта из Confluence предварительный просмотр не требуется r$   rq   s    r&   previewzConfluenceAPIImport.previewp   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::rW   rl   ext_idLIKE%filterupdatereadonlyr   Tsave_importparent==r/   !=N)r   r/   access_levelsubjects)_get_restrictions_get_personrE   appendr.   rF   r/   pluginsource_hashr    CmfPersonGroupr:   import_originalperm_policy
is_changedsaveperm_aclloadCmfAccessRulebulk_delete)rR   docdoc_objpermsr   restrictionr   person
group_infor   _filterr   s               r&   _process_restrictionsz)ConfluenceAPIImport._process_restrictionst   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 (возможно не тот домен): rW   )splitr   r   lenreplacer.   get_page_by_title	Exceptionr/   r@   warninginfor   )	rR   urlr2   splitted_url_spacetitlefind_confl_doces	            r&   _get_pageid_by_urlz&ConfluenceAPIImport._get_pageid_by_url   s   yy~~bcc"1%}})//44|!!l1o&?&? Ox// Ow..?DK |!!l1o&B&B!-Aq%c3//!%!B!B5%!P!P   &..tZ]tt`etthmttqrttv v v " &.. [  GJ  [  [  MY  [  [\ \ \O"''N(;(;<<<!$'Ds   31C% %
D%/+D  D%Frl   c                 d   | j                                                             | d          }| j                                                             | d          }|                                r|sd S t	          |d          5 } |            D ]G}| j         xj        dz  c_        |                    t                              |          dz              H	 d d d            n# 1 swxY w Y   t          j
        ||           | j                             d           t                       d S )N.jsonz.json.dirtya+r   
T	only_data)r/   get_download_pathjoinpathexistsopenrH   r   jsondumpsshutilmover   
cmf_commit)rR   api_funcrl   	overwrite	file_pathfile_path_tmpfrows           r&   _simple_dumpz ConfluenceAPIImport._simple_dump   sc   O5577@@DPP	99;;DDEYEYEYZZ 	i 	F-&& 	0!xzz 0 011Q611

3$.////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	M9---t,,,s   AC''C+.C+c              #   $  K   | j                                                             | d          }|                                rJt	          |d          5 }|D ]}t
                              |          V  	 d d d            n# 1 swxY w Y   d S )Nr   r+)r/   r   r   r   r   r   loads)rR   rl   r   r   r   s        r&   _simple_getzConfluenceAPIImport._simple_get   s      O5577@@DPP	 	*i&& *! * *C**S//))))** * * * * * * * * * * * * * * ts   "BB	B	c              #   H  K   | j                                                             d          }t                              |          D ]X}t          |                    |                    5 }t                              |          V  d d d            n# 1 swxY w Y   Yd S )Nr   r/   r   r   oslistdirr   r   r   )rR   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/c              3       K   | ]}|v V  	d S Nr$   )rx   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   rW   )r   
obj_ext_idr   )r/   r   r  r   Fu6   Не удалось обработать ссылку r   )'r/   r@   r   r   find_allr   attrsanyresearch
startswithr   urllibparser   schemenetlocurljoinr.   r   unquoter   	mimetypes
guess_typer    r#   _get_filenamer   r   r   CmfImportDownloadr:   r   rl   
downloadedr   r   r   cmf_rollback)rR   r   r   r   r   key	url_partsemail_pattern
parsed_urlrl   	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4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q:	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r=   r4   )usernamer   c              3   :   K   | ]\  }}|vs|d k    ||fV  dS ) Nr$   )rx   kv	user_infos      r&   r   z5ConfluenceAPIImport._get_user_info.<locals>.<genexpr><  sJ       !C !CDAq$%Y$6$6!r'' #$Q:A'''!C !Cr%   
users.jsonr   r   u4   Информация о пользователе ID u    добавлена в дамп)_get_user_info_from_dumpr.   get_user_infoget_user_info_by_keyget_user_info_by_usernamerF   get_user_detailr   itemsr   r   r   r   r   r/   r@   r   )rR   user_id	dump_pathr=   user_detail
users_pathr   r%  s          @r&   _get_user_infoz"ConfluenceAPIImport._get_user_info,  s1   	M00999	M<F55gf5MMI Y O@@QW@XX	 ^ OEEgV\E]]	 M?( b"&/"A"A9U`Ka"A"b"bKK"&/"A"A9U_K`"A"a"aK   !C !C !C !CK4E4E4G4G !C !C !C C C C '//==
*d++ :qGGDJJy11D8999: : : : : : : : : : : : : : : &++  -Lcj  -L  -L  -L  M  M  M  M  M  MM M Ms.    DF1EFE	F"E	#&FNc                    |                      d          D ]}|                    | j                  |k    r|c S |                    dd                                          |                                k    r|c S |                    dd                                          |                                k    r|c S |                    dd                                          |                                k    r|c S |                    dd                                          |                                k    r|c S |                    dd                                          |                                k    r|c S |                    dd                                          |                                k    r|c S t	          d	|           )
Nr   rl   r"  r   userNamerk   displayNamefullNameuQ   Не нашли информацию по пользователю в дампе )r   r:   rE   lowerr   )rR   r-  r   r%  s       r&   r'  z,ConfluenceAPIImport._get_user_info_from_dumpE  s   ))'22 	! 	!I}}T]++w66    }}VR((..00GMMOOCC    }}Z,,2244GG    }}Z,,2244GG    }}Wb))//11W]]__DD    }}]B//55777==??JJ    }}Z,,2244GG     Hulsuuvvvr%   c                    | j         dk    rdn	d| j          }| j        j                            d| d|            |                    d          }g }|                    d          }|                                rBt          |d          5 }t                              |          }d d d            n# 1 swxY w Y   t          j
                    }		 |                    d	          }
t          |
d          5 }t                              |          }d d d            n# 1 swxY w Y   |                    d
          }|                                rt                              |           t          |d          5 }d}| j        j        r|dz  }| j                            ||d         d         || j                   D ]}t!          |t"                    r%| j                            d| d| ddd           =|                    t                              |d          dz              | j        xj        dz  c_        | j                            d           |                     |d         d         d         d         ||           |                    d          r7|d         d          d!k    r%|d         |vr|                    |d                    	 d d d            n# 1 swxY w Y   d|d"<   t          |
d#          5 }t                              ||d           d d d            n# 1 swxY w Y   n;# t"          $ r.}| j                            d$| d| d%dd           Y d }~nd }~ww xY wt          j
                    |	z
  }| j        j                            d| d&|d'd(           t          |d#          5 }t                              ||d)d*           d d d            d S # 1 swxY w Y   d S )+Nr      Все версии.   Последние: u)   Дамп версий документа . attachmentsr&  r	info.jsonzversions.jsonr   zNcontent.version,content.body.view,content.body.editor,content.body.export_viewz,content.body.atlas_doc_formatversionnumber)current_versionr=   last_versions6   Не удалось сдампить документ r   zERR-0038r#   dump
error_codeobj_type
error_typeFensure_asciir   r   contentbodyexport_viewrY   bytype	anonymousrL   w+uE   Не удалось сдампить версии документа ERR-0025    выполнен за .3f    сек.r   indentrI  )rO   r/   r@   r   r   r   r   r   r   time	monotonicr   remover.   rF   get_page_versions
isinstancer   	log_errorr   r   rH   inc_statr  r:   r   rC  )rR   r*   doc_pathdoc_log_msgnum_ver_msgr   	doc_users
users_filer   t1	info_filedoc_dataversions_file_namer=   page_versionexct2users_fs                     r&   _dump_versionsz"ConfluenceAPIImport._dump_versionsW  s   040G20M0M,,  TDjn  kB  TD  TD##$lP[$l$l_j$l$lmmm"++M::	&&|44
 	)j#&& )! IIaLL	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ^4	; ))+66Ii%% (99Q<<( ( ( ( ( ( ( ( ( ( ( ( ( ( ( "*!2!2?!C!C!((** .		,---($// A1i?( ?>>F$(O$E$E$,Y$7$A!"&"9	 %F % % A AL ",	:: !11qU`qqcoqq'1MV\ 2    !GGDJJ|%JHH4OPPPO55:55O,,Y777$$$Y/7FwO'    $''-- A,t2DV2LP[2[2['-Y>>%,,\$-?@@@5AA A A A A A A A A A A A A A AT .3H)*i&& ;!		(AE	:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  	 	 	O%%lXcllgjll%&!	 &        	 ^"##lll\^llll	
 	
 	
 *d## 	HwIIiIGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   B44B8;B8%L> 8DL> D##L> &D#'AL> =EK(L> (K,,L> /K,0L> L22L69L6>
M6$M11M6O22O69O6c           	      "     fd} fd} fd}t          d          5  d}	 |                                }||                    |           n j        j                            d|                                            d	|d
          d|d          d}	  j                                        rn@|d         dk    r+ j                            d| dt          j
                   t          d          D ]}		  ||d         |d         |            ||d         |d         |            ||d         |d         |           |d         r#                     |d         |d         |            n:#  |	dk    r  j                            d| d|	 t          j
                   Y xY wn-#   j                            d| ddd           |dz  }Y nxY w|                    |           d d d            d S # 1 swxY w Y   d S )Nc                 F   j         j                            d|            d j                            |           D             }|                    d          }t          |d          5 }t                              ||           d d d            d S # 1 swxY w Y   d S )NuI   Дамп списка дочерних страниц документа c                     g | ]}|S r$   r$   rx   r   s     r&   
<listcomp>z_ConfluenceAPIImport._dump_documents_expand_worker.<locals>.dump_child_pages.<locals>.<listcomp>  s    LLLLLLr%   
pages.jsonrP  )	r/   r@   r   r.   get_childrenr   r   r   rC  )r*   r^  r_  children
pages_filer   rR   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&  r<  zrestrictions.jsonu%   Дамп прав документа r   r   r   r   r   zrestriction )rP  r   FrU  )r   r   r   r   r   r   rY  r/   r@   r   r.    get_all_restrictions_for_contentr   r   r   rC  )
r*   r^  r_  ra  rb  r   restriction_filer   r   rR   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   rY  r/   r@   r   r   r.   get_all_page_labelsr   r   r   )r*   r^  r_  lables_filer   labelrR   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   " (rW   rw  statustrashed   Документ uW    был удален. Пропускаем дамп расширенных данныхrC   r   r   rL      uO   Повтор дампа расширенных данных документа    , попытка u\   Не удалось сдампить расширенные данные документа rQ  r#   rC  rD  r   )r   r:   putr/   r@   r   qsize	is_cancellogr>   WARNINGrangerk  r\  )
rR   
page_queueobjs_that_are_doneru  rz  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                 0   d}| j                                         }| j                                         }d}|                                D ]}|                                rt	          |j                                      d          s|dz  }|                    d          }t          |d          5 }	t          
                    |	          }
d d d            n# 1 swxY w Y   |
d         |
d         t          |
d                   |
d	         |
                    d
          p| j        d}|                    |           |                    d            | j        j                            d|            g }t%          |          D ]x}| j                            | j        d|dz    ||d          }|                    |           |                                 | j        j                            d|            y|D ]}|                                 ~|j                                          |                                s+||                                z  }|                                +| j        j                            d|            |S )Nr   .dirty.trashed.metar   r=  r<  rW   r   r   r  rL   )rW   r   r   r  rL   uC   Дамп расширенных данных документов: z_dump_documents_expand_worker )r  r  targetrl   kwargs   Форк proc=uR   Ошибок дампа расширенных данных документов: )ra   Queueiterdiris_dirr   rl   endswithr   r   r   r   r   r:   rL   r  r/   r@   r   r  r`   Threadr  r   startjoinclearempty)rR   objs_dirmax_workersr  r  r  
page_countdoc_dirrd  r   	info_datadataprocessr  procs                  r&   _dump_documents_expandz*ConfluenceAPIImport._dump_documents_expand  s   Z%%''
!Z--//
'')) 	% 	%G~~ %GL(9(9(B(BCb(c(c %a
#,,[99	)S)) -Q $		!I- - - - - - - - - - - - - - - $D/&w/ 6!233'1 +4--8L*M*M*hQUQh	 	 t$$$t##$vjt$v$vwww{## 	A 	AA>((9=a!e==",*<  )  D NN4   JJLLLO"''(?(?(?@@@@ 	 	DIIKKK   $**,, 	/(,,...F %**,, 	/##  %By  %B  %B  	C  	C  	Cs   2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                 r   d| d          d| d          d}                     t          | d                             }                     | d          d          }|                    d           g }| d	         d
         |vr!|                    | d	         d
                    | d	         d         d         |vr'|                    | d	         d         d                    | d	                             d          }|r=|d         dk    r1| d	         d         |vr!|                    | d	         d                    | d         d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         d         }n.t          j        d|          }|r|                    d          nd}|                     | d|           }|                     d| d|           }|
 d| }t$          j                            |j
        j        j        j        g d           }|s6t$                              |j
        j        j        j        j
        !          }||_        ||_        ||_        |j        s|                                s"d"|_        ||_        |                                 t9                                           | d#         d$         d%         ||            |                     d&          }|                                rt<                              |           j
        j         !                    d'|            t          |d(          5 }	j"         d)}j        #                    | d         |*          D ]{}|	$                    t          %                    |          d+z              j
        xj&        dz  c_&        j
        '                    d,                               |d#         d-         d%         ||            |d	                             d          r1|d	         d         |vr!|                    |d	         d                    |d	                             d
          r1|d	         d
         |vr!|                    |d	         d
                    |d	                             d          r=|d	         d         d         |vr'|                    |d	         d         d                    }	 d d d            n# 1 swxY w Y   d| d.<   |                     d/          }t          |d          5 }	t          	                    ||	d0d"1           d d d            n# 1 swxY w Y   tQ          j)        ||           t          |          | d2<   |                     d3          }t          |d          5 }	t          	                    | |	d"4           d d d            n# 1 swxY w Y   | d         dk    r|                    d           j
        *                    d5| d6           j
        '                    d7           d S )8Nr  r   r  rW   rw  r  Texist_okhistory	createdBylastUpdatedrM  ownedByrN  rO  r6   r;  attachments.jsonc                     g | ]}|S r$   r$   ro  s     r&   rp  zUConfluenceAPIImport._dump_documents_main_worker.<locals>.dump_doc.<locals>.<listcomp>C  s%       C  r%   r>  )page_idr=   rP  )moder   _linksdownloadr?  z[?&]version=(\d+)r   .)rl   r   r   )r  r   rm   )r  r   r/   FrK  viewrY   zcomments.jsonu5   Дамп комментариев документа r   z@,extensions.inlineProperties,extensions.resolution,children.pager  r   commentrL  rL   r&  r   rU  r   r=  rH  r  u     успешно сдампленr)   )+r   r   mkdirr   r:   r.   get_all_attachmentr   r   rC  r/   r   r   
url_joinerr   r  r  r   r    r  rl   r   r   r   r   r  import_raw_jsonr   r   r  r   rY  r@   r   r=   get_page_commentsr   r   rH   r]  r   r   r  )r   r_  r  doc_dir_tmpra  ownerr   rd  attach_infor   
doc_ext_idattatt_idr  download_linkdownload_urlr>  attachment_pathattachment_path_tmp
att_ext_idr  comments_file_namer=   r  r0  	info_pathr  rR   s                             r&   dump_doczAConfluenceAPIImport._dump_documents_main_worker.<locals>.dump_doc,  s   =s7|==T===K''CI77G"++s4y,@,@,@AAKt,,, I9~k*);;  Y!<===9~m,T2)CC  Y!>t!DEEE	N&&y11E @v+55y>),I==$$S^I%>??? 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''"%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 KW---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   1GG G:F*W11W58W5&YYY([[[Fr  r   Tz,versionr  r=   r  r  currentarchivedr  r  r   r  rW   rw  u   Дамп документа r   r  u+   Повтор дампа документа r  r   u    из 3r  rB  r:  rQ  r#   rC  rD  )r   r:   r  r.   get_page_by_idr=   r/   r  r@   r   r  r  r>   r  rH   r   r\  )rR   r  bulk_page_queuer  r  r  page_idsr  r  r  r  rh  s   ``          r&   _dump_documents_main_workerz/ConfluenceAPIImport._dump_documents_main_worker+  s   r	1 r	1 r	1 r	1 r	1 r	1h 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.   Ошибок дампа документов: )ra   r  r  r`   r  r  r   r  r/   r@   r   r  r  r  r:   )	rR   r  r  r  r  r  r  r  r  s	            r&   _dump_documents_mainz(ConfluenceAPIImport._dump_documents_main  sb   !Z--//{## 	A 	AA>((7;AE;; ('6*<  )  D NN4   JJLLLO"''(?(?(?@@@@ 	 	DIIKKK##%%%$**,, 	/(,,...F %**,, 	/##$]U[$]$]^^^r%   c                    d}|d         }| j         }d}| j                                        }| j        j                            d| d           d}g }	t          j                    }
|                                D ]}|	                                r't          |j                                      d          s>|dz  }|j                            d          d         }|	                    t          |                     t          |	          |k    r|                    |	           g }	|	r|                    |	           |                    d            t          j                    |
z
  }| j        j                            d	|d
d           | j        j                            d| d|            t          j                    }
||                     |||          z  }t          j                    |
z
  }| j        j                            d| d|d
d           t          j                    }
||                     ||          z  }t          j                    |
z
  }| j        j                            d|d
d           | j                                        r| j        j                            d           |S )Nr   r  2   uU   Добавление страниц в очередь дампа пачками по u    страницr  r   r  uY   Добавление страниц в очередь дампа выполнено за rS  rT  uU   Дамп основных данных документов пространства r   rR  uC   Дамп расширенных данных выполнен за    Импорт прерван)re   ra   r  r/   r@   r   rW  rX  r  r  r   rl   r  r   r   r   r  r  r  r  r   )rR   r   r  r  	space_keyr  max_bulkr  r  	temp_listrc  r  r  ri  s                 r&   _dump_documentsz#ConfluenceAPIImport._dump_documents  s?   %L	7***,,##  %V  }E  %V  %V  %V  	W  	W  	W
	^'')) 	 	G>>## 3w|+<+<+E+Eh+O+O !OJl((--a0GS\\***9~~))##I...	 	+	***D!!!^"##  %Q  AC  %Q  %Q  %Q  %Q  	R  	R  	R 	##  %V  }F  %V  %V  JT  %V  %V  	W  	W  	W^$++Ho{SSS^"##  %o  }F  %o  %o  _a  %o  %o  %o  %o  	p  	p  	p
 ^$--hDDD^"##$zjl$z$z$z$z{{{?$$&& 	JO"**+HIIIr%   c                    i }| j                             |d                   }	 | j         j        rdddddddd	d
ddddd}|D ]l}|d         d         |d         d         f}|                    |          }|s7|                    ||g g dd          }|                    d          r|d                             d          rh|d         d         d         d         d         }	|                     |	| j                                                   |d                             |	           |d                             d          rZ|d                             |d         d         d         d         d         |d         d         d         d         d         d           |d         rd |d!<   nn|D ]}
|
d"         D ]}|                    |d#         |d#         g g dd          }|d$         rT|                     |d$         | j                                                   |d                             |d$                    |d%         r#|d                             d|d%         i           |d$         s|d%         sd |d!<   ƌn$#  | j        	                    d&d'd(d)*            xY wt          |d+          d,          }|                                rt                              |           t          |d-          5 }d. |                                D             |d/}t                               ||           d d d            d S # 1 swxY w Y   d S )0Nr  	EDITSPACE
REMOVEPAGEEDITBLOG
REMOVEBLOGCOMMENTREMOVECOMMENTCREATEATTACHMENTREMOVEATTACHMENT	VIEWSPACEREMOVEOWNCONTENTSETPAGEPERMISSIONSSETSPACEPERMISSIONSEXPORTSPACE))r6   create)r6   delete)blogpostr  )r  r  )r  r  )r  r  )
attachmentr  )r  r  )r   r   )r   r  )r   restrict_content)r   
administer)r   exportr   
targetTypeF)
permissionr   groupsrO  r   r   r   r   r4   r   r   r  rW   rl   )rW   rl   anonymousAccessTrO  spacePermissionsrN  r3  	groupNameu>   Не удалось сдампить права доступаzERR-0056
CmfProjectrC  )rF  rG  r   /permissions.jsonr   c                     g | ]}|S r$   r$   rx   r   s     r&   rp  z9ConfluenceAPIImport._dump_permissions.<locals>.<listcomp>}  s    CCCAaCCCr%   )	convertedoriginal)r.   get_space_permissionsrF   r:   
setdefaultr1  r/   r   r   r\  r   r   r   rY  r   valuesr   rC  )rR   r   permissions_dictpermissionsmapping_typer  r   type_permr   permission_typepermission_filer   permissions_datas                 r&   _dump_permissionsz%ConfluenceAPIImport._dump_permissions#  sN   o;;E%LIIN	$ E5 )4(4,6,8+4+:.@.@'2);3G-B)6     #. 1 1J!+K!8!F
S^H_`kHl mI(,,Y77E  ! +66*/%'&().	  D "~~j11 %j155f== 7#-j#9&#A)#LQ#OP[#\D //do6W6W6Y6YZZZ M00666%j155g>>  N11*4Z*@*I)*TUV*WX\*],6z,B7,KI,VWX,YZ`,a!" !"   ""34 1,0[)=1@ (3 5 5O&56H&I 5 5
/::&v..8.@)+*,-2	     &j1 I //
:0FHiHiHkHklll M00J1GHHH%k2 U N116:k;R2STTT)*5 5j>U 504D-#5$	O%%P%!	 &    %-BBBCC!!## 	'IIo&&&/4(( 	+ACC)9)@)@)B)BCCC'    II&***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   I!J !J' =M

MMc           	         d}d}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||fS |d}nd}t          |d          5 }|                    |           ddd           n# 1 swxY w Y   |                    |          }|                    | d          }|                    | d          }|
dk    r}| j        j                            d|	 d| d| d           |	                                rt-          j        ||           n|	                                rt-          j        ||           nj|	                                rt-          j        ||           n@|	                                rt-          j        ||           n|                    d            ||fS )!u  
        Получает минимальные данные контента с информацией о последнем изменении
        и зависимыми объектами(комментарии, вложения).
        Вычисляет хеш данных и сравнивает его с хешем предыдущей проверки,
        если хеши отличаются, то помечает каталог контента .dirty для повторного дампа
        FrW   r   rN  r  r6   r  rs  r  r   c                     g | ]}|S r$   r$   )rx   r  s     r&   rp  z;ConfluenceAPIImport._check_content_hash.<locals>.<listcomp>  s%        'G  r%      )limitr=   rs  r  c                     g | ]}|S r$   r$   )rx   r  s     r&   rp  z;ConfluenceAPIImport._check_content_hash.<locals>.<listcomp>  s%       #-J  r%   r  	ancestorsr7   Nz.hashr<  T)rI  	sort_keyszutf-8rP  r  r  u   Контент  '' (uQ   ) удален. Он не будет сдамплен и импортированr  )r   r.   r  r  rF   _folder_lock_folder_setaddr   r   r   r   r   r   hashlibmd5encode	hexdigestr   r/   r@   r   r   r   r  )rR   rJ  content_hash_dirr  comment_expandis_new
is_updated
content_idcontent_titlecontent_typecontent_statuscommentsr;  ancestorcurrent_hash	hash_filer   content_jsonnew_hashr  doc_tmp_dirdoc_trashed_dirs                         r&   _check_content_hashz'ConfluenceAPIImport._check_content_hash  s    
''
(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##:%%FFJ)T"" 	aGGH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##J//'':(=(=(=>>"++z,C,C,CDDY&& O"**U, U U- U UJ U U U  
 !!## 6K9999!! 6G_555~~ 1G[1111 '')) 1O[9999!!4!000z!!s6    !D--D1	4D1	7FFFH<<I I r  c                 v   |                     d          }|                    d           d}| d}| d}	t          d          5  d	d	d	d	d
}
	 | j        5  | j        }| xj        |z  c_        d d d            n# 1 swxY w Y   | j                            ||||d          }|sn|D ]}|d         dvrt          |d                   }|d         }|
dxx         dz  cc<   	 |                     ||||	          \  }}|
dxx         t          |          z  cc<   |
dxx         t          |          z  cc<   # t          $ rA}| j                            d| d| d| ddd           |
dxx         dz  cc<   Y d }~d }~ww xY w;|                    |
           d d d            d S # 1 swxY w Y   d S )Nr6   Tr  ancestors,history.lastUpdatedz%,children.comment,children.attachmentz2,extensions.inlineProperties,extensions.resolutionFr  r   r  allnewupdatedr  )r  r  r=   r  r  r  rW   r   r:  r   r;  r<  uB   Не удалось проверить хеш документа "r  ). rQ  r#   rC  rD  r  )r   r  r   _start_lock_startr.   get_all_pages_from_spacer   r6  intr   r/   r\  r  )rR   r  r  hash_dirhash_stats_queuer  r&  r=   page_expandr'  
hash_statsr  r   r6   r  
page_titler(  r)  rh  s                      r&   _check_page_hashz$ConfluenceAPIImport._check_page_hash  s   #,,V44---0FFF"VVV5111 +	- +	-	 J!2% ) ) KEKK5(KK) ) ) ) ) ) ) ) ) ) ) ) ) ) ) @@U%TY A    ! 2 2DH~-OOO !$t*ooG!%gJu%%%*%%%2-1-E-E ,$*	. .*
 #5)))S[[8)))"9---Z@----$ 2 2 211 Bak  B  Bpw  B  B|  B  B'1MV\ 2    #8,,,1,,,,,,,,29!2F   ,,,W+	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	- +	-sb   F.A<0F.<B 	 F.B 	A!F.&AD<;F.<
F7F=F.FF..F25F2c                    |                     d          }|                    d           t          d          5  ddddd}	 |                                }||                    |           n	 | j                            |dd	
          }|d         dvrV|dxx         dz  cc<   |                     |||          \  }	}
|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|                    |           d d d            d S # 1 swxY w Y   d S )Nr6   Tr  Fr  r   r9  r8  r  r  r  r  r:  r   r;  r<  u9   Не удалось проверить хеш папки r:  rQ  r5   rC  rD  r  )r   r  r   r:   r  r.   r  r6  rA  r   r/   r\  )rR   r  rB  folder_queuerC  r&  rE  	folder_idr7   r(  r)  rh  s               r&   _check_folder_hashz&ConfluenceAPIImport._check_folder_hash  s[   #,,V44---5111 )	- )	-	 J.(,,..	$ $$Y///.!_;;!>$ <  F h'/QQQ u%%%*%%%)-)A)A( * *&FJ
 u%%%V4%%%y)))S__<))))  . . .O--fT]ffadff#-!,#)	 .    x(((A-((((((((.1.B   ,,,S)	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	- )	-sH   5E.2'C?E.A$C?>E.?
E	4E=E.EE..E25E2c                 v   | 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}|                                sT|                                }||d         z  }||d         z  }||d         z  }||d         z  }|                                T| j        j                            d|dd| d| d| d	           | j        j                            d|            |S )Nr   r  r   z/hashTr  z_check_page_hash r   )r  r  rB  rC  r  r  z_check_folder_hash )r  rB  rI  rC  u   Запущен r  r:  r;  r<  uC   Проверка хеша контента выполнена за rS  u8    сек. (всего/новых/обновленных: r   rw  u(   Ошибок хеша контента: )ra   r  r?  r`   Lockr>  rJ   r   r  re   r   r  rW  rX  r  r  rG  r   r  r/   r@   r   r  r.   rF   r  rK  r  r:   )rR   r   r  	dump_datarC  r  r  rB  rc  r  r  r  rI  r7   threadsthreadri  r  obj_allobj_newobj_updatedrE  s                         r&   _check_hashzConfluenceAPIImport._check_hashH  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!  ^""((** 	1)--//Jj**Fz%((Gz%((G:i00K #((** 	1 	## %yjl${ %y %yV]%y %y`g%y %yju%y %y %y 	z 	z 	z 	##$Wv$W$WXXXr%   c                 j     j                             d           g }t                      }|                    d          }|                                rPt          |d          5 }t                              |          } fd|D             }ddd           n# 1 swxY w Y   t                      }t          	                    |          D ]}|                    |d          }	|	                                rt          |	          5 }t                              |          D ]H}
|
d         dk    r|
                    |
 j                            |
|vr|                    |
           I	 ddd           n# 1 swxY w Y   |	                                 t          |d          5 }t                              t          |          |d	d
           ddd           n# 1 swxY w Y   |                    |          }|D ]/}                     | j                                                    0dS )us    Собирает пользователей из файла users.json в каталогах документов u=   Сбор пользователей из документовr&  r<  c                 D    h | ]}t          |j                           S r$   )r   rE   )rx   urR   s     r&   	<setcomp>z5ConfluenceAPIImport._collect_users.<locals>.<setcomp>  s(    #Q#Q#QaC$-(8$9$9#Q#Q#Qr%   NrN  rO  rP  r   FrU  )r/   r  rJ   r   r   r   r   r   r   r   r!  rE   r   unlinkrC  list
differencer1  r   )rR   project_dirr  current_userscurrent_user_idsrb  r   new_user_idsr*   r0  r   
diff_usersr-  s   `            r&   _collect_usersz"ConfluenceAPIImport._collect_users  s   [\\\ 55 )),77
 	Rj#&& R! $		!#Q#Q#Q#Q=#Q#Q#Q R R R R R R R R R R R R R R R
 uujj** 
	$ 
	$F!**6<@@J  "" $*%% 7 $		! 7 7<;66$$((dm)<===}44)0066677 7 7 7 7 7 7 7 7 7 7 7 7 7 7 !!###*d## 	LqIId=))1QUIKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L ",,-=>>
! 	N 	NG)J)J)L)LMMMM	N 	Ns7   %)BB!BA$E99E=	 E=	),G!!G%(G%c                     | j                                                             d          }t          | d| dd          5 }t                              |          }|cd d d            S # 1 swxY w Y   d S )Nprojectsr   z
/info.jsonr   )r/   r   r   r   r   r   )rR   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 )Nrc  )r  r  r=  uN   Отсутствует файл info.json в каталоге проекта ''r<  )r/   r   r   r  rl   r  r   r@   r   r   r   r   )rR   projects_dirr\  rd  r   s        r&   _get_projectsz!ConfluenceAPIImport._get_projects  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                   }|s#j                            d|  ddd	           d S |d         d
         d         D ]'}| d                             |d         dg d           (| d         D ]&}|d         r ||          E d {V  |d         V  'd S )N	isCheckedrs  	documentsrW   u'   Документ не загружен zERR-0015r#   rC  rD  r6   r   TrW   rn  rs  )_get_documentr   r   r/   r\  r   )rl  r  doc_dumpchildrr  rR   s       r&   rr  z=ConfluenceAPIImport._load_selected_objs.<locals>.get_children  sG     K( J' h--d7mm.D.D[.Q.QS[\`Sabb  O--.bX`.b.b;EP]jp . r r r4%j1&9)D h hEZ(//uT{QUce0f0fgggg!*- & &% &+|E7;;;;;;;;;+%%%& &r%   import_settingsrn   rY   r   rn  Nc                 "    g | ]}|d          
|S rn  r$   rx   setting_objs     r&   rp  z;ConfluenceAPIImport._load_selected_objs.<locals>.<listcomp>  s#    ggg;kZeNfg;gggr%   rs  T
root_pagesrp  archived_pagesr   r  rW   r   rc  uc   Не удалось вычислить выбранные документы для проекта u4   , скорее всего он не сдамплен)r   r   r{   r/   rX   rj  r   rJ   rf  r!  r:   r   r   r@   r   rK   )
rR   rs   rootselected_spacesre  r*   resultr   rl  rr  s
   `        @r&   _load_selected_objsz'ConfluenceAPIImport._load_selected_objs  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   )r/   r   r   r   r   r   r:   )rR   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   rW   r  rP  FrH  )cmf.utilr  r.   get_applinksshort_str_encr/   r   r   r   r   rC  )rR   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        j        d                   }|d         d         d         }|d         sdS d |d         D             | _        |d         rAt	          |d                   dk    r(d	 | j                                        D             | _        | j                                                            d
          }|	                    d           | j        D ]}t          |d         d                   }| j                            |          }	 | j                                        r d S | j        xj        dz  c_        |                    |          }|                    d          }d }	d }
|                                rlt          |d          5 }t                               |          }|                    d          }	|                    d          }
d d d            n# 1 swxY w Y   d }t&          j        ;|
&|
dk    r3t&          j        dk    s|
t&          j        k     rd| _        t&          j        }|p|
pd| _        | j        j                            d|d                     |                                sJt          |                    | d                    |d<   t2                              |d         d           g |d<   | j                            |d                   D ]#}|d                             |d                    $|d         st;          d          g |d<   | j                            |d                   D ]#}|d                             |d                    $|                                st?          j         |d         |           t          |          |d<   t          |d          5 }|	|d<   | j        |d<   t           !                    ||           d d d            n# 1 swxY w Y   | j        j                            d           | "                    |           tG          |d          d          }|	                    d           | j        j                            d|            t          tI          j%                    &                                '                                          }| (                    |||	           }|sH||d<   t          |d          5 }t           !                    ||           d d d            n# 1 swxY w Y   | xj)        | *                    ||          z  c_)        | +                    ||           | j        ,                    d!           t[                       #  t]                       | j        /                    d"| d#d$d%&           Y xY wd S )'Nrt  rn   rY   r   rn  Tc                 "    g | ]}|d          
|S rv  r$   rw  s     r&   rp  z4ConfluenceAPIImport._dump_spaces.<locals>.<listcomp>*  s$    lllS^_jSkllllr%   rs  c                 $    g | ]}||d          dS )rW   )r   rW   r$   ro  s     r&   rp  z4ConfluenceAPIImport._dump_spaces.<locals>.<listcomp>-  s$    #n#n#ncCs4y$A$A#n#n#nr%   rc  r  r   r  r   r=  r<  	dump_daterO   r   u&   Дампим пространство rl   r  r   ry  rW   uJ   Пустой проект, возможно нет прав доступаrz  rP  u=   Дампим права доступа (Разрешения)
/documentsuD   Проверка хеша контента пространства )rN  r   u1   Ошибка дампа пространства zERR-0026r  rC  rD  )0r{   r/   rX   r|  r   r.   get_all_spacesr   r   r  r   	get_spacer  rH   r   r   r   r   r:   rM   rN   rL   rO   r@   r   r   makedirsget_root_pages_from_spacer   CmfError get_all_pages_from_space_archiver   r   rC  r  r   r   now
astimezonedaterT  r<   r  ra  r   r   r  r\  )rR   rs   r{  ri  rx  r  r   r\  rd  last_dump_dateprev_dump_last_page_verr   current_dumpnew_dump_last_page_verr   archived_docr  new_dump_datehash_errorss                      r&   _dump_spacesz ConfluenceAPIImport._dump_spaces%  s   ++DO,IJ[,\]])*73A6K  	4lltJ?Olll 	oT*%5!6!6!!;!;#n#nT_MkMkMmMm#n#n#nD 88::CCJOOD)))/ a	k a	kKK.u566IO--i88E]k?,,.. FF11Q611*33I>>'00==	!%*.'%%'' Yi-- Y'+yy||)5)9)9+)F)F2>2B2BCW2X2X/Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y *.&?K/73r99 & Kr Q Q#:V=h#h#h /3D+-3-X**@*`D[*`_`' &++,dUZ[aUb,d,deee"))++ >$'(=(=>R>R>R(S(S$T$TE&MKKfK===&(l#?DDU5\RR : :C,'..s4y9999\* q"#oppp*,&'$(O$T$TUZ[`Ua$b$b G GL*+22<3EFFFF"))++ <Kf{;;; #K 0 0f)T** (a)7E+&262IE./IIeQ'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (
 &++,klll&&u---5= < < <==--- &++,~s|,~,~ #HLNN$=$=$?$?$D$D$F$F G G"..uh..YY # ,)6E+&i.. ,!		%+++, , , , , , , , , , , , , , , 4#7#7x#H#HH ##K:::$$t$444k))*e^c*e*e5?,ci * k k k k kAa	k a	ks   &V*A'V*)AG:.V*:G>	>V*G>	GV*+PV*P	V*P	C:V*T:.V*:T>	>V*T>	A&V**1Wc                    | j                                                             d          }|                                rd S |                    d           | j                                        D ]}| j        j        rt          |d                   }n=t          |d                   	                    dd          	                    dd          }|                    |          }|                    d           |                    d	          }| j         xj
        d
z  c_
        t          |d          5 }t                              ||           d d d            n# 1 swxY w Y   |                    d          }| j                                                             d          }|                    d           |                    d           | j                            |d                   D ]}	|                    |	| j                 dz             }
| j         xj
        d
z  c_
        t          |
d          5 }t                              |	|           d d d            n# 1 swxY w Y   |                    |	| j                 dz             }
|
                                rt          |
d          5 }t                              |	|           d d d            n# 1 swxY w Y   d S )Nr  Tr  rW   rl   r   r   r   r=  r   rP  r   r   )r/   r   r   r   r  r.   get_all_groupsrF   r   r   rH   r   r   rC  get_group_membersrE   )rR   
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                    | j                                         }t          j        |          \  }}}||z  dz  }| j         j                            d| d           | j         j                            d           | j         j        j                            dd          r@| j         j                            d           | 	                    | j
        j        d           n&| j                             d	t          j        
           |                                  |                                  d}|                     d          D ]}|dz  }| j                             d|           d S )Nd   u   Свободно места: r   u$   Скачаем данные из API
load_usersTu'   Дампим пользователейr   uA   Не дампим пользователей из-за опцийr  r   r   r   )rY   )r/   r   r   
disk_usager@   r   rX   rY   r:   r   r.   get_all_usersr  r>   r  r  r  r   r]  )rR   download_pathtotalusedfreefree_percentuser_cntr   s           r&   download_dataz!ConfluenceAPIImport.download_data  sh   99;;"-m<<tTe|c)##$SL$S$S$STTT##$JKKK?(.22<FF 	|O"''(QRRRdo;WEEEEO ckrkz{{{ 	 	!!'** 	 	AMHH  x 88888r%   c                    d}t          d          5  	 | j                                        rn|                                }|dk    rnt          j                            |g d          }t          |j                  }t          |j                  }t          |j	                  }t          |j
                                      d          }	t          |	          d	k    rd
|	d	          dnd}
d| d}|j        r!|j        d         d         }|dz  }| d|dd}| j        j                            |
 d| d| d           	 | j                            ||t$          j                   | j        j                            |
 d| d| d           d|_        |                                 t-                       | j                            d           nO# t0          $ rB}t3                       | j                            |
 d| d| d| ddd|           Y d }~nd }~ww xY w|                    |           d d d            d S # 1 swxY w Y   d S ) Nr   Fr  TDONE)rl   r   r   r  r  )rW   rm   r   r   u   [Страница ID: z] r"  rh  
extensionsfileSizei    (z.2fz MB)u   Скачивание : ')timeoutu	   Файл u    сохранен в 'r  u"   Ошибка скачивания z'. zERR-0027r  rC  )rE  rF  rG  ext_href)r   r/   r  r:   r    r  r   rl   r   r   r  r   r   r  r@   r   r.   download_filerM   IMPORT_DOWNLOAD_TIMEOUTr  r   r   r]  r   r  r\  r  )rR   download_queue
done_queuer  download_job_iddownload_objr  file_urlr   ext_id_splitpage_id_msg	file_sizefile_size_mbrh  s                 r&   _download_file_workerz)ConfluenceAPIImport._download_file_worker  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)rl   r   all_attachments.ziprc  r   r  r   r   r   r   r   u3   Нет вложений для скачиванияu'   Скачивание вложений: r  )r  r  r  u    Запустили задачу --r   rm   r  r  uC   Закончили скачивание файлов, ошибок ) ra   r  r/   load_fieldsr   r   r   r   r|  r   r  r    r  countr   r@   r   r  re   r`   r  r  r  slistr  rW   r   r  r  r  r   r:   )rR   r  r  r<   main_filterprojects_pathattachment_countfiltersr   r  project_pathpath_filterdownload_countprocsr  r  filter_r  s                     r&   download_filesz"ConfluenceAPIImport.download_files  s   ))++Z%%''

##%@$ABBB D$/"8"?"KL'''111	
 99;;DDZPP) 		: 		:EE%L/00I(11)<<L|$$--c22 7"<0036"F|,>,>,>?@K#5;;;Q\C\;]]N : N2 {[8999 	fO"''(^___O"''(dRb(d(deeet899 	S 	SA>((10Q00&4",  )  D LLJJLLLO"''(Q4(Q(QRRRR 	4 	4G & 8 > >gW[V\ > ] ] 4 4""<?33334 	' 	'Dv&&&&##%% 	  		?$$&& 	KO"**+IJJJ""$$ 	+*..***J ""$$ 	+##$vjt$v$vwwwr%   c              #      K   | d}t          |d          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nz/comments.jsonr   r   r   r   rR   r   comments_file_pathr   r   s        r&   _get_commentsz!ConfluenceAPIImport._get_commentsG  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_restrictionsM  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   rW   r   r   rm   r   r   r/   **r  r  rN  rO  r  createdDater  rM  whenrK  r  rY   editorr   r"  c                 ,    g | ]}t          |          S r$   r   rx   xs     r&   rp  zMConfluenceAPIImport._process_obj_comments.<locals>.create.<locals>.<listcomp>  s    3\3\3\qCFF3\3\3\r%   r  locationinlineT
resolutionresolvedclosedr   rs  u7   Ошибка обработки комментария r   r   zERR-0028rE  r   )"r/   r@   r   r]  r   r   r    
CmfCommentr:   r   r  r   rE   	cmf_ownerr]   anonymous_usercmf_created_at
cmf_authorcmf_modified_bycmf_modified_atr   _convert_mentions_convert_linksr  rK  rs  r   r  tree_parentr  r  r   r  r\  )r  r  r   cmf_commentr  r  	view_soupeditor_souprs  r  r   r   rR   s            r&   r  z9ConfluenceAPIImport._process_obj_comments.<locals>.createU  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  )rR   r   r   r  r  s   ``` @r&   _process_obj_commentsz)ConfluenceAPIImport._process_obj_commentsS  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          }t                              |          D ]#}|dk    r	||                    |          dV  $d S )Nr;  r  )r  r   )r   r   r   r   )rR   obj_pathattachments_pathr  s       r&   _get_obj_attachmentsz(ConfluenceAPIImport._get_obj_attachments  s      >>22=AA$455 	 	I111&-66yAA     	 	r%   r  c                    t          j        d|           }|r|d         nd }|r|d         nd }t          t          |                              d                    5 }t
                              |          }d d d            n# 1 swxY w Y   |D ]}d|v rt          |d         d                   }nlt          j	        
                    |d         d                   }	t          j	                            |	j                  }
|
                    dd	g          d
         }|d         | k    st          |d                   |k    r
||k    r|c S d S )Nz((?:att)?\d+)\.(\d+)r   r   r  r>  r?  r  r  1r   r   rW   )r  	fullmatchr   r   r   r   r   r   r	  r
  r   parse_qsqueryr:   )r  r  
file_matchfile_idfile_versionr   attach_info_listattachr>  r  query_paramss              r&   _get_confluence_attach_infoz/ConfluenceAPIImport._get_confluence_attach_info  s    \"99EE
#-7*Q--4(2<z!}}$w--(();<<== 	,#yy||	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,& 	 	FF""fY/9::#\226(3CJ3OPP
%|44Z5EFF&**9se<<Q?w9,,t%%00<// 	 	s   BBBc                      d} fd}                      d                   D ]8}| ||d         |d                   z  } j                            dd           9|S )Nr   c                    d}	                      | 
d                   }|r|d         nd}|r|d         n| }t          j                            |g d          }|s9t                              |j        d	          }|                    d
           |j        r5|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
           |r|d         d         }	|j        |	k    sJ d d d            n# 1 swxY w Y   n# t$          $ r4 j                            d| d| d|j         d|	 d	d           d}Y nCt(          $ r7 t+                       j                            d| d| dd           d}Y nw xY w|S # |c cY S xY w)Nr   r   rW   r"  r   )r   r   url_preview_imgurl_preview)rl   r   rm   Trl   r   r/   r   r   r>  r  rM  rN  rO  rbFsmart_backup
mark_dirtyr  r  u   Размер файла 'r  u@   ) не соответствует размеру из меты: z	 bytes / z byteszERR-0029r   r   u;   Не удалось обработать вложение 'rw  )r  r    CmfAttachmentr:   r/   r   r   r  r   rE   r  r]   r  r  r   upload_filer   st_sizeAssertionErrorr\  r   r  )r  r   errorattachment_metaattachment_idattachment_namer  attachment_versionr   file_size_metar   r   rR   s             r&   _process_attachmentzIConfluenceAPIImport._process_obj_attachments.<locals>._process_attachment  s    E?"&"B"B9cRXk"Z"Z9H P 5 5b>M"\/'":":S\#155(!   6 	 	
 " 6!'!5!5,%#'?(,	 "6 " "J OOO555- H& 
E?+>+>y+I+I 
E-<Y-G*4F4J4J64R4R
1.22488E 24 8 @K O O484D4DEWX\E]^b^kEl4m4mJ11454DJ1/9/D
,i.. 
H!"..FFHH)-', /   
 6:
2"D999* H-<\-J:-VN#-#5#G#G#G#G
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H "   ))i i iM i i5?5Gi iR`i i i	 *       ))vRavvfsvvv *   
  us[   EG A%G
>G 
GG GG I ;II =II II Ir   r  r   r  r  )r	  r/   r]  )rR   r   r   r  r*  attachment_datas   ```   r&   _process_obj_attachmentsz,ConfluenceAPIImport._process_obj_attachments  s    D	 D	 D	 D	 D	 D	 D	L  $88VEE 	@ 	@O)),,  F O$$\;????r%   c                 
   t           j        j        | _        |d         d         d         }|d         d         d         }|s|s|S |s|rd}	 t	          |d          }t	          |d          }| j        j        r	 | j        j        	                    d           t                              |d         d         d                   }|                     ||d	         ||
           np# t          $ rc d|                    d           d}	|                    d          r|	d|d         d          dz  }	| j                            |	d|           Y nw xY w|                     |||           |                     ||           |                     |||           |                     |||           |                     ||||           |                     |||           |                     |||           |                     |||           |                     |||           |                     |||           |                     |||           |                     ||           |                     ||           |                     ||           |                     |||           |                     |||           |                      ||           | !                    ||           | "                    ||           | #                    ||||           d$                    d |j%        j&        D                       }
n<# t          $ r/}|}
| j                            d| d| d|           Y d }~nd }~ww xY w|
S )NrK  r  rY   r  z<p></p>r   uC   Конвертация текста из atlassian разметкиatlas_doc_formatrJ  )soupsubobjuT   Не удалось конвертировать разметку страницы "r   r  r>      (версия r?  rw  zERR-0031r  r0  r"  c                 ,    g | ]}t          |          S r$   r  r  s     r&   rp  z9ConfluenceAPIImport._convert_doc_text.<locals>.<listcomp>D  s    DDDqCFFDDDr%   uA   Ошибка обработки текста документа. r:  zERR-0039)'r    r#   get_data_iddata_idr   r.   rF   r/   r@   r   r   r   _convert_atlas_docr   r:   r\  r  _convert_status_convert_plantuml_convert_drawio_convert_msoviewer_convert_childpages_convert_task_filter_convert_excerpt_include_convert_include_convert_content_by_label_convert_details_summary_convert_anchor_convert_toc_convert_livesearch_convert_recently_updatedr   _convert_tabs_convert_inline_comments_convert_excerpt_convert_detailsr  rK  rs  )rR   obj_datar   r0  r  r  r  r  	atlas_rawexception_textr   rh  s               r&   _convert_doc_textz%ConfluenceAPIImport._convert_doc_text  s>   )5'0&!(+G4 	 	K  	 	D1	%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""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+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?   ,M 9A*C$ #M $A*EM EG5M 
N %M;;N 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   )rR   r   versions_file_pathr   r   s        r&   _get_versionsz!ConfluenceAPIImport._get_versionsO  s      !T"9"9"9::$$&& 	*($// *1 * *C**S//))))** * * * * * * * * * * * * * * ts   "A((A,/A,re  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  rW   z): version r?  r   r$  r  r  r>  r  r  r  rM  rN  rO  message%Y%m%d%H%M%S%fCLOSEDstatus_typerJ  r  r  r2  Tr   u@   Ошибка обработки истории страницы z): zERR-0033r  r   )*r/   r@   r   r   r   r    CmfDocumentHistoryr:   r   r]  r  r  r   rE   r  r  r  r]   r  reasonofficial_numberofficial_daterA  rY   strftimecmf_versiondoc_versionworkflowget_default_statusr  rZ   cur_workflowrL  r   has_publishedr  r   r   r   r  r\  r<   )version_datacmf_document_historyr   r   version_contentre  r   rR   s        r&   create_versionz=ConfluenceAPIImport._process_versions.<locals>.create_versionX  s   #' <A&++9hW^N_ 9 9cklpcq 9 9 ,X 69 9   !O29ErrRVrrZfgoZprr'-'@'D'DF\`[a'D'b'b$' 0D0T f ((K@@@@@c , +1+D+D&%#'? ,E , ,( 7C6F6Fv6N6N$37C7G7G7O7O$4##D)) Ll4.@.HK.W.W!--l4.@.OPPF5;(26<(3;A(88565E(2676F(3;<;K(8.:.>.>y.I.I$+7C7G7G7Q7Q$45A5E5Ef5M5M$2367K7Y7_7h7hiy7z7z{~|~{~7  4A  4A$03G3S$0.5.>.Q.Q^f.Q.g.g$+"."2"29b"A"A489L9LX9V9VZc9c4d4d$1,0,B,B?T[J^ -C -` -`$) 6:$27C$4$))d);;; % % %))  +dmuv}m~  +d  +d  CK  LP  CQ  +d  +d  Vb  +d  +d*4.5 * 7 7 7 1$% ((K@@@@((K@@@@''s2   BK$ 2H1K$ #M  $AM>M   MM   M=r   =T)r   include_deletedTEXKOM_db_deleter   )rc  Fr"  )r   ra  cmf_deletedr   r   )r    rX  rZ  r  r   	enumeraterO  rM   $IMPORT_CONFLUENCE_PROC_LAST_PAGE_VERra  r   cur_workflow_versionr   )
rR   re  r   rf  dhr@  version_countr>  document_historyfake_historys
   ```       r&   _process_versionsz%ConfluenceAPIImport._process_versionsW  sf   A	( A	( A	( A	( A	( A	( A	(H +00c7+  1 
 
 	- 	-B IItI,,,,&/0B0B8FCS0T0T&U&U 	3 	3"M7 KKK-~7CCC 3$4$A 3"2 00eaeln0ood+++'6$ 	+LLTL***r%   c                    |                      |d          }|                                sd S t          |d          5 }t                              |          }g |d<   |                      |d          }|                                rat          |d          5 }|D ]5}|d                             t                              |                     6	 d d d            n# 1 swxY w Y   |                      |d          }|                                rYt          |d          5 }	t                              |	          }
d|
t          |
          di|d<   d d d            n# 1 swxY w Y   |cd d d            S # 1 swxY w Y   d S )	Nr=  r<  labelsr|  rq  r6   )r   sizers  )r   r   r   r   r   r   r   r   )r  r*   doc_filer   reslabels_filef2	label_strrt  f3r   s              r&   rq  z!ConfluenceAPIImport._get_document  s_   ##FK88   	4(C   	A))A,,CCM!**6=AAK!!## D+s++ Dr%' D D	H,,TZZ	-B-BCCCCDD D D D D D D D D D D D D D D !))&,??J  "" W*c** Wb IIbMME'-5#e**/U/U&VC
OW W W W W W W W W W W W W W W 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   AE99CE9C!	!E9$C!	%=E9"2E E9 E$	$E9'E$	(E99E= E=c                     t          |                              d                                          }t          d |          }|S )Nro  c                 `    |                                  o| j                            d           S )Nr  )r  rl   r  )	path_objss    r&   r   z3ConfluenceAPIImport._get_doc_dirs.<locals>.<lambda>  s+    i..00q9P9PQp9q9q5q r%   )r   r   r  r   )rR   
space_pathr  doc_dirss       r&   _get_doc_dirsz!ConfluenceAPIImport._get_doc_dirs  sH    $$--k::BBDD	qq
 

 r%   r     c              #      K   t          | d          }d}|                     |          D ]:}|dz  }||k     r|||z   dz
  k    r d S |                     ||j                  V  ;d S )Nr  r   r   )r   r  rq  rl   )rR   r\  offsetr  r  enum_dirr*   s          r&   _get_documentsz"ConfluenceAPIImport._get_documents  s      +11122((55 	; 	;FMH&  &5.1,,,$$Wfk::::::	; 	;r%   c                 Z    t          d |                     |          D                       S )Nc              3      K   | ]}d V  dS r   Nr$   r  s     r&   r   z=ConfluenceAPIImport._count_space_documents.<locals>.<genexpr>  s"      ==1======r%   )sumr  )rR   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$   )rx   r  r  s      r&   rp  zDConfluenceAPIImport._get_offsets_for_execute_doc.<locals>.<listcomp>  s     HHH}vuFE?HHHr%   )r  r
  r  rO  r   r,  )	rR   r  r  offsetscurrent_offset	obj_countr  r  rp  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  rW   rw  r   r8  r9  u3   Обработка версий документа r:  r   )r   r_  rn  r   r  r  u4   Документ не найден в системеuQ   Документ изменен пользователем, пропускаем u@   Ошибка обработки версий документа zERR-0084r#   rE  rF  r   )r   cmfutildisable_aclr:   r/   r  rM   rm  r@   r   r   r   r    r#   r   r   rs  r  r\  r  )
rR   	obj_queuer  r  r   r_  r`  r   r   rh  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%ru  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)
        rW   r   r   r   r   r   u   Не найден тег 'r  rw  zERR-0017r  )r/   r   r   r    CmfTagr:   r   r\  )rR   content_objru  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:rW   r   r  r   T)r   	log_levelr   r/   r   r  webuiu4    импортирован из Confluence: <a href="z" target="_blank">z</a>"r   N)r/   r   r   r    r  r:   r.   r  r   ext_urlverbose_namer   r   )rR   r  rJ  comment_ext_idr  r   s         r&   _add_external_link_commentz.ConfluenceAPIImport._add_external_link_commentF  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  rW   r   rN  r#   r  r  rw  r  r   u   Обработка is_homepager  r   r  rl   r/   r   r   u|    был изменен пользователем. Изменения из импорта не будут примененыrC   rO  r)   r  r  r  u"   Определяем автора r   rO  u   Не найден автор r  u(   Определяем владельца r  rM  =   Определяем последнего редактора r6   r  rV  r  r  rU  )rl   r   r_  r  r  r  r  r  r  cmf_archivedr   r  r  r  r   rS  rT  ru  u   Ошибка создания uS   . Попробуйте очистить дамп и повторить импортzERR-0018r  r   u^   . Попробуйте отменить импорты связанные с проектом uY   , чтобы он удалился из системы и повторите импорт)>r   r  r  r:   r/   r  rP   varsr    rq  r   r   r  root_parent
class_namedescr_documentrY   r   r>   r  r]  r@   r   r]   r  r   rE   r   	scheme_wfdefault_document_workflowr;   r`  r   get_status_typerZ   rW  r(  r  setattrr   r   r   r,  r  rA  r  r\  r]  r  r  full_screenrL  r   r  r   FileNotFoundErrorr  r\  
log_detailAttributeErrorr   r  )rR   re  archive_folderr  r  r  content_datar*  r+  r,  content_model_namecontent_modelcontent_descriptionrJ  r   wiki_project_homepager  authorr  r  r  modifiedr  r_  r  content_dictr  s                              r&   _process_document_forkz*ConfluenceAPIImport._process_document_forkh  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   rl   r   u#   Диаграмма с именем u@    не найдена во вложениях документа zERR-0019r  r   r   rl   r   %.pngr   r  100%zdiagramWidth=([^|]+)zdiagramHeight=([^|]+)rl   	attach_idwidthheightimg_srcr"  r   html.parserrW   zdrawio-macro-content-data-macro-iduU   Неудалось конвертировать диаграмму из текста r$   )r  r  r  r  r   r    r   r:   r/   r\  rl   rY   rW   r   r   r   formatfindreplace_with
currentTag)rR   r   r  r  TAG_TMPL
macro_namer   matchr  r  
attach_imgr  r  r  ry   
drawio_tags                   r&   r9  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  r$  u.   Не удалось получить svg из zERR-0002r  z{})paramsumlsvgr  )r  r    r#   convert_uml2svgr   rW   rY   r/   r\  r   r  r  )	rR   r   r  r  TMPr   r  new_tagold_tags	            r&   r8  z%ConfluenceAPIImport._convert_plantumlA	  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>	  s
    !E( r%   r  r   r   
sheet_namer"  u   Листr   )numrW   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
pagesCountFrH  r  )r  r  r  plugin_titler  )r  rW   r   r  get_fullviewsortrl  r   r   r   r:   r   r  r   r   r  )rR   r   r  plugin_typeTMPLr  r  fullview_pagesr   r  fullview_pager6   param_typesr  r  s                  r&   _create_msoviewer_macro_tagz/ConfluenceAPIImport._create_msoviewer_macro_tagw	  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 rg  r   Nr   rx   params     r&   r   z9ConfluenceAPIImport._convert_msoviewer.<locals>.<genexpr>	  s0      *g*g55;;sA+>+>*g*g*g*g*g*gr%   |rl   r   rl   &   Не найдено вложение 'rh  0   Ошибка обработки макроса '   ' в документе 'r  rW   rw  r1  r:  ERR-0012r  N)r  r:   r   r   r    r   r   r  r  r  rl   r  r[  rX  rZ  r/   r\  )rR   r   r  r  r0  macro_types
macro_typer   original_paramsr  r  r  rh  
error_texts                 r&   r:  z&ConfluenceAPIImport._convert_msoviewer	  s    ),% 	 	J"++3Dj2Q+RR  &)gg.E&F&FO&**g*gOLaLabeLfLf*g*g*g&g&gO / 7I#155W95UUF! _'(]QZ(](](]^^^'nn4Ez3RnSSG l,,T-M-MgW]_i-j-jkkk    d: d d29,d dCJCZ[_C`d d d  "&&*CDD R"&Q8N&Q&Q&QQ
*s**,JO--"#-"-g .        	 	s   CC**
E*4A+E%%E*c                    d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}|                    ddi          D ]}d}|                    d          }|                    dd          }dt          |j                  ddddd}	t          d |                    d          D                       }
|
                    d          rd|	d<   nd|	d<   |
                    d          r|
d         |	d<   |
                    d          r|
d         |	d<   |
                    d           r|
d          |	d!<   |
                    d"          r$dd#d#d$}|                    |
d"                   |	d%<   |
                    d&          r$d'd(d)d*}|                    |
d&                   |	d+<   |
                    d,          rd|	d-<   d}|
                    d.          rE|
d.         d/k    r8t          |j        j                  |	d0<   t          |j        j                  }d1}nnd1}t          |
                    t          |j                  |t                              |	dd23                              d4d5          ||6                              d7d          d8          }|r|                    d|i          nd9}|s|                    ddi          }|r|                    |j                   d9S ):ua   
        Конвертирует макрос "Отображение дочерних"
        z
            <div
                class="macros-panel"
                contenteditable="false"
                data-children-docs="{doc_id}"
                data-id="a  "
                data-macro-parameters="{params}"
                data-macros="children-docs"
                original-data-macro-parameters="{original_params}"
                cmf_converted="{cmf_converted}"
            >
                <div class="extension-container" data-id="uW   " data-layout="default">
                    <span aria-label="Макрос " data-id="aq  " role="img">
                        <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="20" height="20">
                            <path d="M22.485,10.975,12,17.267,1.515,10.975A1,1,0,1,0,.486,12.69l11,6.6a1,1,0,0,0,1.03,0l11-6.6a1,1,0,1,0-1.029-1.715Z"></path>
                            <path d="M22.485,15.543,12,21.834,1.515,15.543A1,1,0,1,0,.486,17.258l11,6.6a1,1,0,0,0,1.03,0l11-6.6a1,1,0,1,0-1.029-1.715Z"></path>
                            <path d="M12,14.773a2.976,2.976,0,0,1-1.531-.425L.485,8.357a1,1,0,0,1,0-1.714L10.469.652a2.973,2.973,0,0,1,3.062,0l9.984,5.991a1,1,0,0,1,0,1.714l-9.984,5.991A2.976,2.976,0,0,1,12,14.773ZM2.944,7.5,11.5,12.633a.974.974,0,0,0,1,0L21.056,7.5,12.5,2.367a.974.974,0,0,0-1,0h0Z"></path>
                        </svg>
                    </span>
                    <span class="extension-title" data-id="u   ">Макрос "Отображение дочерних"</span>
                    <span class="extension-object-name" data-id="zQ"> | {doc_name}</span>
                    <span class="macros-actions" data-id="z>">
                        <span class="macros-edit" data-id="a  " style="margin-right: 7px;">
                            <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                            </svg>
                        </span>
                        <span class="macros-delete" data-id="aD  ">
                            <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                                <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            </svg>
                        </span>
                    </span>
                </div>
                <div class="ak-renderer-wrapper" data-fabric-macro="null" data-id="z7" data-macro-body=""></div>
            </div>
        r  rs  r  falser  r  r"  F50none)isShowChildrenr  childrenAmountrC   includeViewTypeisOrderByDeskc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS rg  r   r   Nr   r   r  s     r&   r   z:ConfluenceAPIImport._convert_childpages.<locals>.<genexpr>3
  s]       $ $u{{3**++q00 C##0000$ $r%   r	  r:  Tr  r  rC   firstr  depthstyle
headerTypeexcerptTyperJ  r  simplezrich contentr  r  rl   r  r  r   creationr  sortTypereverser  r6   r   
documentIdtrue,:rI  
separatorsr  &quot;)r*   doc_namer  r  cmf_convertedr   r  N)r5  r  r:   r   rW   r   r   r   rl   r   r  r   r   r   r  r  r  )rR   r   r  r  r  r   r2  macro_iddata_macro_parametersr  macro_parametersview_type_mapsort_type_mapr1  r  r  s                   r&   r;  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           
      N   d}|                     ddi          D ]}|                    d          }|                    d          }t          d |                    d          D                       }|                    d	d
          }|r|                    d|i          nd}|s|                    ddi          }|rat          |                    |d                    d |j        D                                 d          }	|	                    |	j
                   
dS )uH   
        Конвертирует макрос "Выборка"
        u~  
        <div
            class="macros-panel macros-excerpt-block"
            contenteditable="false"
            data-id
            data-macros="exceprt"
            data-param-name="{name}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Include. 'Создать выборку'" data-id role="img">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id>Макрос Include. 'Создать выборку' <span class="excerpt-title" data-id>| name = {name}</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-edit" data-id style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id>
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-id data-macro-body="">{content}</div>
        </div>
        r  excerptr  r  r  c              3   B   K   | ]}|                     d d          V  dS r  r  r  s     r&   r   z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>
  s0      #a#aEEKKQ$7$7#a#a#a#a#a#ar%   r	  rl   &   Выборка без названияNr"  c              3   4   K   | ]}t          |          V  d S r   r  rx   rJ  s     r&   r   z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>
  s(      'U'UG'U'U'U'U'U'Ur%   rl   rJ  r  )r  r:   r   r   r  r   r  r  contentsr  r  )
rR   r  r  r  r   r3  r5  excerpt_namer  r  s
             r&   rG  z$ConfluenceAPIImport._convert_excerptt
  sX    D ''/@).L'MM 	9 	9Cww//H"ww'>??##a#aEUE[E[\_E`E`#a#a#aaa+//8`aaLKS]innOX+FnGGGY]G O#..0A9/M.NN 9'KK) "'U'UGDT'U'U'U U U     "  $$W%7888%	9 	9r%   c                 <   d}|                     ddi          D ]}|                    d          }|                    d          }d|v r|                    dd          \  }}	n`t          |t          j                  r |j                                        d	         }n$|j        j                                        d	         }|}	|                    d
          }
|
rCt          d |
                    d          D                       }
|
                    dd          }nd}t          |                    ||	|          d          }|r|                    d|i          nd}|s|                    ddi          }|r|                    |j                   dS )u~   
        Конвертирует макрос "Включить выборку"("Вставить фрагмент")
        u  
        <div
            class="macros-panel macros-include-block"
            contenteditable="false"
            data-id
            data-macros="include-excerpt"
            data-param-excerpt="{excerpt_name}"
            data-param-pageid=""
            data-param-pagename="{page_name}"
            data-param-projectkey="{space_key}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Include. " data-id role="img">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id>Макрос Include. "Вставить выборку" <span class="excerpt-title" data-id>| Имя = {excerpt_name}</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-edit" data-id style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id>
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" data-id></div>
        </div>
        r  excerpt-includer  r  data-macro-default-parameterr-  r   r  r  c              3   B   K   | ]}|                     d d          V  dS r  r  r  s     r&   r   z?ConfluenceAPIImport._convert_excerpt_include.<locals>.<genexpr>
  s0      'e'eC(;(;'e'e'e'e'e'er%   r	  rl   r;  r@  	page_namer  r  N)r  r:   r   r[  r    r  r  r   r   r   r   r  r  r  r  )rR   r   r  r  r  r   r3  macro_default_parameterr  rF  r5  r@  r  r  s                 r&   r=  z,ConfluenceAPIImport._convert_excerpt_include
  s   #J ''/@BS.T'UU !	9 !	9Cww//H&)gg.L&M&M#---'>'D'DS!'L'L$	99c6#455 I # 3 8 8 : :5 AII #
 : ? ? A A% HI3	"ww'>?? H#''e'eIYI_I_`cIdId'e'e'e#e#e /33F<deeG#!-''   
  G LT]innOX+FnGGGY]G W#..0ACT/U.VV 9$$W%7888C!	9 !	9r%   c                    d}|                     ddi          D ]"}|                    d          }|                    d          }d|v r|                    dd          \  }}	n`t          |t          j                  r |j                                        d	         }n$|j        j                                        d	         }|}	t          |
                    |	|
          d          }
|r|                    d|i          nd}|s|                    ddi          }|r|                    |
j                   $dS )u[   
        Конвертирует макрос "Включить страницу"
        uM  
        <div
            class="macros-panel macros-include-page"
            contenteditable="false"
            data-macros="include-page"
            data-param-pageid=""
            data-param-page-label="{page_label}"
            data-param-projectkey="{space_key}"
            data-rendered="true"
        >
            <div data-layout="default" class="extension-container" contenteditable="false">
                <span role="img" aria-label="Макрос Include. ">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title">Макрос Include. "Вставить страницу" <span class="excerpt-title">| Имя = {page_label}</span></span>
                <span class="macros-actions">
                    <span class="macros-edit" style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper"></div>
        </div>
        r  includer  r  rC  r-  r   r  
page_labelr  r  N)r  r:   r   r[  r    r  r  r   r   r   r  r  r  r  )rR   r   r  r  r  r   r3  rG  r  rK  r  r  s               r&   r>  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 r  r  r  s     r&   r   z3ConfluenceAPIImport._convert_toc.<locals>.<genexpr>j  ]        u{{3**++q00 C##0000 r%   r	  rN  rZ  outlineF	separatorbracketsrV  40pxr   mixedhminLevelr  maxLevel6excluderI  	printableTabsoluteUrlclass)rN  rS  rT  rV  r   rY  rZ  r\  rI  r]  r^  r_  r+  r.  r  r0  r  r  r  r  Ndiv)r5  r  r:   r   r   r   r   r   r   r  r  r  r  )rR   r  r  r  r   r5  r  
parametersr  r3  r  s              r&   rB  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  r*  r  r"  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  r  s     r&   r   z:ConfluenceAPIImport._convert_livesearch.<locals>.<genexpr>  rR  r%   r	  placeholderu
   ПоискspaceKeyr   r   %::::%r  ILIKE%"key":""%r  r  r  c                 :    g | ]}||                                 S r$   strip)rx   lables     r&   rp  z;ConfluenceAPIImport._convert_livesearch.<locals>.<listcomp>  s6       KKMM  r%   ru  r,  rv  medium)currentSpaceKeyru  rj  rv  Fr+  r.  r  r0  )r  r  rj  r2  r  r  Nra  )r5  r  r:   r   r   r    r  sgetr/   r   r   rW   r   r   r   r   r  r  r  r  )rR   r  r  r  r   r2  r5  r  rj  r  re  rb  r  r3  r  s                  r&   rC  z'ConfluenceAPIImport._convert_livesearch  sR   -llnn- -  <<>>- - !%- -  !%!- -" ;?,,..#- -& !%'- -( %)LLNN)- -2 %)LLNN3- -D  <<>>E- - -^ ''/@,.O'PP 9	9 9	9C"M"ww'>CC  -33C88    F !**]LAAK

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

6844	 	J "% $   gc8$$	  $%$4 +"/	     G ww//HKS]innOX+FnGGGY]G Y#..7H,6W.XX 9$$W%7888s9	9 9	9r%   c                    d|                                   d|                                   d|                                   d|                                   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" (Недавно обновлено)
        rd  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="rf  rg  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  r*  r  r"  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  r  s     r&   r   z@ConfluenceAPIImport._convert_recently_updated.<locals>.<genexpr>1  rR  r%   r	  Nr   r,  r   r   r   r   rl  rm  r  rn  ro  rp  r  r  z@selfr  typesr:  r  newsc                     g | ]}|v|	S r$   r$   )rx   r  unsupported_typess     r&   rp  zAConfluenceAPIImport._convert_recently_updated.<locals>.<listcomp>T  s$    TTT5UBS5S5S5S5S5Sr%   r  r   T)raise_on_errorzERR-0133r!   rE  r   rF  max   Fthemeconciseru  r  r  hideHeading)	r  	maxTogglerz  r   r  r  ru  r  r  r+  r.  r  r0  )r  r  r2  r  r  ra  )r5  r  r:   r   r   r   r    r  rw  r/   r   r   rW   r   re  r   r   r   r   r\  rA  r   r   r   r  r  r  r  )rR   r   r  r  r  r   r2  r5  r  r   
space_keysr  re  rz  r  authorsr   rh  rb  r  r3  r  r}  s                         @r&   rD  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|                                   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="rM  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="rN  u   ">Макрос "Вкладки" | {tab_name}</span>
                </span>
                <span class="macros-actions" data-id="rO  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>
        tabler  deckr  r  r"  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  r  s     r&   r   z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>  s]        u{{3**++q00 C##0000 r%   r	  tabLocationcardc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  r  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  Nra  )r  r  rH  r  r0  c              3   4   K   | ]}t          |          V  d S r   r  r=  s     r&   r   z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>  s(      +\+\WCLL+\+\+\+\+\+\r%   )r  tab_namerJ  r  r   )r5  r  r:   r   r   rl  r  r   r  r   r   r   r  r?  r   ra  r  insert_after)rR   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&   rE  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 ]1}|                    d          }|                    dd          }t          d	 |                    d
          D                       }|                    d          }|                    d|pd          }	t	          |                    |	|	pd|pd          d          }
t          j        |
          }|                    |
j                   |r|	                    d|i          nd}|s|	                    ddi          }|r|                    |j                   3d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 r  r  r  s     r&   r   z6ConfluenceAPIImport._convert_status.<locals>.<genexpr>  sJ        C##     r%   r	  colourr   u   Задать статусneutral)r   	text_spanr  r  N)
r  r:   r   r   r   r  copyr  r  r  )rR   r  r  r  r   r3  r5  r  r  r   r  new_tag_viewr  s                r&   r7  z#ConfluenceAPIImport._convert_status  s   
 ''6G5R'SS 	> 	>Cww//H"ww'>CC  -33C88    F
 JJx((E::gu{33D#"A&A,9   
  G  9W--L
 W/000KS]innOX+FnGGGY]G N#..0A8/L.MM >$$\%<===?	> 	>r%   c                    ddl m} t                      }t                      }t	          |                     d                    }	 |D ]}|dk    rt          |          }t          |          }	|dk    r|	                    d          g}
n8|dk    r2d |	                    d	                              d
          D             }
t                      }t                      }|
D ]D}|                    dd                              dd          } ||dd          }	 t          j
                            dddd| dgdd|gddd| dggddg          }|s1t          
                    |          }|                    d           n7# t          $ r*}t                              d| d|            Y d }~d }~ww xY w|j        j        |vrW|                    |j        j                   |                    |j        j        |j        j        |j        j        dd           F|r|                    dd|g           ||d<   |d k    rwt          |          }t          |          }	|dk    r|	                    d          g}n8|dk    r2d! |	                    d	                              d
          D             }t                      }t                      }|D ]}|d"k    r|r|}n3t          j                            d#d$d%| d&gd'd$d(| dggddg          }|st                              d)| d*           a|j        j        |vrW|                    |j        j                   |                    |j        j        |j        j        |j        j        d+d           |r|                    d,d|g           ||d,<   n# t,          $ r Y nw xY w||fS )-Nr   translitr   r  z\=r  inc                 8    g | ]}|                     d           S r  rr  )rx   r  s     r&   rp  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>3  s$    !^!^!^u%++c"2"2!^!^!^r%   z()r,  r   #r"  ruTlanguage_codereversedORaliasrn  rp  rl   r2   r  rv   r   *   Не удалось создать тег r   r  )rl   r2   rW   	classNamer  INr   c                 8    g | ]}|                     d           S r  rr  rw   s     r&   rp  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>V  s"    !V!V!V1!''#,,!V!V!Vr%   zcurrentSpace()r   r   rl  rm  r  ro  u.   Не удалось найти проект «   »r  r   )transliterater  rZ  r   iterr   nextrs  r   r    r  r:   r   r   r>   r   rW   rY   r   rl   r2   r  StopIteration)cqlr   r   r  bql_listbql_dict	cql_partscql_partopr  ru  tags_ids	tags_listr  label_aliasr   r   r   
parent_idsparent_listr   re  s                         r&   _bql_from_cqlz!ConfluenceAPIImport._bql_from_cql%  s   ******66663((	H	% E9 E9w&&iB!)__FU{{"(,,s"3"3!4t!^!^T@R@R@X@XY\@]@]!^!^!^#vvH $I!'   %c3 7 7 ? ?R H H&.huDSW&X&X&X%"(-"3"3D%,g}5}}}$E%+We$<%,g7J;7J7J7J$K<" ,26*:	 #4 #< #<C
 $' ;&,mmm&?&? #T : : :( % % %#OO,eY^,e,ebc,e,efff$HHHH% 6<x77$OOCFL999%,,(+(+&)fl-5	. .      5 x(@AAA+4(((iB!)__FU{{"(,,s"3"3!4t!V!VT8J8J8P8PQT8U8U!V!V!V!%J"&&&K!'   $4444&,GG&,&7&;&;%-v7M[7M7M7M$N%6@T5@T@T@T$U(" )/'7 '< ' 'G  ' %#OO,f]b,f,f,fggg$":+:==&--gj.>???'..(/(:(/(:&-j&6-9	0 0    " 9 4(DEEE-8*KE9L  	 	 	D	!!s?   CO A+F
O 
F? F:5O :F??HO 
OOc                    d}|                     ddi          D ],}|                    d          }t          |                    d                    }	 |                    d          }t	          d |D                       }	|                     |	                    d	d
          | j        j        j        j                  \  }
}ddd|	                    dd          dv t          |	                    dd                    |	                    dd          dv |	                    dd          dv d|
|                    dg           d
}n*#  | j        
                    d| d| d|           Y nxY wt          |                    t          |                              dd                              dd
                              dd                               d!d"          #          d$          }|r|                    d|i          nd%}|s|                    ddi          }|r|                    |j                   .d%S )&u`   
        Конвертирует макрос "Содержимое по меткам"
        u  
        <div
            class="macros-panel content-by-label"
            contenteditable="false"
            data-id
            data-macros="contentbylabel"
            data-macros-parameters="{parameters}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Содержимое по тегам" data-id role="img"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="14" height="14">
                    <path d="M20.457,4.555,12.486.126a1,1,0,0,0-.972,0L3.543,4.555A3,3,0,0,0,2,7.177V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V7.177A3,3,0,0,0,20.457,4.555ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V7.177A1,1,0,0,1,4.515,6.3L12,2.144,19.486,6.3A1,1,0,0,1,20,7.177Z"></path><circle cx="12" cy="7" r="1.5"></circle></svg>
                </span>
                <span class="extension-title" data-id><span class="excerpt-title" data-id>Содержимое по тегам</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-action" data-id data-macros-action="macros-edit">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-action macros-delete" data-id data-macros-action="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path><path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path><path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="macros-preview" data-id></div>
        </div>
        r  contentbylabelr  r  r  r	  c                 :    g | ]}|                     d d          S rg  r   r  rx   ps     r&   rp  zAConfluenceAPIImport._convert_content_by_label.<locals>.<listcomp>  $    GGG1qwwsAGGGr%   r  r"  r   defaultr(  FTr*  Truer  r  
showLabelsT	showSpacer  r  )
r  modelr  r(  r  r  r  r"  bqlr  ui   Не удалось конвертировать макрос «Содержимое по меткам»     с параметрами: zERR-0034r  rh  r0  r   z:Truez:truez:Falsez:falserb  r  N)r  r:   r   r   r   r  r/   r   r   rA  r\  r   r  r   r  r  r  )rR   r   r  r  r  r   r3  r5  all_parametersr  r  r  rb  r  r  s                  r&   r?  z-ConfluenceAPIImport._convert_content_by_labelv  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="rN  uy   ">Свойства страницы</span>
                </span>
                <span class="macros-actions" data-id="U">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="  ">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id="J  ">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-macro-body="" data-id="za">
                {content}
            </div>
            <div class="macros-preview" data-id=" "></div>
        </div>
        r  detailsr  r  r  Noner	  c                 :    g | ]}|                     d d          S r  r  r  s     r&   rp  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  s$    "K"K"Kq1773??"K"K"Kr%   ud   Не удалось конвертировать макрос «Свойства страницы» r  zERR-0035r  rW   hiddenFr  )rW   r  rH  r  r0  r"  c                 ,    g | ]}t          |          S r$   r  rx   cs     r&   rp  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>   s    #A#A#AqCFF#A#A#Ar%   z details-hidden)macro_data_idrb  rJ  details_hiddenr  r   Nc              3   4   K   | ]}t          |          V  d S r   r  r=  s     r&   r   z7ConfluenceAPIImport._convert_details.<locals>.<genexpr>  s(      *X*XG3w<<*X*X*X*X*X*Xr%   r   r  u5   Отсутствует таблица свойств.trr_  confluenceTdc                 .    g | ]}d |j         d          S )key_details r   )r?  )rx   ths     r&   rp  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>0  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>5  s,      II1qDyyAyyyyIIr%   )r  r?  )rx   tds     r&   rp  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>4  sE     " " " IIIIIII" " "r%   r   c           
          g | ]b}d |                     ddi          j        d          d                    d |                     ddi          j        D                       fcS )r  r_  r  r  r   r"  c              3   @   K   | ]}|d k    t          |          V  dS r   r  r  s     r&   r   zBConfluenceAPIImport._convert_details.<locals>.<listcomp>.<genexpr>?  s4      'w'w1mnrvmvmvAmvmvmvmv'w'wr%   r  )r  r?  r  )rx   r  s     r&   rp  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)"r5  r  r:   r   r   r   r/   r\  r   r   r   r  r?  r   r  rK  insertr  r  r  r[  r    r  r   ziprX  r@   r   	macros_dbr   rY   macros_db_draftr   r  )rR   r   r  r  r0  r  r  r   r3  r5  r  r  rb  r  prmcontents_strr  r  
propertiescontents_table	first_row
second_rowr   s                          r&   rH  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  r	  c                 :    g | ]}|                     d d          S r  r  r  s     r&   rp  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>  r  r%   r  r"  c                 6    g | ]}|                                 S r$   rr  )rx   rX  s     r&   rp  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>  s     UUU!AGGIIUUUr%   headingsr,  showCommentsCountFr  showLikesCountreverseSortpageSize   NsortByfirstcolumn)r  showCreatorshowLastModifiedr  showPageLabelsshowUnresolvedCommentsCountr  r  rW   r  r  r  settingsParamsr  uv   Не удалось конвертировать макрос «Отчёт по свойствам страницы» r  zERR-0036r  rH  r  r0  r  r  )r5  r  r:   r   r   r   r  r/   r   r   r   rA  r  r\  r   r   r   r   r  r  r  r  )rR   r   r  r  r  r   r3  r5  r  r  r  r  r  rb  r  r  r  s                    r&   r@  z,ConfluenceAPIImport._convert_details_summary]  s   $ llnn$ $ fjeqeqeses$ $ z~  zF  zF  zH  zH$ $ 9=$ $  ;?,,..!$ $$ 8<||~~%$ $& TXS_S_SaSa'$ $0 ;?,,..1$ $B {  {G  {G  {I  {IC$ $D 37,,..E$ $ $L ''/@BR.S'TT (	9 (	9Cww//H"377+B#C#CDD8!1!7!7!<!<GGGGGHH $ 2 26::eR3H3H$/J`JgJsu|  vD  !E  !EXUUvzz*b/I/I/O/OPS/T/TUUU)/4G)O)OSi)i#((-&,jj1A5&I&IMc&c&+38#)::mU#C#CG]#] #FJJz2$>$> ? ?$jj22#)::m#<#< # 2 2&. 

 8))F  NU F F3CF F)w * 8 8 8 8 8 **Ze*<<DDS(SSC#"    	 G LT]innOX+FnGGGY]G V#..0ACS/T.UU 9$$W%7888Q(	9 (	9s   )EI??%J&c                 P   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d|                                   d	|                                   d
}|                    ddi          D ]}|                    d          }t          |                    d                    }t	          |                    t          j                            |                    d          }|r|	                    d|i          nd}|s|	                    ddi          }|r|
                    |j                   dS )uD   
        Конвертирует макрос "Якорь"
        a:  
        <span
            class="macros-panel anchor-macros"
            contenteditable="false"
            style="display: inline-flex; flex-direction: column; position: relative;"
            data-param-name="{param_name}"
            data-rendered="true"
            data-macros="anchor"
            data-id="z'"
        >
            <span data-id="re  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="rf  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  rC  )
param_namer  N)r5  r  r:   r   r   r  r	  r
  quoter  r  r  )	rR   r  r  r  r   r3  macro_param_namer  r  s	            r&   rA  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	(?<!\\)\|rg  r   jqlQuery\r"  z\|\|?r  z&&?ANDserverIdr  	columnIdsr,  r   r:  Nr   r   r  r  T)r   r/   r   r   )
logic_typer2   rl   responsibler  priorityr  r  r  r  deadlineFmaximumIssues   )bordercolumns	itemsSizefilterId
filterNamefilterParentNameuserFilterIduseCustomFilterr+  r.  r  r0  r`  r  ra  )r5  r  r:   r  r   rs  r   subr  r   convert_fieldr   r   r/   r@   r   r   r    CmfBqlFilterr   r  r   r   rW   r   r   r   r  r  r  r  )rR   r   r  r  r  r   r3  r5  r  r  r  rY   	jql_queryr  r2  
column_ids	column_idcolumnrh  	tf_ext_idtfdefault_columnsrb  r  r  s                            r&   r<  z(ConfluenceAPIImport._convert_task_filter  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&   rp  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-typeTr2  r   uO   Не удалось конвертировать inline комментарий r   zERR-0020r  )r    r  rZ  r  r  r  rs  r   r  r5  r  rW   unwraprD  r   r/   r\  r   )rR   r   r  r  r   tag_contexts         r&   rF  z,ConfluenceAPIImport._convert_inline_commentso  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=rw  	
subprocessPopenr/   r   rW   r   r  pidr  rR   re  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#   NNrW   rN  r   r  r  r   r  r  r  positionr  r   )r   rg  rN  c                 @    d t          j        d|           D             S )Nc                 |    g | ]9}|                                 rt          |          n|                                :S r$   )isdigitrA  r6  )rx   r   s     r&   rp  zPConfluenceAPIImport._prepare_documents_tree.<locals>.natsort.<locals>.<listcomp>  s7    ddddACIIITZZ\\dddr%   z(\d+))r  r   )ry   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   rN  r$   )rx   rs  r   	parent_ids      r&   rp  zSConfluenceAPIImport._prepare_documents_tree.<locals>.build_tree.<locals>.<listcomp>  s?       E4>Y.. V%...r%   c                 >     | d                  d                   S )Nr   rg  r$   )rs  r  rk  s    r&   r   zQConfluenceAPIImport._prepare_documents_tree.<locals>.build_tree.<locals>.<lambda>  s    GGDqN:4N,O,O r%   r  r  )r,  r  r   rI   )r  r   ordernor   rs  current_ordernochildren_in_orderrs  child_id
child_typenext_ordernorn  
build_treerk  rR   s   `          @r&   rv  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   rI   r:   r  r  r  r  r   )
rR   r   re  r   r   r   r   rg  rv  rk  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   minr/   rf   r  popr   )available_processesr   r  r  r  funcrg   r  r  re  rR   s        r&   execute_processeszFConfluenceAPIImport._run_parallel_processes.<locals>.execute_processes  s    7||},,"%11e1<<G,# # .// % % EE 'AtGVU33t$$$$% %r%   r   u    завершена)r   r/   rf   r@   r   r  rW  sleeprZ  pollr<   rY  r   communicate
returncode)rR   r}  r   re  process_namer~  r  r  rg   r  r  s   `` `    @@@r&   _run_parallel_processesz+ConfluenceAPIImport._run_parallel_processes  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   rm   include_archivedu    Не найден предок 'u>   '. Потомки будут помещены в корень zERR-0120r  )r   r  r   rp  u"   Не найден потомок 'u   ' у предка 'rh  zERR-0003r   r  rg  )r  rg  Tr  )r   rm   r  r  r  u7   Не получилось привязать ноду 'zERR-0024) r/   r@   r   r  r  rY   rI   r,  r  rP   r:   r  r    r   r   r\  r  r   r  rp  r   r#   rw  r5   rZ   r  r  r  show_archiver   r   r  )rR   re  project_homepager   rs  rn  parent_typer  parent_model_nameparent_modeltree_parent_ext_idrs  rt  rp  child_model_namechild_modelchild_ext_idrs  tree_parent_filterarchived_filterarchived_documentsarchived_foldersro  folderss                           r&   _process_documents_treez+ConfluenceAPIImport._process_documents_tree  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   rM  rN  rO  rP  z/");retcode = plugin.process_doc_versions_fork("rQ  rR  rS  rT  TrU  r   rV  rW  u2   Запустили process_doc_versions_fork (pid=r\  r]  rw  r^  rb  s         r&   _execute_doc_versionsz)ConfluenceAPIImport._execute_doc_versionsy  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gg ddgdgdgdgdgg d	gd

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

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

        Returns:
            tuple[str, str, bool]: новые названия и код проекта и флаг добавления суффикса
        F)logic_prefixr   project.wikir  rl   rn  task_code_prefixT)r  rl   r  r   rh  rm   z Wikiu   названиеWIKIu   кодu   В u    и u9    проекта добавлен суффикс 'Wiki': 'r  rw  r  )r    r  r  rl   r6  r   r  upperr/   r  r  r>   r  )	rR   
space_namer  r<  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]): новые названия и код проекта
        r  r   NOT LIKEr   )r   rg  Nrl   rn  r  r  r  rw  u   Проект с именем 'ud   ' уже существует. Импортируемый проект переименован в 'rh  zERR-0131r  r  r   r  Tr  r   u   Проект с кодом 'ug   ' уже существует. Код импортируемого проекта изменен на 'zERR-0132)r    r  rw  r/   r\  rl   )rR   r  r  r   ext_id_filterre  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           
          |                      | 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          rI|d         d         }	|                     ||	          }
|
s"t          d|d         d          d|	 d          n| j        j	                            d| d           |d         D ]I}	 |                     ||          }
|
r n<#  | j        j	                            d| d|            Y GxY wt          d          |
d         d         }| j        j	        
                    d|            |d         dk    rt           j        |d <   n#|                     || j                           |d <   |
d                             d!          }|rb| j        j	        
                    d"|            |d         dk    rt           j        |d#<   n/|                     || j                           |d#<   n|d          |d#<   |
d         d$         d%         }| j        j	        
                    d&|            |d         dk    rt           j        |d'<   n#|                     || j                           |d'<   |
d         d(         |d)<   |
d         d$         d*         |d+<   |d	         }|d         d,k    r
|d-z  }d.|d/<   | j                            |d                   }d0| j        j        j        j         d0|d          d0}t.          j                            d1d2d3| d3gt3          |                                          g d4z   5          }|r<d6}d7| }|j        d8k    rd9| d:| d| d}| j                            |d;           nL|d<v rd=| d| d}d>t.          j                            d?@          dA}|dBk    r"dC| d| dD}|                    dEdFdFdG           | j                            |d;           t.                              || j        |dH          }n|d>k    rt.          j                            g dIdJdKdL|gd	dL|gggg dM5          }|st          dN          | j                            dO| d| dP| d;           |j         d0| |_        |                     dQ           tC                       nt          dR|           |j        d8k    rot.          j"                            dSdT|j#        gg dUgd1g5          }|st          dV|           |j$        r||_%        |                     dQ           || _&        n`|j$        r&tO          |j%        o|j%        j                            dW                    }|s|r| (                    ||          \  }}}||dW<   | )                    |||          \  }}||d	<   ||dK<   | *                    |          |dX<   ||dY<   |D ]}tW          ||||                    |j,        j-        r|.                                |_/        |                                  tC                       |                    d          r| 0                    |
|           n+| j                            dZ| d[tb          j2        d\           || _&        || _3        |rlt.          j"                            dSdT|j#        gg dUg]          }|j        d8k    r:t.          j"                            |d^_          }|r|4                    d`           n|j        dak    rt.          j"                            |d^_          }t.          j"                            |db_          }|r|4                    d`           |r|4                    d`           |r|4                    d`           |5                    dcg           |j6        j        }|	r | j        j        j        j         d0|	 |_        | j        |_        |                     dQ           tC                       | 7                    ||           | 8                    |           | 9                    | j:        ||dde           | ;                    |           tx          j=        r`tx          j=        }tx          j=        dfk    rdg}| j        j	        
                    dh| di           | 9                    | j>        ||dje           n| j        j	        
                    dk           	# t~          $ rK}t                       | j        A                    dl|d	          d|d          dm| dndop           Y d }~	d }~ww xY wd S )qNrt  ro   rY   rW   
add_suffixTc                     g | ]
}|d          S rV   r$   ro  s     r&   rp  z7ConfluenceAPIImport._process_spaces.<locals>.<listcomp>  s    &Q&Q&QSs4y&Q&Q&Qr%   rh  rl   z' (id: z, key: r  rw  u0   Импортируем пространство r   ro  re  uE   В дампе не найдена домашняя страница 'r   r  u   У пространсва u    нет домашней страницы. Сведения о создателе и дате создания пространства будут взяты из первой корневой страницы.ry  uW   Не удалось получить данные корневой страницы id=u(    в дампе пространства uS   В дампе не найдено ни одной корневой страницыr  r  uD   Определяем автора домашней страницы rN  rO  r  r  uJ   Определяем владельца домашней страницы r  r  rM  r  r  r  r  r  r  personalu(    (Личное пространство)u%   Личное пространствоdescriptionr   r   r   r   )r  r  r  r  FuI   Найден ранее импортированный Wiki-проект project.agileu    Найден Agile-проект u_    с импортированным в раздел 'Документы' Wiki-проектом ')rO  )project_wikir   u3   Создание нового Wiki-проекта 're  zproject.wiki:defaultr1   )project_typer+  r   u,   Создание нового раздел 'u-   ) в портале 'Моя компания'sectionzCmfWiki:Class)r  rn  tree_parent_id)rl   r/   r   r   )r  r   r  r  r  rn  )r  r  r   u   Не найден Agile-проект для объединения. Создайте или импортируйте одноименный Agile-проект и повторите импорт проектаu"   Импорт Wiki-проекта 'u<   ) в раздел 'Документы' Agile-проекта r   u8   Неизвестный тип опции импорта r  r   )rl   r   u   ДокументыuL   Не найден раздел 'Документы' в Agile-проекте r  project_perm_schemer  u"   Настройки проекта u    были изменены пользователем. Изменения из импорта не будут примененыr  r   u   Документ1)r  rl   ri  r  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   Ошибка импорта пространства 'r=  zERR-0032r  r  )Br{   r/   rX   rY   r:   r~  rj  r  r|  r@   r   r   r   rq  r  r   r]   r  r   rE   get_correct_keyr   r   r    r  rZ  keysr  r  CmfLogicTyper   r   r   r   r#   rW   r   r  r  rZ   r  r  r  r  rl   r   gen_coder2   r   r>   r  re  r  r  r  _process_project_tagsrw  r  rc  r  rM   rm  r  r   r  r\  )rR   rs   ro   r  r   project_fieldsproject_is_newspace_full_namer  homepage_idre  	root_pager  r  r  r  r  r   re  log_msg
doc_folderr  r  rm_doc_folderrm_doc1rm_doc2r  r`  rh  s                                r&   _process_spacesz#ConfluenceAPIImport._process_spaces  s   ++DO,IJ[,\]]}-g6t<_28<<\JJ
  """'')) ]	 ]	EN!NY?,,.. EE;&Q&QD<P&Q&Q&QQQ"_eFm"_"_E$K"_"_PUV[P\"_"_"_&++,p_n,p,pqqquV}--66{CC"99Z(( "'
"3D"9K#11';GGH# &N %j 1' :N N?JN N N   O*22f_ f f f   &+<%8  	'+'9'9'9'M'MH' & %& O2::!\  {D !\ !\JY!\ !\    
 ''}~~~!),[9&++,{sy,{,{|||&>[00343CN<00373C3CF4=DY3Z3ZN<0 +//	:: OO*//  1E  ~C  1E  1E  F  F  FV}33787G{336:6F6FuT]G[6\6\{332@2NN;/#I.}=dC&++,vlt,v,vwwwF#{22898HN#4558<8H8HRVR_I`8a8aN#453;I3F}3U/04<Y4G4VW]4^01"6]
=J.."LLJ4[N=1 O;;E%LII	Zdo4;GZZ5QU;ZZZ !+//$fm&mmm< 3 3 5 566 : : :  0    Aq%*NsjqssG+>>Rw R R6@R RENR R R   O''4'@@@@"&>>>"sXb"s"sgp"s"s"s,5*0*=*A*AG]*A*^*^* * '&00!Oz !O !O^g !O !O !O $ +1109-<2A3 3   
 ++Gt+DDD"("3"3!+'+#),0	 #4 # # %	11 #)"3"7"7 G G G$(%7)$L%+Wj$A!C$$ $ $ #8 # #  ' "*!T# # 
 ++c c cPY c cY`c c&* ,   
 -4N)F)Ff)F)F666"&'obm'o'oppp'?::!'!3!7!7!14 DFjFjFjk (z "8 " "J & A&'v}''  A  A  A!1 :5:
2"D999'1D$$. )%)#3 P ' 7 = A A, O O& &
 & = = AE@X@X * )A A=J	: 3=E,/040N0N&%"1 1-
I 2<v.=F'9:@D@Y@YZ_@`@`'<=<A'89#1 G GC#GS.2EFFFF"<2 >+2+;+;+=+=GL" !99Z00 J 66xIII++i i i i")/&*	 ,    (/D$&! @$*$6$:$:-tWZ@@@@  %; % %M +>>"("4"8"8]Yl"8"m"m" B#NNDNAAA -??"("4"8"8WSf"8"g"g"("4"8"8]Yl"8"m"m" B#NNDNAAA" B#NNDNAAA( H)00$0GGG++-=,>???+2+A+G(& 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)) *        o]	 ]	s?   h&*h&C5h&:Gh&'G><`(h&&
i;0A i66i;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   r  r   r  ru  rW   rl   r   r   r  r"  r  Tr  r   r   r   r   r   r  r  r  rn  r  rp  r  r   r  zERR-0022r  )r  r  r   r  r  r/   r  r  r   r   r   r    r  r:   r   rl   r  r   r   r   r  r\  )rR   r   re  r  r  r   r   tag_name
name_aliasr   tag_objr   s               r&   r  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  r=  r<  r   )rR   r  group_idr   s       r&   _get_groupszConfluenceAPIImport._get_groups  s      _6688AA(KK


:.. 	# 	#Hj))(K@@#FF #!iill"""# # # # # # # # # # # # # # #	# 	#s   /BB	B	c              #     K   |                     d          }t                              |          D ]Y}t          |                     |          d          5 }t                              |          V  d d d            n# 1 swxY w Y   Zd S )Nr   r<  )r   r   r   r   r   r   )rR   
group_path	user_pathr-  r   s        r&   _get_group_membersz&ConfluenceAPIImport._get_group_members  s      ''00	zz),, 	# 	#Gi((11377 #1iill"""# # # # # # # # # # # # # # #	# 	#s   B  B	B	Tr%  c           
         |                     d          }| j        j                            d|            t	          |d         t          |                     dd                               }|s| j        j                            d|            t          j        j	        j
        t          t          j                  z
  dz
  }t                              |d                   d |          d	t          j         }t	          |d         |t          |                     dd                     
          }d| j        j        j        j         d|| j                  d}d}|d                             dd          }	t          |	          dk    r|	d         |d<   d|d<   d|d<   nct          |	          dk    r|	d         |d<   |	d         |d<   d|d<   n4t          |	          dk    r!|	d         |d<   |	d         |d<   |	d         |d<   ddg}
t(          j                             ddd| dg|
          }|r|j        j                            d| j        j        j        j         d          dk    r|r| j        j                            d| d|j                    t5          j        d| j        j        j        j         dd|j        j                  |_        |                    d           d }n9| xj        dz  c_        | j                            d| d |j         d!d"d#$           |sXd%dd&d'| j        j        j        j         d(gg d)g}t(          j                             d*d+|d         g|g|
          }|st(          j                            dd+|d         g|g|
          }t          |          dk    rH| j                            d,|d          d-t          |           d"d#$           | xj        dz  c_        g }|sd.d+|d.         g|g}t(          j                            ||
          }|sd%g}tA          |	t          |	                    D ]}t          |	          dk    rdd+|d         g}!t          |	          dk    r*|!                    dd+|d         gdd+|d         gg           ^t          |	          dk    r3|!                    dd+|d         gdd+|d         gdd+|d         gg           ||g}t(          j                            ||
          }t          |          dk    rF| xj        dz  c_        | j                            d/|d.          d-t          |           d"d#$           |r|d         }d}|s|rd}d}|d         }t(          j                             d*d+|"                                g|
          r| j        #                    d0| d1tH          j%                   |d                             d	          \  }}| d2| d	| }|dz  }t(          j                             d*d+|"                                g|
          | j        #                    d3|            t(                              ||| j        d4          }nd |fS |r|j&        s|j'        r|D ]}tQ          ||||                    |)                    g d5           |j        r||j        vr|j         | |_        n||_        t(          j*        +                                }t(          j*        ,                                }||j-        vr|j-        !                    |           ||j-        vr|j-        !                    |           d|_.        |j/        r|                    d           | j        xj0        dz  c_0        ||fS )6Nrk   u2   Обрабатываем пользователя r4  
operationsT)rl   does_not_worku8   Не указан Email для пользователя r   @)rl   rk   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  r  r  rl  rm  )r   r   Nloginrn  u+   Пользователей с почтой z > rl   u+   Пользователей с именем uQ   Обнаружена учетная запись с дублирующим email u   , добавляем цифруr   u1   Создадим пользователя ext_id=)r   r   r/   r   )r   r  
user_local)1r:   r/   r@   r   r   rZ   warncmfrm   CmfEmail
max_lengthr   rM   
ORG_DOMAINr  translit_stripr   r   rE   r   r    r!   r   rY   r  r   r  r9  r   r<   r\  rZ  r   r   r6  r  r>   r  r   r(  r  r  r   confluence_group
user_groupr  r  r   rG   )rR   r%  r  r   rk   	user_dictmax_lenr   
is_created	full_namerm   r   not_source_hash_filterpersonsr   
name_combonr   prefix_emaildomainr  
conf_groupr	  s                          r&   _process_personz#ConfluenceAPIImport._process_person  s	   g&&##$dYb$d$deeei6.29==t3T3T.U.U*UW W W	 	hO"''(ncl(n(noooj)4s6;L7M7MMPQQG--i.FGGQggTZTeggEi6e.29==t3T3T.U.U*UW W W	_do,3?__9T]C[___
m,223::	y>>Q%.q\Ik"&(Il#')Im$$^^q  %.q\Ik"&/lIl#')Im$$^^q  %.q\Ik"&/lIl#'0|Im$^$!%%fm&mmm4 & 
 
  	fm)//0bT_5K5R5^0b0b0bccfggg  &..cv c cSYS`c c   !#L$/07CLLLM'! !
 ---1$))Ggm G G {A  {HG G G  *# *     @	( :'[T_-C-J-V'['['[\&&&&"
 %))gy'9:*  *  F  .( *// '9W+=>. " 0   w<<!##O--  /B\efm\n  /B  /Bsvw~ss  /B  /B9Cf . W W WOOq(OO G W)F*;<.G %.33763RRG" W#'&*6y#i..*Q*Q # #J"9~~22+6A*O!$Y1!4!4 '%17JqM$J%0':a=$I0" !# !# !# !# "%Y1!4!4 '%0':a=$I%17JqM$J%2GZ]$K0" !# !# !# $2# #)"2"7"7wv"7"V"Vw<<!##OOq(OOO--  /A\efl\m  /A  /Aruv}r~r~  /A  /A9Cf . V V V ($QZF
 	( (!
(&**77EKKMM2R[a*bb O''  )c  }B  )c  )c  )c  el  et  u  u  u+4W+=+C+CC+H+H(L&+::a::&::EFA	 &**77EKKMM2R[a*bb 
 ##$`X^$`$`aaa))27DO<@ * B B Z'' 	.% 9 9$ 9 9CFC38888GGGHHH} '..'-}$>f$>$>FM &.??AAJ.99;;J!444#**:666!444#**:666 $F  .-----2--z!!r%   c           	      B   | j         j        j                            dd          s(| j                             dt
          j                   d S t                      }|                     d          D ]!}| j         	                    dd           | j         
                                r d S |                     |          \  }}|j        r|                    d           |rH|j        j                            t           j                  s|                    |j        j                   |                    d	g           D ]%}d
}| j        j        rd}d| j         j        j        j         d||          d}t.          j                            ddd| dgdg          }|s+t.          j                            d
d|d
         gdg          }|s+t.                              || j         |d
         d|          }n|j        r|d
         |_        |j        s||_        n||j        vr|j         | |_        |                    d           |j                            |           '|j        r|                    d           t=                       #|r| j         j        j                            dd          rd| j         j                             dtC          |           d|            tE          t.          j#        j$        tK          |          g           d S d S d S )Nr  TuA   Не грузим пользователей из-за опцийr  r   r   r  r   r  rl   rW   r   r   r   r   r   r  r   r   r/   rl   r   r  send_invitesu,   Отправляем приглашения u    пользователям: )args)&r/   rX   rY   r:   r  r>   r  rJ   r   r]  r  r  r   r   rk   r  rM   r  r!  r.   rF   r   r   r    r   r   rl   r   r  r   r   r@   r   r   schedule_deferred_jobr!   register_personsrZ  )	rR   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 )Nrl   rW   r   r   r   r   r   r  r   Tr  r   r  F)r  r.   rF   r/   r   r   r    r   r:   r   rl   r   r   r   r  r   r   r  r  r   r   )rR   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           
         | 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                            |           "# t.          $ r?}t1                       | 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 в фильтрах задач макроса "Результаты фильтра"
        uj   Обработка JQL в фильтрах задач макроса 'Результаты фильтра')r  r   z%"jqlQuery":"%r   )r   r   T)r  ubqlr  rl   r  r  r  rw  r&  r  r   r   2--------------------------------------------------u   ФИЛЬТР: FrH  Tr   zJQL:	zUBQL:	zBQL:	u   Фильтр u0   : ошибка преобразования JQL r:  zERR-0066r;  r  NuC   Обработка JQL в фильтрах выполнена за rS  rT  )r/   r@   r   r   rW  process_timer    r;  rZ  rl   r2   r  rY   r:   r  get_modifiedr   r   r   r  r   r  r   r   r  r\  )rR   jqlrc  task_filterstask_filter
filter_msgr  r  r   r   r  	error_msgrh  ri  s                 r&   _process_jql_in_filtersz+ConfluenceAPIImport._process_jql_in_filters  s    	##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G00
H9:4H44H9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!  rW   c                     g | ]
}|d          S rV   r$   ro  s     r&   rp  z6ConfluenceAPIImport.process_import.<locals>.<listcomp>1  s    $O$O$O3SY$O$O$Or%   u'   Импортирован проект 'rl   rh  r   )r@   uC   Не удалось создать отчет по проекту. N)r  r/   r  r<   r>   r  r  r  r.   closer  r  r)  rX   rY   r:   process_cross_linksr@   r   r   rj  r|  r   rM   IMPORT_COLLECT_STATSr   r   project_statsr   r$  )rR   r  r<   re  project_ext_idrh  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 создаем наши превью
        r   
backgroundr  r  )r  r  compilerl   r  create_preview_tag)rR   r   r  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>J  s$    #,,v2F2F2]#,,W\J]J] r%   r2  u   Уже обработали u'   Не обработали ссылку u&   Обрабатываем ссылку u    на странице r   r   r  )r   zdata-anchoru1   Не найден якорь для ссылки z##	href_origTu   Заменили на z/people/r"  r   r   r  u?   Пользователь не найден для ссылки r   zdata-usernamer   data-linked-resource-typer  zdata-linked-resource-idz$/pages/viewpage.action\?pageId=(\d+)r   r  r6   z!data-linked-resource-container-idr#   r  rl   rc  ro  r;  zparent.import_raw_jsonr  u   Документ ID u)    с каталогом вложений 'u<   ' не найден в дампе пространства 'r  u~   ). Возможно он находится в пространстве, которое еще не импортированоzERR-0005r  rg  r  r   rm  r  rg  Tr  r   r  r  r  r  r>  r  rM  rN  rO  r   r  Fr  u   Не найден файл '   ' страницы ID r  rh  zERR-0006)r   r  r  )rl   rm   r   src_origsrcsetsrcset_origvideocontrolsr  r  r  imagesourceu%   Не найдено вложение zERR-0007u,   Ошибка обработки ссылкиzERR-0008)=zipfiler  r  r:   r/   r@   r   r   r   r  r  r	  r
  r"  lstripr   r   r   r  r  r  r   r    r#   r   r   r  r   r   r  r  r   r   r   r   r   r   r\  r  rw  r   r   r  rE   r  r]   r  r  r   r   r!  r   r   r   rY   r  r  rl   r7  r  r   )!rR   r   r  r  make_previewrF  r   r   raw_taganchor_nameanchor_link
account_idr   r  	user_namer  rel_docattach_parentrl   r  resource_container_idr  r  r  resource_ext_iddoc_with_attachdownloaded_file
attach_objr(  r   r  r$  rE  s!                                    r&   r   z"ConfluenceAPIImport._convert_linksG  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  r/   r@   r   r  r:   r   r   r   r  r   rW   r   r   rl   r  r  r  r  r\  )rR   r   r  r  r  r   r   r  r  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   r\   r[   r/   r\  )	rR   r-  r   r~  r   r   r   rh  
person_msgs	            r&   r   zConfluenceAPIImport._get_personq  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  rb  macroParamsrl   rY   r
  r  rh  r  extensionKeyr  r  rW   rw  r1  r:  r  r  N)r    r   r:   r   r  r  rl   r  r[  rX  rZ  r/   r\  )
rR   r   elemr   r  r0  r  r  rh  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rJ  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   rN  layoutSectionra  r  r*  zmceNonEditable selected)contenteditablezdata-layout-sectionr_  r  c                 N    g | ]"}d |j         d         vd|j         d         v |#S )zfixed-widthr_  singler  ro  s     r&   rp  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  sJ     j j js'sy/AAAhVYV_`gVhFhFh FhFhFhr%   r_  columnLayoutr   rJ  r  r  r   zflex-basis: )zdata-column-widthzdata-layout-columnr   c                 6    g | ]}t          j         |          S r$   )r  r  s     r&   rp  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  s     *V*V*VA49Q<<*V*V*Vr%   	extensionlocalIdzdata-local-idu&   Не удалось найти тег u    для rb  macroMetadatarb  macroIdr  rY   rB  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>
                    ra  r"  r-  r  rl   rE  r  rI  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>
                    rJ  r  diagramNamer
  u  
                    <div data-drawio-title="{name}" data-drawio-type="diagram" data-attach-id="{attach_id}" class="drawio-content" contenteditable="false">
                        <div class="header">Диаграмма: "{name}"</div>
                        <div class="content">
                            <img cmf_converted=True src="{img_src}" alt="" data-mce-src="{img_src}" width="{width}" height="{height}">
                        </div>
                    </div>
                    pageIdr   rg  r  r   rm  r<  r=  r  Tr  r>  r  rM  rO  r   r  Fr  r  )r  rl   r   r   r   r   )rl   r   r  r  r  r/   r   rc  ro  r;  u7   Не найден файл Draw.io диаграммы 'r>  r  rh  zERR-0010r  r   r  r  r  r  rs  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  r  )r  r  r)  r  rC   r  r  r:  r  r6   rv   r)  uE   Не удалось обработать тег оглавления r  r  r  rC   r   r!  r"  r#  r  r  r  r  r%  r'  r(  r  r	  c              3   6   K   | ]\  }}| d |d          V  dS )rg  rY   Nr$   )rx   r#  r$  s      r&   r   z9ConfluenceAPIImport._convert_atlas_doc.<locals>.<genexpr>   s8      2k2k41aa3F3F!G*3F3F2k2k2k2k2k2kr%   rH  )r*   r1  r  r  zpaste-code-macro)r_  r2  r  r   prezlanguage-markupr  )r_  rg  zdata-mce-selected__bodyContentr  r2  r  bodiedExtensionr9  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  ro  s     r&   rp  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>]  s?      pR  pR  pR  ~Apstwpxpx  pR  pR  pRr%   r>  u   Не нашли тег для r$   )DrF  r   r  r/   r  r  r  r{  r?  r   rl  extendr  r:   r  r@   r   r   r[  r    r  r  r   r   r   r   r  r  r  r   r   r   r  rw  r   r   r   r  r   rE   r  r]   r  r  r   r   r!  r   r   rl   r   r   r   r  r\  rY   rW   r   r   r   r6  r#   rn  r  r,  r   rd  r6  )2rR   r   rJ  r/  r0  rF  cntr  rc  tag_layout_sectionr   r?  r  colr  tag_layout_colr  macro_paramsr  rF  r@  ry   rK  rl   r  r  r  r  r  r(  r   
drawio_imgfile_name_imgr  r.  r  r  r  rn  r1  r  r  parent_pager6  r7  original_params_strnew_soup
code_blockr   rY   s2                                                     r&   r6  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)NFrf  )qr   r   r   r   r   r    	CmfImportrS   rQ   rD   rZ  rr   staticmethodr	   r   r{   r}   r   r   r   r   r   r   r   r  r1  r'  rk  r  r  r  r  r  r  r6  rG  rK  rT  ra  rf  rj  r~  r  r  r  r  r  r  r  r  r   r  r	  r  r,  rL  rO  rs  rq  r  r  r  rM   IMPORT_OBJ_CNTr  r  r  r  r  r9  r8  r  r:  r;  rG  r=  r>  rB  rC  rD  rE  r7  r  r?  rH  r@  rA  r<  rF  rc  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  rZ   r2  r7  r   r  r   rd  r6  r$   r%   r&   r-   r-   *   sC       EE!$= !$f>N !$ !$ !$ !$F
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BM M M2w w w w$IH IH IHVS/ S/ S/j2 2 2hb+ b+ b+H  >3 3 3j]+ ]+ ]+~`" `" `" `"D3- 3- 3- 3-j-- -- --^Z Z Z Zx!N !N !NF  # # # 4% 4% 4%l. . . . .
7 
7 
7lk lk lk\' ' '>9 9 9.;# ;# ;#z? ? ?B& & && & &B$ B$ B$ B$ B$H       \0P P PdA A A AF  \$ \ \ \ \|   \&  ; ; ; ;> > > >D=R    ./# /# /#b    4 '  '  'Dg# g# g#R.H .H .H`4 4 4l_" _" _"B   @z9 z9 z9x89 89 89tJ9 J9 J9XA9 A9 A9FU9 U9 U9nl9 l9 l9\G9 G9 G9R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\ \ \|  &Z Z Zx39 39 39j3% 3% 3%jc c cJ	'4 ' ' ' 'R# # ## # #c" c" c"D c" c" c" c"J'` '` '`R  <1| 1| 1|f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-   )#r  r  r  r	  rW  r"  cmf.appr   pathlibr   urllib.parser   r   typingr   r   r	   r
   	itertoolsr   r   cmf.includemodules.confluence.apir   %common.models.cmf_plugin_import_mixinr   bs4r   r   modules.jira.jql.parserr   	dataclassr   r(   r-   r$   r%   r&   <module>r     s        				                ! ! ! ! ! !       . . . . . . . . . . . . " " " " " "         0 0 0 0 0 0 F F F F F F        1 1 1 1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ O O O O O O O Ox\S x\S x\S x\S x\S x\S x\S x\S x\S x\Sr%   