
    Qz>j                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl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 d dlZd dlmZ d dlmZ d d	lT d d
lmZ d dlmZ d dlmZm Z  d dl!m"Z"  G d de#          Z$ G d de#          Z% G d de&e          Z'e(j)        j*        Z*e(j)        j+        Z+ G d d          Z,dS )    N)contextmanager)Enum)permutations)Path)List)BeautifulSoup)cmf_context)*)CmfPluginImportMixin)ConfluenceApi)EmptySQLiteQueueBroker)JQLNormalizerc                       e Zd ZdZdS )ObjectModifiedErroru<   Объект был изменен после импортаN__name__
__module____qualname____doc__     "./modules/confluence/api_import.pyr   r      s        FFDr   r   c                       e Zd ZdZdS )RemoteDeletedSourceErroru   Файл существует локально, но удален в исходной системе (нет метаданных)Nr   r   r   r   r   r   !   s         M  MDr   r   c                        e Zd ZdZdZdZd ZdS )GetPageModeu=   Способ получения страниц через APIbatchsinglec                     | j         S Nvalueselfs    r   __str__zGetPageMode.__str__+   s
    zr   N)r   r   r   r   BATCHSINGLEr&   r   r   r   r   r   &   s3        GGEF    r   r   c                      e Zd ZdZdZdddZdedej        fdZ	d	 Z
d
 Zd Zd Zd Zd Zeddefd            Zed             Zed             ZdefdZededefd            ZdefdZd ZddefdZdefdZdededefd Z d! Z!dd"Z"d# Z#d$ Z$d% Z%d&efd'Z&d( Z'd) Z(d* Z)d+ Z*d, Z+d-ed.efd/Z,d0 Z-d1 Z.dd4Z/d5 Z0dd7Z1d8 Z2d9 Z3d: Z4d; Z5d< Z6dd=Z7d> Z8d? Z9d@ Z:dA Z;dB Z<dC Z=dD Z>dE Z?dF Z@dG ZAdH ZBdI ZCdJ ZDdK ZEdL ZFdM ZGdN ZHedO             ZIdP ZJdQ ZKddRZLdS ZMdT ZNdU ZOdV ZPdWefdXZQdY ZRdZ ZSd[ ZTd\efd]ZUd^ ZVd_ ZWd` ZXda ZYdb ZZdc Z[dd Z\de Z]ddfZ^dg Z_dh Z`di Zadj Zbdk Zcdl Zddm Zedn Zfdo Zgdp Zhdq Zidr Zjedds            Zkdt ZldduZmdv Zndw Zodx Zpdy Zqdz Zrd{ Zsd| Ztd} Zud~ Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddedefdZd Zd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd ZdefdZddZddZddedefdZddZdS )ConfluenceAPIImportu;   Класс загрузки объектов через API).meta.dirty.trashed.remoteCmfDocument	CmfFolder)pagefolder
confluence
cmf_importc                    || _         || _        | j         j        rdnd| _        | j                                        | _        | j        j        j        j        | _        |                     | j        j	        d                   | _
        t          j                            d          | _        |                                  |                                  |                                  |                                  |                                  |                                  | j                            d           t-          j                    | _        d S )N	accountIduserKeyimport_settingszdefault.system:defaultcodeF)log)r3   r4   clouduser_keyget_download_pathdownload_pathpluginsource_hash_normalize_settingsjson_settingssettingsmodelsCmfWorkflowgetdefault_workflow_setup_config_params_setup_rest_client_logger_setup_queue_broker_logger_setup_projects_dir_setup_expand_params_setup_fallback_personget_max_processes	threadinglocal_local)r%   r3   r4   s      r   __init__zConfluenceAPIImport.__init__C   s%   $$'+'<K)!_>>@@?18D001NO`1abb & 2 6 6<T 6 U U!!###&&((('')))  """!!#####%%% 	))e)444o''r   c                 B   t          t          dd          | _        t          t          dd          | _        t          t          dt          j                  | _        | j        t          j        t          j        fvr`| j        j	        
                    d| j         dt          j         dt          j         d	t          j         d
	           t          j        | _        t          t          dd          pd| _        t          t          dd          pd| _        t          t          dd          pd| _        t          t          dd          pd| _        t          | j                  | _        t          t          dd          pd| _        t          t          d          | _        dS )uB   Настраивает параметры конфигурации"IMPORT_CONFLUENCE_DOWNLOAD_THREADS   IMPORT_REFRESH_DUMPFIMPORT_CONFLUENCE_GET_PAGE_MODEuN   Недопустимое значение 'IMPORT_CONFLUENCE_GET_PAGE_MODE': 'u+   '. Допустимые значения: '', 'u   '. Проверьте настройки в config.py. Будет установлено значение по умолчанию: '' IMPORT_CONFLUENCE_GET_PAGE_LIMIT&IMPORT_CONFLUENCE_GET_ATTACHMENT_LIMIT   #IMPORT_CONFLUENCE_GET_COMMENT_LIMIT2   $IMPORT_CONFLUENCE_DUMP_LAST_PAGE_VERr   $IMPORT_CONFLUENCE_PROC_LAST_PAGE_VERIMPORT_QUEUE_BROKER_DIRN)getattrconfignum_download_threadsrefresh_dumpr   r'   	page_moder(   r4   loggerwarning
page_limitattachment_limitcomment_limitdump_last_versions_countbooldump_versionsprocess_last_versions_countqueue_broker_dirr$   s    r   rI   z(ConfluenceAPIImport._setup_config_paramsY   s    %,F4XZ\$]$]! $F,A5II
 !)JKL]^^>+"3[5G!HHHO"**uaeao u u;F;Lu uR]Rdu u al`qu u u   ).DN "&*LbQQWUW '0XZ] ^ ^ ebe$V-RTVWW][](/8^`a(b(b(gfg%!$"?@@+26;acd+e+e+jij( '0I J Jr   c                     t                               d          }| j        j        j        |_        |                    | j        j        j                   dS )u/   Настраивает логгер rest_clientzatlassian.rest_clientNlogging	getLoggerr4   rh   handlerssetLevellevelr%   rh   s     r   rJ   z-ConfluenceAPIImport._setup_rest_client_logger|   sE    ""#:;;/09.455555r   c                     t                               d          }| j        j        j        |_        |                    | j        j        j                   dS )u0   Настраивает логгер queue_brokerqueue_brokerNrs   ry   s     r   rK   z.ConfluenceAPIImport._setup_queue_broker_logger   sD    "">22/09.455555r   c                 z    | j                             d          | _        | j                            d           dS )uC   Подготовка каталога для пространствprojectsTexist_okN)r?   joinpathprojects_dirmkdirr$   s    r   rL   z'ConfluenceAPIImport._setup_projects_dir   s;     .77
CC.....r   c                    g d}ddg}| j         j        r|                    d           ddg}dg}g d}g d	}| j         j        r|                    d
           ddg}g d}d                    |          | _        d                    ||z   |z   |z   |z             | _        d                    |          | _        d                    |          | _        d                    ||z   dgz   |z             | _        dS )uk   Настройка списка свойств для расширения данных в запросах)	ancestorszhistory.lastUpdatedzhistory.ownedByzbody.editorzbody.storagezbody.atlas_doc_formatzchildren.attachment.versionzchildren.commentzmetadata.labels)z$restrictions.read.restrictions.groupz#restrictions.read.restrictions.userz&restrictions.update.restrictions.groupz%restrictions.update.restrictions.user)zcontent.body.editorzcontent.body.storagezcontent.body.viewzcontent.versionzcontent.body.atlas_doc_formatzextensions.inlinePropertieszextensions.resolution)zdescription.plainzhomepage.history.lastUpdatedzhomepage.history.ownedByz-homepage.restrictions.read.restrictions.groupz,homepage.restrictions.read.restrictions.userz/homepage.restrictions.update.restrictions.groupz.homepage.restrictions.update.restrictions.user,	body.viewN)	r3   r<   appendjoinexpand_spaceexpand_current_pageexpand_trashed_pageexpand_version_pageexpand_comment)	r%   mainbodychildrenmetadatarestrictionsversion
extensionsspaces	            r   rM   z(ConfluenceAPIImport._setup_expand_params   sO   
 
 
 
 ?  	1KK/000 *
 

 
 

 
 
 ?  	<NN:;;; *#



 
 
  HHUOO#&88D4K(,BX,MP\,\#]#] #&88D>> #&88G#4#4 !hhtd{k]'BZ'OPPr   c                     | j         j        j                            d          }t	          |          | _        | j        r't          j                            |          | _        dS t          j
        | _        dS )u   
        Устанавливает резервного пользователя,
        если пользователь не будет найден в методе _get_person()
        default_user_id)idN)r4   rC   r#   rG   rn   _is_default_userrE   	CmfPerson_fallback_persongsystem_user)r%   r   s     r   rN   z*ConfluenceAPIImport._setup_fallback_person   sm    
 /7=AABSTT $_ 5 5  	2$*$4$8$8O$8$L$LD!!!$%MD!!!r   Nnamec              #     K   d}|r| d| }| j         j                            |           t          j                    }dV  t          j                    |z
  }t          |d          \  }}t          |d          \  }}dt          |          ddt          |          dd|d	}	|r| d|	 }	| j         j                            |	           dS )
u0   Замеряет время выполненияu   Запуск. N  <   u   Выполнено за 02d:06.3f)r4   rh   infotimeperf_counterdivmodint)
r%   r   	log_startstartelapsedhours	remainderminutesseconds	log_timers
             r   timerzConfluenceAPIImport.timer   s       #	 	/..9..I##I...!###%%-!'400y!'2..bs5zzbbbGbbbSZbbb	 	/..9..I##I.....r   c              #   V  K   | j                             |          }|                    d          }	 |                                r|                    |           n|                    d           || _        |V  |                    |           || _        dS # t          $ r  w xY w)u|   Контекстный менеджер для атомарного обновления директории проектаr,   Tr~   N)r   r   with_suffixexistsreplacer   project_dir	Exception)r%   	space_key	clean_dir	dirty_dirs       r   project_directoryz%ConfluenceAPIImport.project_directory   s       %..y99	))(33		!! /!!),,,,...(DOOOi((((D 	 	 		s   A'B B(c              #   x  K   | j                             |          }|                    d          }	 d}|                                r|                    |           n-|                                rd}n|                    d           ||fV  |r|                    |           dS dS # t          $ r  w xY w)u~   Контекстный менеджер для атомарного обновления директории контентаr,   TFr~   N)contents_dirr   r   r   r   r   r   )r%   
content_idr   r   should_replaces        r   content_directoryz%ConfluenceAPIImport.content_directory   s       %..z::	))(33		!N!! /!!),,,,!!## /!&...Y&&&& -!!),,,,,- - 	 	 		s   A6B- -B9returnc                     dt          t          j        j                  t          t          j        j                  dddg ddd dgS )Ncurrent_user)emailr   )r   fieldsselectedObjects)r   r#   import_type)strr   current_personr   r   r$   s    r   calc_import_settingsz(ConfluenceAPIImport.calc_import_settings  s^    'SAQAW=X=X<?@P@U<V<V4X 4X Y Y*R88&668 	8r   rD   c                     d | D             S )uO   Преобразуем список с настройками в словарьc                      i | ]}|d          |S r   r   .0ss     r   
<dictcomp>z;ConfluenceAPIImport._normalize_settings.<locals>.<dictcomp>  s    ///&	1///r   r   )rD   s    r   rB   z'ConfluenceAPIImport._normalize_settings  s     0/h////r   c                     g S )uo    Для импорта из Confluence предварительный просмотр не требуется r   r$   s    r   previewzConfluenceAPIImport.preview!  s    	r   c                    g g d}d }t          |d                                                   d d         }|D ]}|d         dk    r|d         d         d         D ]A}d}|                     || j                           }|r|d                             |           B|d         d	         d         D ]}	d}| j        j        rd
| j         d
|	d          d
}
nd
| 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         d
|	d          d
}
nd
| 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writer   	operationr   userresultsprivategroup::r   r   ext_idLIKE%filterupdatereadonlyr   Tsave_importparent==r4   !=N)r   r4   access_levelsubjects)listvalues_get_personr=   r   r3   r<   rA   rE   CmfPersonGrouprG   import_originalperm_policy
is_changedsaveperm_aclloadCmfAccessRulebulk_deleter4   )r%   content_objcontent_datapermsr   r   restrictionr   person
group_infor   _filterr   s                r   _process_content_restrictionsz1ConfluenceAPIImport._process_content_restrictions%  s   
 
 L8??AABB3B3G' '	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, Q!Nd&6!N!N*T:J!N!N!N!Pd&6!P!P*V:L!P!P!P'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, Q!Nd&6!N!N*T:J!N!N!N!Pd&6!P!P*V:L!P!P!P'V?G"155W5EEE 5g--e444& 	U; 	U&1K#% 3  T 222 %%''' $(<=?Y?Y?YZG ,,G,<<<V} T$$K,@04f.3Fm % = ==ATdT=S=S=SW~ U$$K,@04g.3Gn % > >>Bdtd>T>T>T>T>T	U 	U 	U 	UU Ur   Fc                    | j                             | d          }|                    d          }|                                rt                              |           t          |d          5 } |            D ]2}|                    t          	                    |          dz              3	 d d d            n# 1 swxY w Y   |
                    |           d S )N.jsonr,   a+
)r?   r   r   r   osremoveopenr   jsondumpsr   )r%   api_funcr   	overwrite	file_pathfile_path_tmpfrows           r   _simple_dumpz ConfluenceAPIImport._simple_dumpf  s   &//4??	!--h77 	!IIi   -&& 	0!xzz 0 0

3$.////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	i(((((s   1>B<<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
  loads)r%   r   r  r  r  s        r   _simple_getzConfluenceAPIImport._simple_getp  s      &//4??	 	*i&& *! * *C**S//))))** * * * * * * * * * * * * * * ts   "A33A7:A7textattachments_dirobjc                 j   |sd S | j         j                            d           t          j                            | j        j                  }t          |d          	                    d           D ]?}|
                    d          rdnd}|j        |         s,	 g d}t          fd|D                       rMt          j        d          rcd	}                    d
          st          j        |          r#| j         j                            d            t          j                                      }	|	j        sP|	j        sIt          j                            | j        j                  t          j                                      }	|	j                            d          r2|	j        | j        j        v r|	j                            |j                  s$| j         j                            d            t          j                                                d          d                             d          d                   }
t/          j        |
          \  }}|s$| j         j                            d|
            &t2          j                            |
          }|                    |          }| j         d|d          }t2          j                            || j                  }|s(t2                              | j         || j                  }||_        ||_         d|_!        |"                                 tG                       # tH          $ r>}tK                       | j         j                            d d|            Y d }~9d }~ww xY wd S )Nu/   Обработка ссылок в текстеlxmlc                 V    |                      d          p|                      d          S Nhrefsrchas_attrtags    r   <lambda>z1ConfluenceAPIImport._dump_links.<locals>.<lambda>  s(    CLLQWDXDXDo\_\h\hin\o\o r   r  r  )z/attachments/z/thumbnails/z/thumbnail/z	/display/z/servlet/benryanconversionc              3       K   | ]}|v V  	d S r!   r   )r   url_parturls     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   u   Это не файл: r   r   )r  
obj_ext_idrA   )r4   r  r-  rA   Fu6   Не удалось обработать ссылку : )&r4   rh   r   urllibparseurlparser3   r'  r   find_allr!  attrsanyresearch
startswithri   schemenetlocurljoinpathunquotesplit	mimetypes
guess_typerE   r/   _get_filenamer   rA   CmfImportDownloadrG   r   
downloadedr   
cmf_commitr   cmf_rollback)r%   r  r  r  parsed_confluence_urlr#  key	url_partsemail_pattern
parsed_urlr   	mime_typeencoding	file_namer  r   download_jober'  s                     @r   _dump_linkszConfluenceAPIImport._dump_linksx  s    	F##$UVVV & 5 5do6I J J v..778o8opp >	t >	tCLL00;&&eC)C.C 8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<< #)T_-@@@&O667L7QRR A 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??	 ,;;D	;;%7;;GMHLHX  <  Z  Z $ Z#)#;#;tADGMHLHX $< $Z $ZL %.!$-!*/'!!### t t t&../rhk/r/rop/r/rssssssssty>	t >	ts:   M(?M(AM($C$M(
BM(CM((
N023N++N0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expandr6   )usernamerS  c              3   :   K   | ]\  }}|vs|d k    ||fV  dS ) Nr   )r   kv	user_infos      r   r(  z5ConfluenceAPIImport._get_user_info.<locals>.<genexpr>  sJ       !C !CDAq$%Y$6$6!r'' #$Q:A'''!C !Cr   
users.jsonr  r  u4   Информация о пользователе ID u    добавлена в дамп)_get_user_info_from_dumpr3   get_user_infoget_user_info_by_keyget_user_info_by_usernamer<   get_user_detailr   itemsr   r	  r   r
  r  r4   rh   r   )r%   user_id	dump_pathrR  user_detail
users_pathr  rX  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c                    |                      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	| d
          )Nusersr   rU  rS  userNamer   displayNamefullNameu   Пользователь 'u!   ' не найден в дампе)r  rG   r=   lowerr   )r%   r`  rf  rX  s       r   rZ  z,ConfluenceAPIImport._get_user_info_from_dump  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_W___```r   c                    ddddddddd	d
d
ddddd}i }	 | j         d         }t          |                    d          d                   }| j                            ||          }| j        j        r`|D ]Z}|d         d         |d         d         f}|                    |          }	|	s7|                    |	|	g g dd          }
|                    d          r|d                             d          rV|d         d         d         d         d         }|                     || j	                   |
d         
                    |           |d                             d          rZ|
d         
                    |d         d         d         d         d         |d         d         d         d         d         d           |d          rd!|
d"<   \n|d#k    r|D ]}|d         d         |d         d$         f}|                    |          }	|	s6|                    |	|	g g dd          }
|d%         }|d&         }|dk    r?|d'         }|                     || j	                   |
d         
                    |           |dk    r$|
d         
                    d|d         i           |d"k    rd!|
d"<   n|D ]}|d(         D ]}|                    |d&         |d&         g g dd          }
|d)         rB|                     |d)         | j	                   |
d         
                    |d)                    |d*         r#|
d         
                    d|d*         i           |d)         s|d*         sd!|
d"<   | j                            d+          }|                                rt                              |           t!          |d,          5 }d- |                                D             |d.}t$                              ||           d d d            d S # 1 swxY w Y   d S # t(          $ r,}| j                            d/| d0d1d23           Y d }~d S d }~ww xY w)4N	EDITSPACE
REMOVEPAGEEDITBLOG
REMOVEBLOGCOMMENTREMOVECOMMENTCREATEATTACHMENTREMOVEATTACHMENT	VIEWSPACEREMOVEOWNCONTENTSETPAGEPERMISSIONSSETSPACEPERMISSIONSEXPORTSPACE))r1   create)r1   delete)blogpostry  )r{  rz  )commentry  )r|  rz  )
attachmentry  )r}  rz  )r   r   )r   rz  )r   
delete_own)r   restrict_content)r   restrict)r   
administer)r   exportr   .r   r   
targetTypeF)
permissionrf  groups	anonymousr   r   r   r6   rf  r   r  r   r   )r   r   anonymousAccessTr  
   operationKeysubjecttyper7   spacePermissionsrg  	groupNamepermissions.jsonr  c                     g | ]}|S r   r   r   _s     r   
<listcomp>z?ConfluenceAPIImport._dump_space_permissions.<locals>.<listcomp>a  s    !G!G!G!!G!G!Gr   )	convertedoriginalu@   Не удалось сдампить права доступа. zERR-0056
CmfProjectdump)obj_type
error_type)system_infor   r=  r3   get_space_permissionsr<   rG   
setdefaultrd  r?   r   r   r   r   r  r  r	  r   r
  r  r   r4   	log_error)r%   r   mapping_typepermissions_dictconfluence_versionmain_versionpermissionsr  r   type_permr   r  subject_typer=   permission_typepermission_filer  permissions_dataexcs                       r   _dump_space_permissionsz+ConfluenceAPIImport._dump_space_permissions  s    + ,$.$0#,#2&8&8*!3%7+?#7%:!.
 
$ l	!%!1)!<177<<Q?@@L/?? K
 $ Q5"- 1 1J!+K!8!F
S^H_`kHl mI(,,Y77E  ! +66*/%'&().	  D "~~j11 %j155f== 7#-j#9&#A)#LQ#OP[#\D //d6HIII M00666%j155g>>  N11*4Z*@*I)*TUV*WX\*],6z,B7,KI,VWX,YZ`,a!" !"   ""34 1,0[)=1> ##"- 1 1J";/=";/?!I ),,Y77E  ! +66*/%'&().	  D )3G#*6?L#v--#*9#5++Hd6HIIIW,,X6666%00X--vwv.GHHHH%44,0[)71: (3 5 5O&56H&I 5 5
/::&v..8.@)+*,-2	     &j1 I //
:0FHZ[[[ M00J1GHHH%k2 U N116:k;R2STTT)*5 5j>U 504D-#5& #.778JKKO%%'' +		/***ot,, /!G!G-=-D-D-F-F!G!G!G +$ $  		*A.../ / / / / / / / / / / / / / / / / /  	 	 	O%%XSVXX%!	 &         	s<   N;P( =PP( PP( "P#P( (
Q2!QQc                     g }t                      } j                            d          }|                                rPt	          |d          5 }t
                              |          } fd|D             }ddd           n# 1 swxY w Y   t                      } j                                        D ]}|	                                r|j
                             j                  r6|                    d          }|                                rt	          |          5 }t
                              |          D ]H}|d         dk    r|                    | j                            ||vr|                    |           I	 ddd           n# 1 swxY w Y   |                                 t	          |d          5 }t
                              t%          |          |dd	
           ddd           n# 1 swxY w Y   |                    |          }	|	D ]}
                     |
 j                   dS )us    Собирает пользователей из файла users.json в каталогах документов rY  rc                 D    h | ]}t          |j                           S r   )r   r=   )r   ur%   s     r   	<setcomp>z5ConfluenceAPIImport._collect_users.<locals>.<setcomp>v  s(    #Q#Q#QaC$-(8$9$9#Q#Q#Qr   Nr  r  w+   Findentensure_ascii)setr   r   r   r	  r
  r   r   iterdiris_dirr   endswithEXCLUDED_DIR_SUFFIXESaddr=   r   unlinkr  r   
differencerd  r?   )r%   current_userscurrent_user_ids
users_filer  new_user_idsdoc_dirrc  r   
diff_usersr`  s   `          r   _collect_usersz"ConfluenceAPIImport._collect_usersm  s    55%..|<<
 	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(0022 	$ 	$G>>## w|'<'<T=W'X'X  )),77J  "" $*%% 7 $		! 7 7<;66$$((dm)<===}44)0066677 7 7 7 7 7 7 7 7 7 7 7 7 7 7 !!###*d## 	LqIId=))1QUIKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L ",,-=>>
! 	= 	=G);<<<<	= 	=s7   )BB	B	%A$FF	F	,G>>HH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 )Nr}   )r,   r+   	info.jsonuN   Отсутствует файл info.json в каталоге проекта 'rZ   r  )r?   r   r  r   r  r   r4   rh   ri   r	  r
  r   )r%   r   r   	info_filer  s        r   _get_projectsz!ConfluenceAPIImport._get_projects  s/     )22:>>'//11 	# 	#K(()<== #,,[99I##%% &..sepsss   i%% #iill"""# # # # # # # # # # # # # # #	# 	#s   +CC	C	
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   rG   )r%   r  r  r  applinkss        r   _get_applinksz!ConfluenceAPIImport._get_applinks  s    &//@@	)T"" 	$ayy||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$||J''-2-s   AAAc                 l   ddl m} i }| j                                        D ],}|                    |d         d          |d<   |||d         <   -| j                            d          }|                    d          5 }t          	                    ||d	
           d d d            d S # 1 swxY w Y   d S )Nr   )cmf_hashlibrpcUrl   rA   r   r  wFr  )
cmf.utilr  r3   get_applinksshort_str_encr?   r   r	  r
  r  )r%   r  r  applinkr  r  s         r   _dump_applinksz"ConfluenceAPIImport._dump_applinks  s   ((((((3355 	. 	.G%0%>%>wx?PRS%T%TGM"&-HWT]##&//@@	^^C   	7AIIhI666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   >B))B-0B-c              #     K   | j         j        ro| j                             |d          D ]/}|V  | j                             |d         dd          E d {V  0| j                             |d          E d {V  n$| j                             |ddd          E d {V  | j                             |d           E d {V  d S )	Nr   rQ  r   r]   limitrR  current)r  rR  status)r   )r3   r<   get_root_pages_from_spaceget_descendants get_all_pages_from_space_archiveget_all_pages_from_spaceget_all_pages_from_space_trash)r%   r   	root_pages      r   _get_all_space_contentz*ConfluenceAPIImport._get_all_space_content  sg     ?  	!_FF" G   	 		  ?::dO& ;           GG" H           ??" 	 @          ?AA)SWAXXXXXXXXXXXr   c                 v    i  _          fd}i }                     |          D ]}|d         }|                    dg           }t          |          D ]t\  }}	|dk    r|d         dk    rdnd}
n||d	z
           d         }
|                    |
t                                                    |	d                     ||	|
           u|r|d
         d         }n!ddd}|                    |d         d          }|                    |t                                                    |            |||            j                            d          }|	                    d          5 }t                               j         |dd           d d d            n# 1 swxY w Y   d |                                D              _         j                            d          }|	                    d          5 }t                               j        |dd           d d d            d S # 1 swxY w Y   d S )Nc                     | d         }|j         v rd S || d         | d         | d         |                     di                               d          ||k    d}|j         |<   d S )Nr   r  r  titler   position)r   r  r  r  r  r   is_homepage)all_content_metarG   )content	parent_idr   content_metahomepage_idr%   s       r   add_contentzAConfluenceAPIImport._build_content_hierarchy.<locals>.add_content  s     JT222 !!(+ )#KKb99==jII#)[8 L 1=D!*---r   r   r   r   r  archivedarchiveroot   r   trash)r  trashedall_content_meta.jsonr  Fr  r  r  c                 4    i | ]\  }}|t          |          S r   )r   r   rV  rW  s      r   r   z@ConfluenceAPIImport._build_content_hierarchy.<locals>.<dictcomp>  s$    "U"U"U$!Q1d1gg"U"U"Ur   parent_to_children.json)r  r  rG   	enumerater  r  r  r   r   r	  r
  r  r_  parent_to_children)r%   r   r  r  r  r  r   r   iancestorancestor_parent_iddirect_parent_idstatus_to_parentall_content_filer  parent_to_children_files   ` `             r   _build_content_hierarchyz,ConfluenceAPIImport._build_content_hierarchy  s$    "	= 	= 	= 	= 	= 	=   229== 	3 	3G JK44I  )33 : :8666=h6G:6U6U[a&&)21q5)9$)?&"--.@#%%HHLLXVZ^\\\H&89999  S#,R=#6   !*&$ $  $4#7#78I6#R#R ))*:CEEBBFFzRRRK!12222  +445LMM""3'' 	N1IId+QU1IMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N #V"U:L:R:R:T:T"U"U"U"&"2";";<U"V"V$))#.. 	P!IId-quQIOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps$   0$F  F$'F$=$H..H25H2c           	         g g g g dddd}| j                                         D ]\  }}|                    d          }|                    d          }|dk    rP|d                             |           |                    d          d	k    r|d
                             |           nC|dk    r|d                             |           n!|dk    r|d                             |           |dk    r|d         dxx         dz  cc<   |dk    r|d         dxx         dz  cc<   t	          | j                   }| j        j                            | j         d           | j        j                            dt	          |d                    dt	          |d
                    d           | j        j                            dt	          |d                               | j        j                            dt	          |d                               | j        j                            d| d|d         d          d|d         d          d           |S )Nr   )pagesfolders)root_idscurrent_idsarchived_idstrashed_idstotalsr  r  r  r  r   r  r  r  r	  r  r
  r1   r  r  r  r2   r  u'    Статистика контента:u       Текущий: u   , из них u    - корневойu       В архиве: u       В корзине: u,       Всего (страниц/папок):  (r+  ))	r  r_  rG   r   lenr4   rh   r   	log_space)r%   statsr   r  r  content_typetotals          r   _calculate_content_statsz,ConfluenceAPIImport._calculate_content_stats	  s    	
 	
 $(#8#>#>#@#@ 	0 	0J[[**F";;v..L""m$++J777;;x((F22*%,,Z888:%%n%,,Z88889$$m$++J777v%%h(((A-(((x''h	***a/***D)**##t~$^$^$^___##w3u]';#<#<wwCPUV`PaLbLbwww	
 	
 	
 	##$XCn@U<V<V$X$XYYY##$Yc%BV>W>W$Y$YZZZ##I5 I Ih(I I+0?9+EI I I	
 	
 	

 r   c                    | j                             || j                  }| j        j                            | j         d           |                     |           t          |          |d<   | j	        
                    d          }|                    d          5 }t                              ||           d d d            n# 1 swxY w Y   |                     | j         d          5  |                    di                               d          }|                     ||           d d d            n# 1 swxY w Y   | j        st%          d	          |                                 }|d
         |d<   |d         |d<   |                    d          5 }t                              ||           d d d            n# 1 swxY w Y   |S )NrQ  u8    Дамп прав доступа (Разрешения)r;  r  r  u?    Получение структуры пространстваhomepager   uP   Пустой проект или возможно нет прав доступаr  
root_pagesr	  archived_pages)r3   	get_spacer   r4   rh   r   r  r  r   r   r   r	  r
  r  r   rG   r  r  CmfErrorr  )r%   r   r   r   r  r  r  content_statss           r   _dump_spacezConfluenceAPIImport._dump_space6  s~   )))D<M)NN##t~$o$o$oppp$$Y///K((f$--k::	^^C   	 AIIeQ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ZZ4>jjjkk 	B 	B))J3377==K)))[AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B $ 	omnnn5577+J7l"/"?^^C   	 AIIeQ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  s7   CCC/A D;;D?D?GG
G	new_userscontent_dirc                 <    |                     d          }	 |                    d          5 }t                              |          }d d d            n# 1 swxY w Y   n# t          $ r g }Y nw xY w fd|D             }|D ]M}|s|d         dk    r| j                 }||vr*|                    |           |                    |           N|                    d          5 }t                              ||dd	           d d d            d S # 1 swxY w Y   d S )
NrY  r  c                 *    h | ]}|j                  S r   )r=   )r   r   r%   s     r   r  z<ConfluenceAPIImport._append_content_users.<locals>.<setcomp>[  s     LLLTT$-0LLLr   r  r  r  r  Fr  )	r   r	  r
  r   FileNotFoundErrorr=   r  r   r  )	r%   r  r  r  r  existing_usersexisting_user_idsnew_usernew_user_ids	   `        r   _append_content_usersz)ConfluenceAPIImport._append_content_usersR  s    )),77
	 %% .!%1. . . . . . . . . . . . . . .  	  	  	 NNN	  MLLL^LLL! 	0 	0H ;.."4=1K"333!%%k222%%h///__S!! 	GQIInaIFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GsF   A  AA  AA  AA   A/.A/%DDDc                 t    t          j        |                    d                                                    S )Nzutf-8)hashlibsha256encode	hexdigest)r%   	body_datas     r   _get_body_hashz"ConfluenceAPIImport._get_body_hashj  s,    ~i..w7788BBDDDr   c                 0
   |d         }| j         j                            d| d           |                    d          }	 t	          |d          5 }t
                              |          }d d d            n# 1 swxY w Y   |d         d         d         }|                    d	          }	|d
                             d          }
|                    d          pd}n# t          $ r d }d }	d }
d}Y nw xY wg }|	                    |d                             d                     |	                    |d                             di                               d                     |	                    |d                             d                     t          |d                                                   d d         }|D ].}|d         d         d         D ]}|	                    |           /|                     ||           |d         dk    r|                    d          }|                    d           |d         d         }|                    di                               d          rd}njd}|d         }|                    d          }|                    d           5 }t
                              ||d!d"           d d d            n# 1 swxY w Y   |                    d#d          r| j                            ||f           |d         d$                             d#d          r| j                            |           n*|                    d%          }|                    d&           |                     |d
         d'         d(                   }|
r$|	|k    r|d
                             d|
i           n"| j                            ||d)         f           |                    d*          }||d         d         d         k    }|dk    o | j        |k    o| j        |k    p
| j        dk    }|                                r|s|rA|d         d         d+         }| j                            ||f           | j        r
| j        |d<   t3          |          |d,<   |                    d           5 }t
                              ||d!d"           d d d            n# 1 swxY w Y   | j                             d-           d S ).Nr   [ID:u   ] Дамп метаданныхr  r  historylastUpdatedwhen	body_hashr   viewlast_versions_countr   	createdBybyownedByr   r   r   r   r  r1   attachmentsTr~   r   r}  _linksnextFattachments.jsonr  r  r  sizer|  comments.jsonrU  storager#   r  versionsnumberr;  document)r4   rh   r   r   r	  r
  r   rG   r   r   r   r   r%  r   r  content_attachments_queueputcontent_comments_queue
write_textr,  r   content_rendered_queuerm   r   content_versions_queuer   inc_stat)r%   r   r   r   r   r  r  current_datacurrent_last_updatedcurrent_body_hashcurrent_body_viewcurrent_last_versions_countrf  r   r   r   r  r8  	skip_dumpattachments_dataattachments_filecomments_filenew_body_hashversions_dirhas_updatedversions_config_changedcurrent_versions                              r   _dump_content_basicz'ConfluenceAPIImport._dump_content_basicm  s@   !$'
##$V:$V$V$VWWW&&{33		,i%% ,#yy||, , , , , , , , , , , , , , ,#/	#:=#I&#Q  , 0 0 = = ,V 4 8 8 @ @*6*:*:;P*Q*Q*VUV'' 	, 	, 	,#'  $ $*+'''		, \),00==>>>\),00CCGGMMNNN\),00;;<<< L8??AABB3B3G' 	# 	#K#N3F;IF # #T""""# 	""5)4446))'00??O!!4!000
 'z2<@Kx,,0088 Q!		 	#.y#9 #,#5#56H#I#I %**3// Q1II.!%IPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Qvq)) L.22J	3JKKK J'	266vqAA -+//
;;;; ) 2 2? C C((,,,
 !//V0DY0OPW0XYYM  V%6-%G%GV$++V5F,GHHHH+//\(=S0TUUU %--j99L.,y2I-2XY_2``K+r1 15PP 14OO ;4: $  &&(( XK X;R X".y"9-"H"R+//_0MNNN0 X:>:WL!67"9~~V^^C   	EAIIlAaeIDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	  ,,,,,s[   C  A9-C  9A==C   A=AC   C54C54KK#&K#S11S58S5r  r_   c                 v   t          d          5  	 | j                                        rns| j        5  | j        }| xj        |z  c_        ddd           n# 1 swxY w Y   	 | j        j                            | j         d| d| d|            | j        	                    ||||| j
                  }|sn|D ]}	 |                     |d	                   5 \  }}|                     |||           ddd           n# 1 swxY w Y   Q# t          $ r3}	| j                            d
|d	          d|	 dd           Y d}	~	d}	~	ww xY wnP# t          $ rC}	| j                            | j         d| d| d| j
         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 )u4   Получение контента пакетамиFinit_views_and_dsTNuB    Дамп метаданных пакета страниц: start=z, limit=z	, status=)r   r  r  rR  r   r.  =   ] Не удалось получить метаданные. ERR-0025r  
error_coder  u^    Не удалось получить метаданные пакета страниц: start=z	, expand=r   r/   r^  r  r  )r	   r4   	is_cancel
start_lock_startrh   r   r  r3   r  r   r   rW  r   r  )
r%   r   r  r  r   contentsr  r   r   r  s
             r   _dump_content_basic_batchz-ConfluenceAPIImport._dump_content_basic_batch  s   5111 ,	 ,	+?,,.. _ ) ) KEKK5(KK) ) ) ) ) ) ) ) ) ) ) ) ) ) )#O*//> I I!&I I05I I@FI I    $GG!##%#7  H    H $ #+ 	 	!%!7!7!F!F XJ`9V_ $ 8 8)Y W W WX X X X X X X X X X X X X X X(    O55 xwt} x xsv x x+5+1 6        		 ! 
 
 
O--> ! !!&! !05! !"&":! !EK! ! ! ! $.!.#) .    EEEE
C+,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	 ,	s   $F.AF.A	F. A	!F.%AE:F.;E DD6DDD	D
DE
E)EEEEF.
F9FF.FF..F25F2c                 <   t          d          5  | j                                        sX| j                                        rn=	 |                    d          }nD# t          j        $ r2 |                                r| j                                        rY nY w xY w|d         }	 | j	        
                    || j        |d                   }|                     |          5 \  }}|                     |||           ddd           n# 1 swxY w Y   n:# t          $ r-}| j                            d	| d
| dd           Y d}~nd}~ww xY w|                                 | j                                        Xddd           dS # 1 swxY w Y   dS )u5   Получение контента по одномуFrY        ?timeoutr   r  rR  r  Nr.  r[  r\  r  r]  )r	   
stop_eventis_setr4   r`  rG   queuer   emptyr3   get_page_by_idr   r   rW  r   r  	task_done)r%   content_queuer  r   r   r   r   r  s           r   _dump_content_basic_singlez.ConfluenceAPIImport._dump_content_basic_single  s   5111 	* 	*o,,.. *?,,.. #0#4#4S#4#A#ALL{   $**,, 1G1G1I1I H
 *$/
#'?#A#A"#7+H5 $B $ $L
 //
;; U?U	900y)TTTU U U U U U U U U U U U U U U    O--mzmmhkmm#-#) .         '')))9 o,,.. *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   6FAF<B FB  F,=D)DDD	DD	DF
E&#E	FE1FFFTc                     |r4| j         t          j        k    r|                     ||| j                   d S |                     |           d S )N)r   r  r  )rg   r   r'   rd  rj   rq  )r%   rp  all_contentr   r  s        r   _dump_content_basic_workerz.ConfluenceAPIImport._dump_content_basic_worker  si      	;4>[->>>**#o +      ++M:::::r   c                    	 | j          d| }|                    d          }|                    d          }|D ]}|d         }	|d         }
| j        j        r
d| d|	 d}n|d         d	         }|d
|v rdnd
dz   z  }| j                            | j        j        |          }d|v r|d         d         }n.t          j        d|          }|r|                    d          nd}| d|	 }t          j
                            || j         g d          }|s't          
                    || j         | j                  }|
|_        ||_        |                    |	 d|           |_        |j        s,|                    |	 d|                                           s"d|_        ||_        |                                 t+                       d S # t,          $ r/}| j                            d| d| ddd           Y d }~d S d }~ww xY w)Nr   r8  r   r  zrest/api/content/z/child/attachment/z	/downloadr9  downloadr,  &zdownload=truer   r@  z[?&]version=(\d+)r  )r   r  r;  )r-  rA   r   )r-  rA   r4   r  Fr.  uf   ] Ошибка при планировании задач на скачивание вложений. r\  r  T)r^  r  rollback)rA   r   r3   r<   
url_joinerr'  r5  r6  r   rE   rA  rG   r4   r   r  r;  r   r   rB  import_raw_jsonr   rC  r   r  )r%   r   rO  r   r   content_ext_idattachments_clean_dirattachments_dirty_dirattatt_idrL  download_linkdownload_urlr   
att_ext_idrM  r  s                    r   _schedule_download_jobsz+ConfluenceAPIImport._schedule_download_jobs(  s   6	 $ 0@@J@@N$-$6$6}$E$E!$-$6$6}$E$E!' '( '(TL	?( ^$g
$g$gV\$g$g$gMM$'M*$=M!SM-A-Accso%]]M#99$/:M}]]##!)nX6GG i(<mLLG29@gmmA...qG .::&::
%7;;) $ 0333  <    
 $ #)#;#;#-$($4#'? $< $ $L
 %.!$0!$9$B$BfCXCXwCXCX$Y$Y! !+(099V:O:Og:O:OPPWWYY( /4L+36L0 %%'''LLLLL 	 	 	O%% Oz  O  O  JM  O  O%!	 &         	s   GG 
H$HHc           	         t          d          5  | j                                        s,| j                                        rn	 |                    d          \  }}nE# t          j        $ r3 |                                r| j                                        rY nY w xY wd| d}| j        j	        
                    | d           |                     |          5 \  }}	 |                    d          }|rH|                    d	          5 }t                              |          }	d d d            n# 1 swxY w Y   nwd
 | j                            || j        d          D             }	|                    d          5 }t                              |	|dd           d d d            n# 1 swxY w Y   n;# t(          $ r.}
| j                            | d|
 dd           g }	Y d }
~
nd }
~
ww xY w|                     ||	||           d d d            n# 1 swxY w Y   |                                 | j                                        ,d d d            d S # 1 swxY w Y   d S )NFrY  rf  rg  r.  ]u    Дамп вложенийr;  r  c                     g | ]}|S r   r   )r   r~  s     r   r  zHConfluenceAPIImport._dump_content_attachments_worker.<locals>.<listcomp>{  s%     + + +(++ + +r   r   r  r  r  r  uM    Не удалось получить метаданные вложений. r\  r  r]  )r	   rj  rk  r4   r`  rG   rl  r   rm  rh   r   r   r   r	  r
  r   r3   get_all_attachmentrk   r  r   r  r  ro  )r%   rp  r   rN  log_contentr   r   rP  r  r8  r  s              r    _dump_content_attachments_workerz4ConfluenceAPIImport._dump_content_attachments_workera  s   5111 -	* -	*o,,.. ,*?,,.. ,9,=,=c,=,J,J)J		{   $**,, 1G1G1I1I H
 3Z222&++{,V,V,VWWW++J77 `;QIy)+4+=+=>P+Q+Q($ X!1!6!6s!;!; ;q.2iill; ; ; ; ; ; ; ; ; ; ; ; ; ; ;+ +/3/Q/Q$.*.*?+4 0R 0" 0"+ + +K "2!6!6s!;!; Xq $		+qQV	 W W WX X X X X X X X X X X X X X X$ ) ) )11*~~y|~~'1'- 2   
 ')) 00[)U^___7` ` ` ` ` ` ` ` ` ` ` ` ` ` `: '')))Y o,,.. ,*-	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	* -	*s   6I%A"!I%"<B$I%#B$$A I%$H),G D<0G <E  G E AG 	F4(G 4F88G ;F8<G ?H 
G8
$G3.H3G88HI%H#	#I%&H#	'1I%%I),I)c           	         t          d          5  | j                                        s%| j                                        rn
	 |                    d          }nE# t          j        $ r3 |                                r| j                                        rY nY w xY wd| d}| j        j	        
                    | d           	 d | j                            || j        | j        d	          D             }g }g }|                                D ]}|d
         s|                    |           n9|d
         d         d         }||v r!||         d                             |           |                    |d                             d                     |                    |d                             di                               d                     |                    |d                             d                     | j                            d           |                     |          5 \  }	}
|
                    d          }|                    d          5 }|D ]2}|                    t,                              |          dz              3	 d d d            n# 1 swxY w Y   |                     ||
           d d d            n# 1 swxY w Y   n9# t2          $ r,}| j                            | d| dd           Y d }~nd }~ww xY w|                                 | j                                        %d d d            d S # 1 swxY w Y   d S )NFrY  rf  rg  r.  r  u"    Дамп комментариевc                 8    i | ]}|d          dk    |d         |S )r  r  r   r   )r   r|  s     r   r   zEConfluenceAPIImport._dump_content_comments_worker.<locals>.<dictcomp>  s<     	  	  	 3: #8,	99  w :99r   )r  rR  r   r   r   r   r   r/  r5  r0  r6  r7  r|  r=  r  r  u>    Не удалось получить комментарии. r\  r  r]  )r	   rj  rk  r4   r`  rG   rl  r   rm  rh   r   r3   get_page_commentsrl   r   r   r   rH  r   r   r	  r   r
  r  r%  r   r  ro  )r%   rp  r   r  commentsrf  rootsr|  r  r   r   rQ  r  r  s                 r   _dump_content_comments_workerz1ConfluenceAPIImport._dump_content_comments_worker  s   5111 ;	* ;	*o,,.. :*?,,.. !.!2!23!2!?!?JJ{   $**,, 1G1G1I1I H
 3Z222&++{,^,^,^___)	  	 99&"&"4#'#6%*	 :  	  	  	 H EE#+??#4#4 < <&{3 P!LL1111(/(<R(@(FI(H44 ( 3J ? F Fw O O OWY%7%;%;K%H%HIIIWY%7%;%;M2%N%N%R%RSW%X%XYYYWY%7%;%;I%F%FGGG00;;;;//
;; E?U	9(1(:(:?(K(K*//44 D+0 D D !

7(;(;d(B C C C CDD D D D D D D D D D D D D D D 225)DDDE E E E E E E E E E E E E E E !   O--&kkfikk#-#) .         '')))u o,,.. :*;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	* ;	*s   6MAM<B!M B!!+ME3K* .K.6J1%K1J55K8J59KK*K"	"K*%K"	&K*)M*
L 4"LML  1MM"%M"c           	      ,   t          d          5  | j                                        sP| j                                        rn5	 |                    d          \  }}nE# t          j        $ r3 |                                r| j                                        rY nY w xY wd| d}| j        j	        
                    | d           	 |                     |          5 \  }}|                    d          }t          |d	          5 }t                              |          }	d d d            n# 1 swxY w Y   | j                            |d
|          }
|	d                             d|
d         d         i           |                     |	d         d         d                   }||	d<   |                    d          5 }t                              |	|dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n9# t*          $ r,}| j                            | d| dd           Y d }~nd }~ww xY w|                                 | j                                        Pd d d            d S # 1 swxY w Y   d S )NFrY  rf  rg  r.  r  u=    Дамп отрендеренного содержимогоr  r  r   ri  r   r3  r>  r#   r2  r  r  r  uW    Не удалось получить отрендеренное содержимое. r\  r  r]  )r	   rj  rk  r4   r`  rG   rl  r   rm  rh   r   r   r   r	  r
  r   r3   rn  r   r,  r  r   r  ro  )r%   rp  r   content_statusr  r   r   r  r  rI  new_datar2  r  s                r   _dump_content_rendered_workerz1ConfluenceAPIImport._dump_content_rendered_worker  s   5111 *	* *	*o,,.. )*?,,.. 1>1B1B31B1O1O.J{   $**,, 1G1G1I1I H
 3Z222&++{,y,y,yzzz//
;; U?U	9$-$6$6{$C$C	!)S11 8Q+/99Q<<L8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 $(?#A#A&#.#1 $B $ $
 %V,33VXf=Mf=U4VWWW %)$7$7V8LY8WX_8`$a$a	4=[1&^^C00 UA IIlAaeITTTU U U U U U U U U U U U U U U!U U U U U U U U U U U U U U U$ !   O--&  E  E  @C  E  E#-#) .         '')))S o,,.. )**	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	* *	*s   6J	A"!J	"<B$J	#B$$+J	H%)H	D5)H	5D99H	<D9=B
H	G2&H	2G66H	9G6:H	=H	H	HH	HJ	
I"IJ	I1J		JJc           
         t          d          5  | j                                        s| j                                        rn	 |                    d          \  }}nE# t          j        $ r3 |                                r| j                                        rY n1Y w xY wd| d}| j        j	        
                    | d           g }|                     |          5 \  }}|                    d          }|                    d	
           |                    d          }	|	                                rt          j        |	           |	                                 | j                            ||| j        | j                  D ]}
t-          |
t.                    r$| j                            | d|
 ddd           ;|	                    d|
d         dd          }|                    d          5 }t4                              |
|dd           d d d            n# 1 swxY w Y   |                    |
                    d                     | j                            d           |                     ||           d d d            n# 1 swxY w Y   |                                 | j                                        d d d            d S # 1 swxY w Y   d S )NFrY  rf  rg  r.  r  u:    Дамп версий (история изменений)zversions.jsonT)
missing_okr?  )rV  rR  last_versionsu&    Не удалось получить zERR-0038r/   r  r_  version_r@  03dr  r  r  r  r6  r   ) r	   rj  rk  r4   r`  rG   rl  r   rm  rh   r   r   r   r  r   shutilrmtreer   r3   get_page_versionsr   rm   
isinstancer   r  r	  r
  r  r   rH  r%  ro  )r%   rp  r   rV  r  rf  r   r   versions_filerS  page_versionversion_filer  s                r   _dump_content_versions_workerz1ConfluenceAPIImport._dump_content_versions_worker  s   5111 6	* 6	*o,,.. 5*?,,.. 2?2C2CC2C2P2P/J{   $**,, 1G1G1I1I H
 3Z222&++{,v,v,vwww++J77 "A;QIy %.$6$6$G$GM!((D(999#,#5#5j#A#AL#**,, 4l333 &&((((,(I(I"(7#7&*&C	 )J ) ) < < &lI>> % O55#. d dVb d d+5)6+1	 6    %'3'<'<=iU]H^=i=i=i=i'j'j)..s33 Uq IIlAERSITTTU U U U U U U U U U U U U U U \%5%5d%;%;<<<00;;;;..ui@@@E"A "A "A "A "A "A "A "A "A "A "A "A "A "A "AH '')))k o,,.. 5*6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	* 6	*s   6KA"!K"<B$K#B$$AK&DJ>H)	J)H--J0H-1AJKJ	K J	!1KK#&K#c                    d| _         g }t          | j                  D ]C}t          j        ||f|          }|                                 |                    |           D|                                 | j        	                                 |D ]}|                                 | j        
                                 d S )Nr   )targetargskwargs)rb  rangere   rP   Threadr   r   r   rj  r  clear)r%   r  rp  r  threadsr  threads          r   _run_dump_stagez#ConfluenceAPIImport._run_dump_stage5  s    t011 	# 	#A%#%  F
 LLNNNNN6"""" 	 	FKKMMMMr   c                    | j         j                            | j         d|d         rdnd d           t	          j                    | _        t	          j                    | _        t          j
                    }t          j
                    }t          j
                    }t          j
                    | _        t          j
                    | _        t          j
                    | _        t          j
                    | _        |d         r]| j        t           j        k    rH| j                                        D ]-}|d         dk    r|d         d	v r|                    |           .n[|d
         D ]R}| j        |         }|d         dk    r|                    |           1|d         dk    r|                    |           Sd| j        ||d         |dddd| j        ||d         |dd| j        j        dd| j        || j        j        dd| j        | j        dd| j        | j        dd| j        | j        dd| j        | j        | j        dg}|D ]}	| j                                         r d S |	                    dd          s5|                      | j         d|	d                    5  | !                    |	d         |	d         |	                    d                     d d d            n# 1 swxY w Y   d S ) Nu
    Дамп allu
   всегоu!   только выбранногоu    контентаr  r2   r  )r  r  idsr  r  u.   Дамп метаданных контента)rs  r   r  )r   r  rl  target_kwargsu@   Дамп метаданных контента (в архиве))r   r  rl  r  run_ifu(   Дамп метаданных папок)r   r  rl  r  u*   Дамп вложений контента)r   r  rl  u2   Дамп комментариев контентаuM   Дамп отрендеренного содержимого контентаuJ   Дамп версий контента (история изменений)r  T r   r  rl  r  )"r4   rh   ri   r  rP   Lockra  Eventrj  rl  QueuerB  rD  rG  rF  rg   r   r'   r  r   rC  rt  r3   r<   rq  r  r  r  r  ro   r`  rG   r   r  )
r%   r   selected_contentselected_current_content_queueselected_archived_content_queuefolders_queuer  r   pipelinestages
             r   _dump_space_contentsz(ConfluenceAPIImport._dump_space_contentsJ  s   &&~ s s/6_||<_s s s	
 	
 	

 $.**#/++).&*/+--' ).&&+kmm#&+kmm#&+kmm#E" 	Ft~9J'J'J $ 5 < < > > 4 4 (H44$X.2III!%%l3334 /u5 F F
#4Z@)Y66266|DDDD!(+z99377EEE I97#3E#:!*'" "		 	 [98#3E#:!*(" "
 //
 
 C9&//	  E?7  M<4  h<4  e<4,	 c7
r  	 	E((** 99Xt,, t~??f??@@  $$(O'NIIo..                	 	s   (7K++K/	2K/	c                     g dddt           f fd|                    d          sGg |d<   dD ]?} j                            |g           D ]!}|d                             |dg d           "@|                    dg           D ]_}|d         rPd	|d
         vr!d                             |d
                    d                              |                     Zdd<   `S )NT)r  r  r  c                 p   |                      dd          sdd<   g S g }|                      d          s.d j                             | d         g           D             | d<   | d         D ]I}|d         r:|                     |                     |                    |d                    Ddd<   J|S )N	isCheckedTFr  r   c                     g | ]}|d g d	S )Tr   r  r   r   )r   child_ids     r   r  zUConfluenceAPIImport._collect_selected_content.<locals>._walk_tree.<locals>.<listcomp>  s2     ' ' '  $$BGG' ' 'r   r   )rG   r  extendr   )r  children_idschild
_walk_treer  r%   s      r   r  zAConfluenceAPIImport._collect_selected_content.<locals>._walk_tree  s    ;;{D11 */ '	L;;z** ' '$($;$?$?r$R$R' ' '
#
 !, 4 4% 4 ''

5(9(9::: ''d4444.3$U++r   r   )r  r  r  r  _archived_pagesr   r  Fr  )dictrG   r  r   r  )r%   r   r  r   root_contentr  r  s   `    @@r   _collect_selected_contentz-ConfluenceAPIImport._collect_selected_content  sf   
 

	  	  	  	  	  	  	  	  	 , yy$$ 	 "E*0  	"&"9"="=i"L"L  J*%,,(%)$&. .     "IIj"55 	0 	0LK( 0$L,>>>$U+22<3EFFF '..zz,/G/GHHHH*/ ''r   c                    | j                             d          | _        | j                            d           | j                                        D ]}|                                r|j                            d          r1|j        }|| j	        vrR|
                    |                    d                     | j        j                            | j         d| d           | j                            dg           D ]}| j        j                            | j         d	| d
           | j                            |          }|                    d          }|                    d          }|                    d          }|                                r|
                    |           |                                r|
                    |           |                                r|
                    |           |D ]}| j                            |          }dD ]B}|                    |          }	|	                                r|	
                    |            nC|                    d           | j	                            |          }
|                    d          }|                    t(                              |
dd                     d S )N	documentsTr~   r+   r.   u    Контент ID:u    был полностью удален, либо перемещен в другое пространство. Каталог помечен '.remote'r  u    Контент ID uN    удален в корзину. Он не будет импортированr,   r-   )r,   r-   r.   r  Fr  )r   r   r   r   r  r  r   r  stemr  r   r   r4   rh   ri   r  r  rG   r   rE  r
  r  )r%   selected_idsr  r   r   r   trashed_dir
remote_dirsuffixold_dirr  	meta_files               r   _prepare_selected_content_dirsz2ConfluenceAPIImport._prepare_selected_content_dirs  s%    ,55kBB...  ,4466 		 		K%%'' ;+;+D+DW+M+M $)J!666##K$;$;I$F$FGGG&..~ E E* E E E   155grBB 	0 	0JO"**> A Aj A A A   )22:>>I!--h77I#//
;;K"..y99J!! 0!!+....!!## 0!!+....""$$ 0"";/// ' 	Y 	YJ)22:>>I; / /#//77>>## OOI...E ...  044Z@@L!**733I  LQV!W!WXXXX	Y 	Yr   c           	         | j         D ]T}| j                                        r d S |d         }|d         }|                    d          p|d         }d| d| d| _        	 | j        j                            | j         d| d	           |                     |          5 }|                     ||           d d d            n# 1 swxY w Y   | 	                    |          }||d
<   | 
                    | j         d          5  |                     |d                    d d d            n# 1 swxY w Y   | 
                    | j         d          5  |                     ||           d d d            n# 1 swxY w Y   | 
                    | j         d          5  |                                  d d d            n# 1 swxY w Y   | j                            d          }|                    t"                              |dd                     # t&          $ r7}| j                            | j         d| d| dddd           Y d }~Nd }~ww xY wd S )Nr   rF  original_namer   
[SPACE ID: KEY:r  u$    Дамп пространства 'rZ   r  uK    Подготовка каталогов для дампа контентаr  u    Дамп контентаuH    Агрегация пользователей из документовr+   r  Fr  u3    Ошибка дампа пространства ''. zERR-0026r  r  T)r^  r  r  rx  )selected_spacesr4   r`  rG   r  rh   r   r   r  r  r   r  r  r  r   r   rE  r
  r  r   r  )	r%   
space_metaspace_idr   
space_namer   r  r  r  s	            r   _dump_spacesz ConfluenceAPIImport._dump_spaces  s   . %	 %	J((** !$'H"5)I#88NJv<NJE(EEEEEDN&++t~,p,pcm,p,p,pqqq++I66 =+$$Y<<<= = = = = = = = = = = = = = = $(#A#A*#M#M 1A
-.ZZ4> ~ ~ ~ Q Q778H8OPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q ZZ4> M M MNN K K--i9IJJJK K K K K K K K K K K K K K K ZZ4> { { {|| * *'')))* * * * * * * * * * * * * * * !,55g>>	$$TZZ
1SXZ%Y%YZZZZ   ))~nnZdnnilnn))%! *        =%	 %	s   #?H"C9HC			HC		:HD/#H/D3	3H6D3	7 HE:.H:E>	>HE>	 H"G7HG	H
G	AH
I$,IIc                    | j         j        j                            dd          rA| j         j                            d           |                     | j        j        d           d S | j         	                    dt          j                   d S )N
load_usersTu#   Дамп пользователейrf  u4   Дамп пользователей отключёнrx   )r4   rC   r#   rG   rh   r   r  r3   get_all_usersr;   rt   WARNINGr$   s    r   _dump_userszConfluenceAPIImport._dump_usersG  s    ?(.22<FF 	oO"''(MNNNdo;WEEEEEO V^e^mnnnnnr   c                 P   | j                             d          }|                                rd S |                    d           | j                                        D ]D}| j        j        rt          |d                   }n=t          |d                                       dd                              dd          }|                    |          }|                    d           |                    d	          }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             }
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   Fd S )Nr  Tr~   r   r   r  r  r+  r  r  rf  r  )r?   r   r   r   r3   get_all_groupsr<   r   r   r	  r
  r  get_group_membersr=   )r%   
groups_dirr   r   	group_dir	data_filer  	users_dirall_users_dirr   user_data_files              r   _dump_groupsz ConfluenceAPIImport._dump_groupsN  s/   '00::
 	F$'''_3355 	' 	'E$ PU4[))U6]++33C==EEc3OO"++F33IOOTO***!**;77Ii&& $!		%###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $!**733I .77@@MOOTO***...99%-HH ' '!*!3!3D4G4O!P!P.$// '1IIdA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '!.!7!7T]8KG8S!T!T!((** .$// '1IIdA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ''	' 	's6   D::D>	D>	5HH!$H!0JJJc                 L    | j                                         | _        | j        S r!   )r3   get_system_infor  r$   s    r   _get_system_infoz$ConfluenceAPIImport._get_system_infok  s!    ?::<<r   c                     | j                             d          }t          |d          5 }t                              ||dd           d d d            d S # 1 swxY w Y   d S )Nzsystem_info.jsonr  r  Fr  )r?   r   r	  r
  r  )r%   r   system_info_filer  s       r   _save_system_infoz%ConfluenceAPIImport._save_system_infoo  s    -667IJJ"C(( 	=AIIdAaeI<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   AAAc           	      X   | j         j                            d           |                    dd          rdnd}| j         j                            d| d|                    dd	                      | j         j                            d
|                    dd	           d           d S )Nu-   Сведения о системе ConfluenceisCloudFCloudServerz    Confluence r  r   Unknownz    Confluence URL 'r'  rZ   )r4   rh   r   rG   )r%   r   confluence_types      r   _log_system_infoz$ConfluenceAPIImport._log_system_infot  s    ##$STTT%)XXi%?%?M''X##PoPPI0N0NPP	
 	
 	
 	##@488E9#=#=@@@	
 	
 	
 	
 	
r   c                     |                                  }|                     |           |                     |           d S r!   )r  r  r  )r%   r   s     r   _collect_system_infoz(ConfluenceAPIImport._collect_system_info  sA    $$&&t$$$d#####r   c           
         | j         d         d         d         }|d         st          d          |                    dg           }|rUg | _        |D ]J}|d         s|d                                         }|d         |d<   | j                            |           Kn+t          | j                                                  | _        | j	        j
                            dt          | j                              | j        D ]T}|                    d	          p|d
         }| j	        j
                            d|d          d|d          d| d           Ud S )Nr   r#   r   r  u>   Не выбрано ни одного пространстваr   r  u=   Для импорта выбрано пространств: r  r   z    [SPACE ID:r   r  rF  z] 'rZ   )rD   r   rG   r  copyr   r   r3   get_all_spacesr4   rh   r   r  )r%   
all_spacesr   r   
space_datar  s         r   _collect_selected_spacesz,ConfluenceAPIImport._collect_selected_spaces  s   ]#45g>qA
+& 	^\]]]>>*b11 
	J#%D ! 8 8[) "5\..00
).z):
:&$++J77778 $((F(F(H(H#I#ID ##$dghlh|d}d}$$  	A  	A  	A) 	 	E?33DuV}JO"''QtQQ5<QQJQQQ   	 	r   c                     |                      d          5  |                                  |                                  |                                  d d d            d S # 1 swxY w Y   d S )Nu0   Скачивание данных через API)r   r  r  r  r$   s    r   download_dataz!ConfluenceAPIImport.download_data  s    ZZJKK 	  	 !!!		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   =A  A$'A$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           nG# t0          $ r:}| j                            |
 d| d| d| ddd|d           |d	z  }Y d }~nd }~ww xY w|                    |           d d d            d S # 1 swxY w Y   d S ) Nr   FrY  TDONE)r   r  r;  r-  rz  r   r   r   r  u   [Страница ID: z] rU  rZ   r   fileSizei   r  .2fz MB)u   Скачивание : 'rg  u	   Файл u    сохранен в 'r}  u"   Ошибка скачивания r  zERR-0027rA  r  )r^  r  r  ext_hrefrx  )r	   r4   r`  rG   rE   rA  r   r   r  r;  r-  r=  r  rz  rh   r   r3   download_filerd   IMPORT_DOWNLOAD_TIMEOUTrB  r   rC  rH  r   r  rC  )r%   download_queue
done_queueerrorsdownload_job_iddownload_objrL  file_urlr  ext_id_splitpage_id_msg	file_sizefile_size_mbr  s                 r   _download_file_workerz)ConfluenceAPIImport._download_file_worker  s7   5111 :	# :	#6 ?,,.. "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,,\::::  	  	  	 O--&jj)jjX`jjehjj#-!4#)!)!% .    aKFFFFFF	 [6 p NN6"""u:	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	# :	#s=   D6I
BGI
H!'0HIH!!IIIc                 ,   t          j                    }t          j                    }d}| j                            dg           dd| j        gg dg dg}| j                            d          }d}g }| j        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 ]o}t%          j        | j        d| ||d          }|                    |           |                                 | j        j                            d|            p|D ]A}t          j                            |dg          D ]}|                    |j                   Bt3                       |D ]}|                    d           |                                s|D ]}|                                 | j                                        r| j        j                            d           |                                s+||                                z  }|                                +| j        j                            d|            d S )Nr   zplugin.plugin.source_hashrA   r   )rB  r   F)r   r   all_attachments.zipr}   rF  r+  r;  r   r   r   uC   Отсутствуют вложения для скачиванияu'   Скачивание вложений: r  )r  r  r  r   r  u    Запустили задачу --r   r   r  u   Импорт прерванuC   Закончили скачивание файлов, ошибок )rl  r  r4   load_fieldsrA   r?   r   r  r   r  rE   rA  countr   rh   r   r  re   rP   r  r  r   slistrC  r   rC  rm  r   r`  ri   rG   )r%   r  r  
has_errorsmain_filterprojects_pathattachment_countfiltersr   project_pathpath_filterdownload_countprocsr  procfilter_rM  s                    r   download_filesz"ConfluenceAPIImport.download_files  sw   []]

##%@$ABBB D$"23'''111	
 *33J??) 	: 	:E(11%,??L|$$--c22 7"<0036"F|,>,>,>?@K#5;;;Q\C\;]]N : N2 {[8999 	fO"''(mnnnO"''(dRb(d(deeet011 	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&&&&##%% 	  		?$$&& 	JO"**+HIII""$$ 	+*..***J ""$$ 	+##$vjt$v$vwwwwwr   c              #      K   | j                             |d          }|                    d          5 }|D ]}t                              |          V  	 d d d            d S # 1 swxY w Y   d S )Nr=  r  )r   r   r	  r
  r  )r%   r   rQ  r  r  s        r   _get_content_commentsz)ConfluenceAPIImport._get_content_comments!  s      )22:OO$$ 	& & &jjoo%%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   "A##A'*A'c                 d                           |          D ]}d fd	 |           d S )Nc                  	   	 | d         dk    r@j         j                            d|             	 j                             dd           d S 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 #  j                             j         j!         d%|  d&	d'           Y nxY w	 j                             dd           d S # j                             dd           w xY w)(Nr  draftuJ   Не обрабатываем черновики комментариев r|  	processedr   r   r   r   r   )r   r   r4   **r/  r7  r  r  r5  createdDater0  r6  r1  r   r3  r#   editorr  rU  c                 ,    g | ]}t          |          S r   r   r   xs     r   r  zQConfluenceAPIImport._process_content_comments.<locals>.create.<locals>.<listcomp>T  s    3\3\3\qCFF3\3\3\r   r   locationinlineT
resolutionresolvedclosedr   r   u9    Ошибка обработки комментария: zERR-0028r^  r  rx  )"r4   rh   ri   rH  rA   rE   
CmfCommentrG   r   r  r   r=   	cmf_ownerr   anonymous_usercmf_created_at
cmf_authorcmf_modified_bycmf_modified_atr   _convert_mentions_convert_linksr   r   r   r  rz  tree_parentr;  r  r   r  rR   r  )r|  rI  r   cmf_commentr3  r5  	view_soupeditor_soupr  r   ry  r%   s            r   ry  z=ConfluenceAPIImport._process_content_comments.<locals>.create)  s   AEx(G33.66  8N  EL  8N  8N  O  O  O| O,,YDDDDD{ !% 0CCGDMCCF"("3"7"7vO`Na"7"b"bK" ;+F t O,,YDDDDDs ' 8&,&7&7{SYfjfu&7&v&v#//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++KKPPP+-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O--;2vvmtvv#-'!%	 .       O,,YDDDDDDO,,YDDDDs$   .P =P *MP /QQ0 0R)r|  r!   )r-  )r%   r   r   r|  ry  s   ``  @r   _process_content_commentsz-ConfluenceAPIImport._process_content_comments'  s    11*== D	$ D	$GBE BE BE BE BE BE BE BEF F7#####ID	$ D	$r   c              #      K   | j                             |d          }|                                D ]A}|                                s|j        }|dk    s|                    d          r:||dV  Bd S )Nr8  r  r+   )rL  r  )r   r   r  is_filer   r  )r%   r   attachments_pathr  rL  s        r   _get_content_attachmentsz,ConfluenceAPIImport._get_content_attachmentsn  s      ,55j-PP)1133 		 		I$$&& !I111Y5G5G5P5P1&&     		 		r   c                    t          j        d|           }|r|d         nd }|r|d         nd }|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 |r	|r	t          d S d S )Nz((?:att)?\d+)\.(\d+)r  r  r   r@  r9  rv  1r   r  r   )
r5  	fullmatchr   r/  r0  r1  parse_qsqueryrG   r   )	rL  rO  
file_matchfile_idfile_versionattachr   rI  query_paramss	            r   _get_attachment_metaz(ConfluenceAPIImport._get_attachment_meta{  s'    \"99EE
#-7*Q--4(2<z!}}& 	/ 	/FF""fY/9::#\226(3CJ3OPP
%|44Z5EFF&**9se<<Q? w9,,t%%00W5L5L  /< /../ / / /r   c                 `   g }|D ]6}t          |d                   }|                    | j         d|            7dd|gg ddd|gg dg}t          j                            |d	
          }|r?| j        j                            | j	        j
         d| d           t                       d S d S )Nr   r   r   =)r   r   Nr   zNOT INr   Tr   include_deletedu    Удалено u    вложений)r   r   rA   rE   CmfAttachmentr   r4   rh   ri   rR   r  rC  )r%   r   rO  attachment_ext_idsatt_datar  attachment_filterresults           r   _delete_content_attachmentsz/ConfluenceAPIImport._delete_content_attachments  s    ( 	G 	GH$((F%%)9&E&EV&E&EFFFF sK("""x!34&&&	
 %119J\`1aa 	O"**dk.E+p+pW]+p+p+pqqqLLLLL	 	r   c                                                        fd}                     |          D ]5} ||d         |d                     j                            dd           6d S )Nc                 .   g d}d }	                      |           }|r|d         nd}|r|d         n| }|r-j         d| }t          j                            ||          }|s.dd|gd	dgg d
g}t          j                            ||          }|s9t                              |j        d          }|                    d           |j        rY|r||_        nd|_	        j
        |_        |r|                    d          r|d         }	|	                    d          |_        |	                    d          r>|	d         d         dk    r,                    |	d         j                           |_        nt           j        |_        |j        |_        ||_        t)          |d          5 }
|                    |
                                dd           d d d            n# 1 swxY w Y   d|_        |                    d           |r|d         d         }|j        |k    sJ t1                       d S # t2          $ r6 j        j                            j        j         d|  d| d           Y d S t<          $ rM t1                       j                            j        j         d| d| d|j         d| d 
d!"           Y d S t@          $ r5 j                            j        j         d#| d| d$d!d%           Y d S w xY w)&N)r   r'  url_preview_imgurl_previewr   rU  r  r   r2  r   r^  r   r   r^  Nr  Tr   r   r4   r   r   r   r1  r6  r  r  rbFsmart_backup
mark_dirtyr   r  u    Файл 'u)   ' существует локально 'uU   ', но удален в исходной системе (нет метаданных)u    Размер файла '' (u@   ) не соответствует размеру из меты: z	 bytes / z byteszERR-0029r  u<    Не удалось обработать вложение 'r  r  rx  )!r\  rA   rE   ra  rG   r4   r   r   r   embeddedr   projectrC  r   r=   rD  r   rB  rA  rz  r	  upload_filer   st_sizerC  r   rh   debugrR   r  AssertionErrorr  r   )rL  r  attachment_fieldsr}  attachment_metaattachment_idattachment_nameattachment_ext_idrd  attachment_versionr  file_size_metarO  r   r%   s               r   _process_attachmentzMConfluenceAPIImport._process_content_attachments.<locals>._process_attachment  s   ! ! ! JS"&";";IGW"X"X9H P 5 5b>M"\/'":":S\  +/+;(N(N}(N(N%!'!5!9!900 ": " "J " 	o6!34---)%
 "(!5!9!900 ": " "J " 6!'!5!5,*#'?(,	 "6 " "J OOO555-  D % 3,=
)).2
+)4);J&& E?+>+>y+I+I E-<Y-G*4F4J4J64R4R
1.22488E 24 8 @K O O484D4DEWX\E]^b^kEl4m4mJ11454DJ1/9/D
,5D
2i.. !"..FFHH)-', /                  26J.OOO555& D)8)Fz)R)1^CCCC+   &,,{. j j9 j jox j j j      "   )){. K K/ K K^k K K!)K K4BK K K # *          )){. = ='= =,9= = =#! *      sD   F-I 6+G-!I -G11I 4G15AI <LAL:LLrL  r  r}  r1  )rf  rQ  r4   rH  )r%   r   r   rO  r  attachment_datas   `` `  r   _process_content_attachmentsz0ConfluenceAPIImport._process_content_attachments  s    ((6FGGG\	 \	 \	 \	 \	 \	 \	|  $<<ZHH 	@ 	@O,,   O$$\;????	@ 	@r   c                 J   |d         d         d         }|d         d         d         }|d         d         d         }|s|s|S |s|rd}	 t          |d          }t          |d          }t          |d          }	| j        j        r	 | j        j                            | j        j         d	           t          	                    |d         d
         d                   }
| 
                    ||
d         ||           nf# t          $ rY | j        j         d}|                    d          r|d|d         d          dz  }| j                            |d|           Y nw xY w|                     |           |                     ||           |                     ||           |                     |||	           |                     ||	           |                     ||	           |                     |||	           |                     |||	           |                     |||	|           |                     |||	           |                     |||	           |                     |||	           |                     |||	           |                     |||	           |                     |||	           |                     ||	           |                     ||	           |                     ||	           |                      |||	           | !                    |||	           | "                    ||           | #                    ||           | $                    ||	           | %                    ||           | &                    ||	           | '                    |||	|           d(                    d |j)        j*        D                       }nH# t          $ r;}|}| j                            | j        j         d| d| d|           Y d }~nd }~ww xY w|S )Nr   r>  r#   r3  r5  z<p></p>html.parserr  uD    Конвертация текста из atlassian разметкиatlas_doc_formatr  )soupsubobjuS    Не удалось конвертировать разметку страницыr       (версия r@  r  zERR-0031r^  r  r  rU  c                 ,    g | ]}t          |          S r   r7  r8  s     r   r  z=ConfluenceAPIImport._convert_content_text.<locals>.<listcomp>P  s    DDDqCFFDDDr   uB    Ошибка обработки текста документа. r   zERR-0039)+r   r3   r<   r4   rh   r   rR   r  r
  r  _convert_atlas_docr   rG   r  _convert_text_color_convert_code_convert_panelrG  _convert_status_convert_status_handy_convert_plantuml_convert_drawio_convert_msoviewer_convert_childpages_convert_task_filter_convert_excerpt_include_convert_include_convert_content_by_label_convert_details_summary_convert_anchor_convert_toc_convert_livesearch_convert_recently_updatedrH  _convert_table_filter_convert_pivot_table_convert_tabs_convert_inline_comments_convert_excerpt_convert_detailsr   r   r   )r%   r   r   r  r>  r3  r5  storage_souprK  rL  	atlas_rawexception_textr  r  s                 r   _convert_content_textz)ConfluenceAPIImport._convert_content_text  s   v&y1':F#F+G4f%h/8 	 	K  	 	D<	(-@@L%dF33I'77K$ 4
fO*//;2xxx   !%

<+?@R+ST[+\ ] ]I++K99MT]fl+mmmm  f f f(,(?  &U  &U  &UN#''	22 a&*`L<ST\<]*`*`*``O--nYd-eeeee	f ((333y,777	<888"";	;GGG  K888&&y+>>>"";	;GGG  iEEE##KKPV#WWW$$[)[III%%k9kJJJ))+y+NNN!!+y+FFF**;	;OOO))+y+NNN  K888i555$$Y<<<**;	;OOO YDDD &&y,???%%i>>>y+666))+yAAA!!)[999!!+y+f!UUU77DDIN,CDDDEEDD 	 	 	DO%%;*{{nq{{uy{{% &        	 s?   
<O A7C? >O ?A E"O !E""I8O 
P %1PP c              #   p  K   | j                             |d          }|                                rd |                                D             }|                    d d           |D ]K}|                    d          5 }t                              |          V  d d d            n# 1 swxY w Y   Ld S )Nr?  c                 :    g | ]}|                                 |S r   )rO  )r   r  s     r   r  z=ConfluenceAPIImport._get_content_versions.<locals>.<listcomp>^  s%    NNN1!))++NQNNNr   c                     | j         S r!   r   )r  s    r   r$  z;ConfluenceAPIImport._get_content_versions.<locals>.<lambda>_  s    QV r   T)rF  reverser  )r   r   r   r  sortr	  r
  r   )r%   r   rS  version_filesr  r  s         r   _get_content_versionsz)ConfluenceAPIImport._get_content_versions[  s      (11*jII   	'NN(<(<(>(>NNNM#3#3TBBB - ' '!&&s++ 'q))A,,&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'ts   B**B.	1B.	c                     d|_         d|_        |                    d           t          j                            dd|gd           t                       dS )u8    Удаляет все версии документа. NT)	only_datar   r^  r_  )cur_published_versioncur_workflow_versionr   rE   CmfDocumentHistoryr   rC  )r%   doc_objs     r   _delete_all_content_versionsz0ConfluenceAPIImport._delete_all_content_versionse  sb    (,%'+$t$$$!--c7+  	. 	
 	
 	
 	r   c                 L   |d         }|                     d          r9|d         d         dk    r'|                     |d         | j                           }nt          j        }t          t          j                            |                     d                    	                    d          d d                   }|                     di           }|                     d	          d
k    }	 |d         d         d          nN# t          $ rA | j        j                            d           |d                             dddii           Y nw xY wi d|d|d|d|d|                     d          d|                     d          d|d|d|                     d          d|d|                     d          d	|d|ddd|d |j         d!| d"| j        }	t!          j        d%i |	}
|                     |||
#          |
_        |
                    d$           |
S )&Nr@  r6  r  r  r1  %Y%m%d%H%M%S%fr  r  r  r   r>  r#   u\   Некорректный дамп версии документа. Обновите дампrU  r   rA  rD  rE  rC  rF  cmf_versiondoc_versionofficial_dateofficial_numberreasonmessagecur_workflowhas_publishedTrz  r   rW  r4   r  r   r   )rG   r   r=   r   rB  r   dateutilparserr0  strftimer   r4   rh   ri   r   r   rE   r  r  r  r   )r%   r  version_datar  version_numberversion_authorr  version_contentis_current_versiondocument_history_datacmf_document_historys              r   _process_content_versionz,ConfluenceAPIImport._process_content_versionp  s   %h/D!! 	.l4&8&@K&O&O!--l4.@.OPPNN-NO!!,"2"26":":;;X&''-
 

 '**9b99,00::iG	GF#I.w777 	G 	G 	GO"**  ,J  K  K  KF#**I}+EFFFFF	G!
g!
!
 .!
 ~	!

 l..v66!
 |//77!
 ;!
 ;!
 \--f55!
 ~!
 l&&y11!
 f!
 .!
 T!
 |!
  ::.::!!
" $/#!
&  &8QQ;PQQ$($>$>' %? %
 %
! 	!!d!333##s   -D AEEc                 n    t                               |ddd          }|                    d           dS )uL    Создает фейковую версию с текущей датой. FTrU  )r   r  cmf_deletedr  r   N)rE   r  r   )r%   r  fake_historys      r   _create_fake_content_versionz0ConfluenceAPIImport._create_fake_content_version  sG    00	 1 
 
 	d+++++r   doc_datac           	         |                      |           ddd}|d         }|d         }|j                            d          }d }t          |                     |                    D ]\  }}	|| j        k    r n|	d         }
d|
 d	| d
}	 | j        j                            | j	        j
         d|            |                     ||	|          }|j        r|}t                       |dxx         dz  cc<   nP# t          $ rC | j                            | j	        j
         d| d|	 d|d           |dxx         dz  cc<   Y nw xY w| j                            dd           # | j                            dd           w xY w||_        |j        r|                    d           |                     |           t                       |S )Nr   	succeededfailedr   r  CLOSEDstatus_typer@  u   версии u    документа 'rZ       Обработка r  r  u!    Ошибка обработки r   zERR-0033Trs  r  r   r1  r   )r  workflowget_default_statusr  r  rp   r4   rh   r   rR   r  r  r  rC  r   r  rH  r  r   r   r  )r%   r  r  re  page_id
page_titledefault_statusrV  version_countr  r  log_page_verdocument_historys                r   _process_content_versionsz-ConfluenceAPIImport._process_content_versions  sY   ))'222 
 

 4.g&
 )<<<RR+4T5O5OPW5X5X+Y+Y 	A 	A'M< @@@)(3N]>]]PZ]]]LA&++{.RRLRR   $(#@#@,Xf#g#g #0 7&6O{###q(#### & & &)){.ooQ]ooamoo!	 *    x   A%     & ((K@@@@((K@@@@'6$ 	+LLTL*** 	))'222s,   A,C=<E)=A
E
E)	E

E))Fc                    | j                             |          }|                                sO|                    d          }|                                rd| d}nd| d}t	          | j         d|           |                    d          }|                                st	          | j         d| d          |                    d	          5 }t                              |          }d d d            n# 1 swxY w Y   g |d
<   |                    d          }|                                rJ|                    d	          5 }t                              |          |d
<   d d d            n# 1 swxY w Y   |S )Nr.   u   Контент ID:un    был полностью удален, либо перемещен в другое пространство.u-   Не найден каталог дампа 'rZ   r  r  u*    Не найден файл данных 'r  r8  r;  )	r   r   r   r   r   r  r	  r
  r   )	r%   r   r  r  	error_msgr  r  r   rP  s	            r   _get_content_dataz%ConfluenceAPIImport._get_content_data  s   '00<<!!## 		E$00;;J  "" [] ] ] ] 	
 [KZZZ	#t~$C$C	$C$CDDD((55	!! 	o#t~$m$maj$m$m$mnnn^^C   	(A99Q<<L	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ')]#&//0BCC""$$ 	;!&&s++ ;q.2iill]+; ; ; ; ; ; ; ; ; ; ; ; ; ; ; s$   C==DDE55E9<E9c              #     K   | j                                         D ]c}|                                rM|j                            | j                  s.	 |                     |j                  V  S# t          $ r Y _w xY wdd S r!   )	r   r  r  r   r  r  r  r  r   )r%   r  s     r   _get_contentsz!ConfluenceAPIImport._get_contents	  s      ,4466 	 	K""$$#(11$2LMM001ABBBBBB    H	 	s   A//
A<;A<c           
      X   t          d          5  t                                          5  | j                                        s| j                                        rn| j        5  | j        |k    r'| j        	                                 	 d d d            n	 d d d            n# 1 swxY w Y   	 | j
                            d          }|d         }|d         }nC# t          $ r Y nut          $ r*}| j                            d| d	           Y d }~nGd }~ww xY w| j        5  | xj        dz  c_        | j        |k    r| j        	                                 d d d            n# 1 swxY w Y   |d         }|d
         }d| d| j        _        	 | j        dk    rd}n
d| j         }| j        j                            | j        j         d| d|            | j         d| }	t*          j                            |	g d          }
|
st          d          d| d|
j         d| j        _        |
j        r2|                     ||
          }| j
                            ||           nt7          d          n# t6          $ r^}| j        j                            | j        j         d|            d|d         d}| j
                            ||           Y d }~ndd }~wt          $ rT}| j                            | j        j         d| d| ddd            | j
                            |           Y d }~nd }~ww xY w| j                                        | j
                                         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 )!NFrY  r  rg  r   payloadH   Ошибка при получении элемента очереди: ERR-0018r^  r  r.  r  r   u   Все версии.u   Последние: u5    Обработка версий документа 'r  r   )r   r  r  r   rz  r2  u4   Документ не найден в системеz CODE:u:   Документ изменен пользователемr  r   r4  r  uB    Ошибка обработки версий документа 'ERR-0084r/   Tr^  r  rx  )r	   cmfutildisable_aclrj  rk  r4   r`  counter_lockitems_processed_counterr  
item_queuerG   r   r   r  rR   r  rp   rh   r   rA   rE   r/   r:   r   r  completer   ri   failclose_local_conn)r%   	max_itemsitemitem_idr  r  r   content_titlenum_ver_msgr   r  re  s               r   _process_versionsz%ConfluenceAPIImport._process_versions	  s   5111 R	/ R	/73F3F3H3H R	/ R	/o,,.. O2?,,.. &  3y@@++---      @              
?..q.99D"4jG#'	?LL   E    O--hcfhh#- .    EEEE & . .00A5003y@@++---. . . . . . . . . . . . . . .
 *$/
 ,W 5*>*>*>*>'/272==&<&_T=]&_&_O*//;2 ) )iv ) )&) )  
 !% 0@@J@@F$044%      5 	 	G # `'(^___.VZ.V.Vw|.V.V.VDK+. p!%!?!?g!V!V00&AAAA12nooo B + > > >O*22dk6M3U3UPS3U3UVVV%&"./D"E F O,,Wf========  	2 	2 	2O--;2 4 4)4 4.14 4#-!.!% .    O((11111111	2M o,,.. O2b O,,...eR	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/ R	/s   N=N(&B(NN(B,,N/B,0N4+C N 
D *N-	D 6DND  
N*5E+N+E//N2E/3#NC)J N
MAK$N$M1A
M ;N M6N;NN	NN	NN#&N#labelsc           	         g }|D ]}|d         }d| j          d| d}t          j                            ddd| dg          }|r|                    |           W| j                            | j        j         d| d| d	d
|           |S )u;  
        Возвращает список тегов документа

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

        Returns:
            list: список тегов (CmfTag)
        r   r   r   r   r   r   u    Не найден тег 'rq  r  zERR-0017r  )	rA   rE   CmfTagrG   r   r4   r  rR   r  )r%   r   r  tagslabellabel_id
tag_ext_idr#  s           r   _get_content_tagsz%ConfluenceAPIImport._get_content_tagsb	  s      	 	ET{H>d.>>(>>>J-##Hf>O*>O>O>O+P#QQC C    )){.``5``U]```)# *    
 r   c                    | j          d|d          }t          j                            |dg          }|s$t                              |d|| j        d          }|d                             d	          r2| j                            | j        j        |d         d	                   }n| j        j        j        j	        }|j
         d
| d| d|_        |                    d           dS )u#  
        Создает комментарий со ссылкой на оригинальную страницу в Confluence

        Args:
            content_obj (CmfDocument): объект документа
            content (dict): данные страницы Confluence
        z
::comment:r   r  r2  r  T)r   	log_levelr   r4   r   r9  webuiu4    импортирован из Confluence: <a href="z" target="_blank">z</a>"r   N)rA   rE   r@  rG   r4   r3   ry  r'  r@   ext_urlverbose_namer  r   )r%   r   r  comment_ext_idr|  r  s         r   _add_external_link_commentz.ConfluenceAPIImport._add_external_link_comment|	  s'    !,GGGG#''!8 ( 
 
  	''"%? $ (  G 8  )) 	9?--#!'* DD
 ?)08D' < << <04< < < 	 	&&&&&r   c                 ~   | j                             |d          }t          t                    |         }|o| j        j        dk    }|r| j        j        j        }n-|                    |dg          }|s || j	        d|          }|j
        s|                    ddg           |j        st          |          |S )	Nr/   r  r   r2  T)r4   r   r   r3  r  )TYPE_MODEL_MAPrG   varsrE   root_parent
class_nameru  descr_documentr#   r4   is_newr  r   r   )r%   r  r   r  content_model_namecontent_modelwiki_project_homepager   s           r   _get_or_create_content_objz.ConfluenceAPIImport._get_or_create_content_obj	  s    !044\=QQV%78 + [0@0K|0[  	,5;KK'++ z ,  K  +m#$(!   ! 	4##T6N333* 	3%k222r   c                    |d         d         }| j         j                            | j        j         d|            |d         dk    rt
          j        }n |                     || j                           }|s.| j         j        	                    | j        j         d|            |d         
                    d          }|rh| j         j                            | j        j         d|            |d         dk    rt
          j        }n#|                     || j                           }n|}|d         d	         d
         }| j         j                            | j        j         d|            |d         dk    rt
          j        }	n |                     || j                           }	|dk    r| j        j        j        }
n| j        }
|
                    t!          j        |d                             }|d         | j        |
||||	|d         d	         d         |d         d         t%          |j        dk              ||d}|S )Nr/  r5  u$    Определяем автора: r  r  u    Не найден автор: r7  u*    Определяем владельца: r0  r6  u?    Определяем последнего редактора: r1   r  r  r  r1  r4  r  )r   r   r  r  rA  rD  rE  rF  rC  cmf_archivedr   rz  )r4   rh   r   rR   r  r   rB  r   r=   ri   rG   ru  	scheme_wfdefault_document_workflowrH   r  r   get_status_typern   r  )r%   r  r  r   authorrD  ownerrA  modifiedrE  r  r  r   s                r   _prepare_content_dataz)ConfluenceAPIImport._prepare_content_data	  se   #K0##t{'>$l$ldj$l$lmmm&>[(()JJ))&*?@@J 	pO"**dk.E+n+nfl+n+nooo	"&&y11 	#O"''4;+B(u(uns(u(uvvvV}++,		 ,,U4=-ABB		"I9%m4T:##{&qqgoqq	
 	
 	
 F{**.OO"..x/FGGO6!!|-GHH,H,,,<WX=NOO - 
 

 G$l "$.&y1-@H%i0? !3x!?@@&
 
 r   c                 `   |                      |          }|d         }|d         }| j         d| }|                     |||          }|                     |||          }|D ]}t	          ||||                    |j        r|                    d           |                     ||           |dk    r|                     |||d                    | 	                    ||           t          |j        j                            d          d d	                   |_        d|_        |                     ||d
         d         d                   |_        |                     ||          |_        |j        r|                    d           |j        r|                     ||           d S d S d S )Nr   r  r   Tr   r1   r8  r  r  r   r  r   )r  rA   r  r   setattrr   r   r  r  rM  r   rF  r#   r  r  full_screenr  r  r  r  r  r  )	r%   r   r  r  r  r{  r   r   rF  s	            r   _process_contentz$ConfluenceAPIImport._process_content	  s   ((44T]
v ,<<
<<55lNT_``11'<XX 	9 	9CKl3&78888! 	/...**;@@@6!!--k:w}G]^^^ **;
CCC&)+*E*K*T*TUe*f*fgjhjgj*k&l&lK#&*K##55
#H-i8   K
  $99+wOOK% 3  T 222! F//WEEEEE- "!(F Fr   c           	      \	   t          d          5  t                                          5  | j                                        s| j                                        rn| j        5  | j        |k    r'| j        	                                 	 d d d            n	 d d d            n# 1 swxY w Y   	 | j
                            d          }|d         }|d         }nC# t          $ r Y nwt          $ r*}| j                            d| d	           Y d }~nId }~ww xY w| j        5  | xj        dz  c_        | j        |k    r| j        	                                 d d d            n# 1 swxY w Y   |d         }|d
         }| j                            |                    d          d          }d| d| j        _        | j                            |          | j        _        | j                            | j        j         d| d           	 |                     ||d                    t/                       | j
                            |           n# t2          $ r\}| j                            | j        j         d| dt4          j        d           | j
                            |           Y d }~nTd }~wt:          $ ra | j                            | j        j         dd|d           | j                                         | j
                            |           Y nt>          $ ri | j                            | j        j         d| j          dd|d           | j                                         | j
                            |           Y nvt          $ rj}| j                            | j        j         d| d|d           | j                                         | j
                            |           Y d }~nd }~ww xY w| j        !                    dd           n # | j        !                    dd           w xY w| j                                        | j
        "                                 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 )NFrY  r  rg  r   r  r  r  r  r  r  r/   r.  r  u    Обработка 'rZ   r  r  u|    был изменен пользователем. Изменения из импорта не будут примененыTrx   r  uq    Ошибка создания. Попробуйте очистить дамп и повторить импортr  u|    Ошибка создания. Попробуйте отменить импорты связанные с проектом uY   , чтобы он удалился из системы и повторите импортu     Ошибка создания: rA  r1  )#r	   r  r  rj  rk  r4   r`  r  r  r  r  rG   r   r   r  r  rR   r  r   r   r  r;   r$  rC  r  r   rt   r  r  r   
log_detailAttributeErrorru  rH  r  )	r%   r  r  r  r  r  r   r  r  s	            r   _process_contentsz%ConfluenceAPIImport._process_contents
  s   5111 V	/ V	/73F3F3H3H V	/ V	/o,,.. SF?,,.. &  3y@@++---      @              
?..q.99D"4jG#'	?LL   E    O--hcfhh#- .    EEEE & . .00A5003y@@++---. . . . . . . . . . . . . . .
 *$/
 ,W 5%)%8%<%< $$V,,!& &"
 +?*>*>*>'*.*;*D*DZ*P*P'##t{'>$e$eUb$e$e$efff,F))*l=6QRRRLLLO,,W5555* 2 2 2O'';2 e eS e e e%o"&	 (    O((11111111( 	2 	2 	2O--;2 m m m#-!3!% .    O..000O((11111% 
2 
2 
2O--;2 s sw{  xDs s s $.!3!% .    O..000O((11111  2 2 2O--;2YYTWYY#-!3!%	 .    O..000O((111111112 O,,ZEEEEDO,,ZEEEEg o,,.. SFj O,,...mV	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/ V	/s$  R!=R	(&B(R	R	(B,,R	/B,0R	4+C R	 
D *R	-	D 6DR	D  
R	*5E+R	+E//R	2E/3BR	AIP*
P#AJ:4P*:A+P%P*'A/PP*	P!A PP*PP*R	*Q6R	=R!	R	R!R	R!!R%(R%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r3  zdiagramName=([^|]+)data-macro-parametersr  r   r   u#   Диаграмма с именем u@    не найдена во вложениях документа zERR-0019r  r   r   r   r   %.pngr'  r  100%zdiagramWidth=([^|]+)zdiagramHeight=([^|]+)r   	attach_idwidthheightimg_srcrU  r  r  r   zdrawio-macro-content-data-macro-iduU   Неудалось конвертировать диаграмму из текста r   )r2  r5  r6  r3  r   rE   ra  rG   r4   r  r   r#   r   r'  r   r   formatfindreplace_with
currentTag)r%   r  rK  rL  TAG_TMPL
macro_namer#  matchrL  rZ  
attach_imgr5  r6  datar   
drawio_tags                   r   r  z#ConfluenceAPIImport._convert_drawios
  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                  }nA# t          $ r4}d}| j        	                    d| d|j         d|	           Y d }~nd }~ww 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.  erroru)   Ошибка конвертации UML: u0   . Не удалось получить svg из zERR-0002r  z{})paramsumlsvgr  )r2  rE   r/   convert_uml2svgr  r   r#   r   r4   r  r   r9  r;  )
r%   r  rK  rL  TMPr#  rH  r  new_tagold_tags
             r   r  z%ConfluenceAPIImport._convert_plantuml
  s?   &P ''/@*.M'NN 	 	C(887:CSTT   ))uxu}) *         $CJJdcJ$R$RTabbG$--5F
4S-TT  $$W---	 	s   /A
B*BB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>
        ri  c                     | d         S )Nr'  r   )rV  s    r   r$  zAConfluenceAPIImport._create_msoviewer_macro_tag.<locals>.<lambda>  s
    !E( r   rF  r  r  
sheet_namerU  u   Листr'  )numr   r  r'  imgUrlzOffice Wordwordz
.doc,.docxz.docz.docx)pluginTitle
pluginTypeacceptTypesacceptTypesList	pageScalezOffice Excelexcelz
.xlsx,.xlsz.xlsxz.xlsr  )viewdocviewxlsr      )verparentIdr  currentPageRefslicePageNum
pagesCountFr  rT  )rF  r4  ri  plugin_titler  )r  r   r   ri  get_fullviewr  r  r   r  r   rG   r   r9  r
  r  r<  )r%   r  rZ  plugin_typeTMPLr4  ri  fullview_pagesr  rQ  fullview_pager1   param_typesrF  rK  s                  r   _create_msoviewer_macro_tagz/ConfluenceAPIImport._create_msoviewer_macro_tag
  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 rZ  r[  r-  r.  r/  c              3   B   K   | ]}|                     d d          V  dS r^  r  Nr=  r   params     r   r(  z9ConfluenceAPIImport._convert_msoviewer.<locals>.<genexpr>E  s0      *g*g55;;sA+>+>*g*g*g*g*g*gr   |r   r   r   &   Не найдено вложение 'rZ   0   Ошибка обработки макроса '   ' в документе 'rq  r   r  r  r   ERR-0012r  N)r2  rG   r  r=  rE   ra  r   r:  r;  ri  r   rz  r  r  r  r4   r  )r%   r  rK  rL  r  macro_types
macro_typer#  original_paramsrL  rZ  rL  r  
error_texts                 r   r  z&ConfluenceAPIImport._convert_msoviewer=  s    ),% 	 	J"++3Dj2Q+RR  &)gg.E&F&FO&**g*gOLaLabeLfLf*g*g*g&g&gO / 7I#155W95UUF! _'(]QZ(](](]^^^'nn4Ez3RnSSG l,,T-M-MgW]_i-j-jkkk    d: d d29,d dCJCZ[_C`d d d  "&&*CDD R"&Q8N&Q&Q&QQ
*s**,JO--"#-"-g .        	 	s   CC**
E*4A+E%%E*c                    dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       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-  r   r.  falser8  r/  rU  F50none)isShowChildrenr^  childrenAmountrx   includeViewTypeisOrderByDeskc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r^  r  r  Nr  r=  rn  s     r   r(  z:ConfluenceAPIImport._convert_childpages.<locals>.<genexpr>  ]       $ $u{{3**++q00 C##0000$ $r   rp  r  Tr~  rS  rx   firstr  depthstyle
headerTypeexcerptTyper  r}  simplezrich contentr  r  r   rC  rF  r  creationr  sortTyper  r  r1   r+  
documentIdtruer   r   r  
separators"&quot;)doc_iddoc_namerF  rx  cmf_convertedr  r  N)get_data_idr2  rG   r   r   r  r=  r   r   r   r9  r
  r  r   r:  r;  r<  )r%   r  rK  rL  re  r#  r  macro_iddata_macro_parametersrF  macro_parametersview_type_mapsort_type_mapr  rK  rL  s                   r   r  z'ConfluenceAPIImport._convert_childpages]  s3   &
 &--& & <G==& & @K}}& && =HMM'& &( CN--)& &* <G==+& &, =HMM-& &6 ?Jmm7& &H U`TaTaI& & &P ''/@*.M'NN N	9 N	9C#Mww//H$'GG,CR$H$H! #(
OO"&#)!& F  $ $ $288==$ $ $    
  ##E** &+/'(("%w##G,, E+;G+D'(##G,, <"27";w##G,, A'7'@|$##M22 _"'$-! !
 -:,=,=>N}>],^,^()##F++ Q# 0 1! !
 &3%6%67G7O%P%Pz"##I.. /*.'H##F++ 	%#F+s22+.w~/@+A+AF<("7>#677H$*MM $#wz??%::%*#- &   gc8,,$9"/  
 
 '$## G LT]innOX+FnGGGY]G P#..0A:/N.OO 9$$W%7888]N	9 N	9r   c           
      P   d}|                     ddi          D ]	}|                    d          }|                    dd          }t          d |                    d	          D                       }|                    d
d          }|r|                    d|i          nd}|s|                    ddi          }|rat          |                    |d                    d |j        D                                 d          }	|	                    |	j
                   dS )uH   
        Конвертирует макрос "Выборка"
        u~  
        <div
            class="macros-panel macros-excerpt-block"
            contenteditable="false"
            data-id
            data-macros="exceprt"
            data-param-name="{name}"
        >
            <div class="extension-container" contenteditable="false" data-id data-layout="default">
                <span aria-label="Макрос Include. 'Создать выборку'" data-id role="img">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                        <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id>Макрос Include. 'Создать выборку' <span class="excerpt-title" data-id>| name = {name}</span></span>
                <span class="macros-actions" data-id>
                    <span class="macros-edit" data-id style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id>
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-id data-macro-body="">{content}</div>
        </div>
        r-  excerptr.  r8  r/  rU  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  rn  s     r   r(  z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>  r  r   rp  r   &   Выборка без названияNc              3   4   K   | ]}t          |          V  d S r!   r7  r   r  s     r   r(  z7ConfluenceAPIImport._convert_excerpt.<locals>.<genexpr>  s(      'U'UG'U'U'U'U'U'Ur   r   r  r  )r2  rG   r  r=  r:  r   r9  r   rc  r;  r<  )
r%   rK  rL  re  r#  r  r  excerpt_namerL  rK  s
             r   r  z$ConfluenceAPIImport._convert_excerpt  si    D ''/@).L'MM 	9 	9Cww//H"ww'>CC# $ $-33C88$ $ $    
 ,//8`aaLKS]innOX+FnGGGY]G O#..0A9/M.NN 9'KK) "'U'UGDT'U'U'U U U     "  $$W%7888-	9 	9r   c                    d}|                     ddi          D ]}|                    d          }|                    d          }d|v r|                    dd          \  }}	n`t          |t          j                  r |j                                        d	         }n$|j        j                                        d	         }|}	|                    d
          }
|
rCt          d |
                    d          D                       }
|
                    dd          }nd}t          |                    |t          j        |	                              dd          t          j        |                              dd                    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.  r8  data-macro-default-parameterr   r  rF  r/  c              3   B   K   | ]}|                     d d          V  dS rl  rm  rn  s     r   r(  z?ConfluenceAPIImport._convert_excerpt_include.<locals>.<genexpr>O  s0      'e'eC(;(;'e'e'e'e'e'er   rp  r   r  	&#9;r  	page_namer   r  N)r2  rG   r=  r  rE   r  rz  r   r   r  r   r9  htmlescaper   r:  r;  r<  )r%   r  rK  rL  re  r#  r  macro_default_parameterr   r  r  r  rK  rL  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#!-"k)44<<T6JJ"k)44<<T6JJ   
  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 ]n}|                    d          }|                    d          }d|v r|                    dd          \  }}	n`t          |t          j                  r |j                                        d	         }n$|j        j                                        d	         }|}	t          |
                    t          j        |	                              d
d          t          j        |                              d
d                    d          }
|r|                    d|i          nd}|s|                    ddi          }|r|                    |
j                   pd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.  r8  r  r   r  rF  r  r  
page_labelr   r  N)r2  rG   r=  r  rE   r  rz  r   r   r   r9  r  r  r   r:  r;  r<  )r%   r  rK  rL  re  r#  r  r  r   r  rK  rL  s               r   r  z$ConfluenceAPIImport._convert_includec  s   "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
##{:66>>tVLL"k)44<<T6JJ     G LT]innOX+FnGGGY]G O#..0A9/M.NN 9$$W%78883	9 	9r   c                 v   dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       d
t                       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/  rU  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  rn  s     r   r(  z3ConfluenceAPIImport._convert_toc.<locals>.<genexpr>  ]        u{{3**++q00 C##0000 r   rp  r  r   outlineF	separatorbracketsr  40pxr  mixedhminLevelrS  maxLevel6excluder  	printableTabsoluteUrlclass)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rx  r  r8  Ndiv)r  r2  rG   r  r=  r
  r  r   r   r9  r:  r;  r<  )r%   rK  rL  re  r#  r  rF  
parametersrK  r  rL  s              r   r  z ConfluenceAPIImport._convert_toc  s#   % "mm	% % P[}}% % ;F--% % 9D% %  ;F--!% %$ 8C}}%% %& ;F--'% %0 IT1% %B 8C}}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t                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       d
}|                    ddi          D ]}d}|                    dd          }t          d |                    d          D                       }|                    dd          }|                    d          }	|	rCt
          j                            ddd| 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/  rU  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  rn  s     r   r(  z:ConfluenceAPIImport._convert_livesearch.<locals>.<genexpr>4  r  r   rp  placeholderu
   ПоискspaceKeyr   r   %::::%rz  ILIKE%"key":""%r  r  r{  c                 :    g | ]}||                                 S r   strip)r   lables     r   r  z;ConfluenceAPIImport._convert_livesearch.<locals>.<listcomp>K  s6       KKMM  r   r  r   r<  medium)currentSpaceKeyr  r  r<  Fr  r  r  r  )rF  rx  r  r  r  r8  Nr  )r  r2  rG   r  r=  rE   r  sgetrA   r   r
  r  r   r   r9  r:  r;  r<  )r%   rK  rL  re  r#  r  r  rF  r  r   ru  r  rK  r  rL  s                  r   r  z'ConfluenceAPIImport._convert_livesearch  s'   -!mm- - '==- - !,- -  !,!- -" ;F--#- -& !,'- -( %0MM)- -2 %0MM3- -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+F1A+F+F+FG*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                 V   dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	}|                    d
ddi          D ]}d}|                    dd          }t          d |                    d          D                       }d}	|                    dd                              dd                                          }
|
rj|
d         }t          j                            ddd| j	         dgddd| dggd g!          }|r|j
        }	n:d"|
v rt          |j        j
                  }	nd#}nt          |j        j
                  }	|                    d$d                              dd                                          }|s|                    d%           nd&d'gfd(|D             }d}|                    d)d                              dd                                          }t          |          d*k    rj	 |                     |d         d+,          }|rt          |j
                  }n5# t           $ r(}| j                            |d-|d./           Y d}~nd}~ww xY wt'          |                    d0d1                    d2||	pd|                    d3d4          |pd|                    d5d                              dd                                          |                    d6d7          |                    d8d2          d9	}t(                              |d2d:;                              d<d=          }t-          |                    |||>          d?          }|                    d@          }|r|                    d@|i          nd}|s|                    dAddi          }|r|                    |j                   dS )But   
        Конвертирует макрос "Recently Updated Macro" (Недавно обновлено)
        r  aW  "
            class="macros-panel mceNonEditable wiki-recently-updated"
            contenteditable="false"
            data-macros-parameters="{params}"
            data-macro-parameters-original="{original_params}"
            data-macros="wikirecentlyupdated"
            cmf_converted="{cmf_converted}"
        >
            <div data-id="zT" data-layout="default" class="extension-container">
                <span data-id="uO  " aria-label="Макрос">
                    <svg viewbox="0 0 24 24" width="14px" height="14px" class="ng-star-inserted">
                        <path fill="currentColor" d="M12,0A11.972,11.972,0,0,0,4,3.073V1A1,1,0,0,0,2,1V4A3,3,0,0,0,5,7H8A1,1,0,0,0,8,5H5a.854.854,0,0,1-.1-.021A9.987,9.987,0,1,1,2,12a1,1,0,0,0-2,0A12,12,0,1,0,12,0Z"></path>,
                        <path fill="currentColor" d="M12,6a1,1,0,0,0-1,1v5a1,1,0,0,0,.293.707l3,3a1,1,0,0,0,1.414-1.414L13,11.586V7A1,1,0,0,0,12,6Z"></path>
                    </svg>
                </span>
                <span data-id="u   " class="extension-title">
                    <span class="excerpt-title">Макрос "Недавние обновления"</span>
                </span>
                <span data-id="r  r  aw  " class="macros-action macros-delete" data-macros-action="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #222)" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div data-id="z<" class="ak-renderer-wrapper"></div>
        </div>
        r,  r-  zrecently-updatedr.  r  r/  rU  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  rn  s     r   r(  z@ConfluenceAPIImport._convert_recently_updated.<locals>.<genexpr>  r  r   rp  Nspacesr   r  r   r   r   r  r  rz  r  r  r  r  r  z@selfr{  typesr  r{  newsc                     g | ]}|v|	S r   r   )r   r  unsupported_typess     r   r  zAConfluenceAPIImport._convert_recently_updated.<locals>.<listcomp>  s$    TTT5UBS5S5S5S5S5Sr   r  r  T)raise_on_errorzERR-0133r   r^  r  r  max   Fthemeconciser  r5  r2  hideHeading)	r  	maxToggler  r   r  r  r  r5  r  r  r  r  r  )rF  rx  r  r  r8  r  )r  r2  rG   r  r=  r   rE   r  r  rA   r   r   ru  r   r  r   r   r4   r  r   r
  r  r   r9  r:  r;  r<  )r%   r  rK  rL  re  r#  r  r  rF  r   
space_keysr   ru  r  r  authorsr   r  r  rK  r  rL  r  s                         @r   r  z-ConfluenceAPIImport._convert_recently_updatedk  s   %!mm% % '==% % !,% %" !,#% %( !,)% %* %0MM+% %4 %0MM5% %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+F1A+F+F+FG*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   3J
J>J99J>c                 v	  " d}|                     d          }t          |          D ]}|                    dd| dd          }g d}g d}g d}d	d
ddd}	ddd}
dddddddd"ddddd}|                    ddd i!          D ]/}|                    d"          }i }d#d$i}|                    d%          D ]}|                    dd&          }|j        r|j                                        nd'}|||<   ||v rE|	                    |          p|}|(||v r't          j        d(|          }|d)k    rd* |D             }||v r2t          |t                    rd+ |D             }nt          |          }n}|d	k    r$"fd,|D             }d                    |          }nS|d-k    r"                    |          }n7|d.k    r|
                    |          }n|d/k    r|                    |          }t          |t                    r5|                                d0k    rd$}n|                                d1k    rd2}|||<   g }d3d4d5d6d7d5d8d9d5d:d;d5d<d=d5d>d?d5d@dAd5dB}t          |                                d          D ]\  }\  }}|                    |          }|s |dCv r.|                    |dD         dE|dD         |dF         |dG           Rt          j        d(|          }|D ])}|                    |dE|dD         |dF         |dG           *d'gt%          |          z  }|                    dH          pg }t          |          D ]\  }}||         ||<   |}||dI<   |r|                    dJ|i!          nd'}|s|                    dKd i!          }|rdL t          |          D             }dMt)          dN           |dO<   t*                              |d2dPQ                              dRdS          |dT<   t*                              |d2dPQ                              dRdS          |dU<   |                    dVdWdXi!          }d&                    dY |j        D                       |dZ<    |j        d\i |} t3          | d[          }!|                    |!j                   1d'S )]uS   
        Конвертирует макрос 'Фильтр таблиц'
        u  
        <div
            id="{macro_id}"
            data-id="{data_id}"
            class="macros-panel table-filters"
            contenteditable="false"
            original-data-macro-parameters='{original_params}'
            data-macros-parameters='{params}'
            data-rendered="true"
            data-macros="tablefilters"
        >
            <div data-layout="default" class="extension-container" contenteditable="false" data-id="{data_id}">
                <span role="img" aria-label="Макрос Фильтры таблиц" data-id="{data_id}">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" height="16" viewbox="0 0 24 24" width="16" data-name="Layer 1">
                        <path d="m14 24a1 1 0 0 1 -.6-.2l-4-3a1 1 0 0 1 -.4-.8v-5.62l-7.016-7.893a3.9 3.9 0 0 1 2.916-6.487h14.2a3.9 3.9 0 0 1 2.913 6.488l-7.013 7.892v8.62a1 1 0 0 1 -1 1zm-3-4.5 2 1.5v-7a1 1 0 0 1 .253-.664l7.268-8.177a1.9 1.9 0 0 0 -1.421-3.159h-14.2a1.9 1.9 0 0 0 -1.421 3.158l7.269 8.178a1 1 0 0 1 .252.664z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="{data_id}">
                    <span class="excerpt-title" data-id="{data_id}">Фильтры таблиц</span>
                </span>
                <span class="macros-actions" data-id="{data_id}">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="{data_id}">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path _ngcontent-aiw-c17="" fill="var(--color-gray-222, #222)" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id="{data_id}">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #222)" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div data-fabric-macro="null" data-macro-body="" class="ak-renderer-wrapper" contenteditable="true" data-id="{data_id}">
                {content}
            </div>
            <div class="macros-preview" data-id="{data_id}"></div>
        </div>
        	{data_id}	{data_id_}r  )r   customNoTableMsgTextcustomNoTableMsgenabledInEditorhideFilters)orderinverser  totalRow)	fixedColslimitHeightr  rowsPerPageignoreFirstNRowsheightValueshowNRowsifNotFilteredr  
iconFilterr  thousandSeprator)totalrow
iconfilterignoreFirstNrowsthousandSeparatorr  r   )	Point (.)	Comma (,)sumaveragemuiltiplicationminr  r  nonemptyCount)SumAverageMultiplicationMinMaxCountzCount not empty
dynamicAscdynamicDesc	staticAsc
staticDesc)zDynamic AscendingzDynamic DescendingzStatic AscendingzStatic Descendingac:structured-macroac:nameztable-filterr.  ac:macro-idddSeparatorsTac:parameterrU  Nu   (?<!\s)[,‚](?!\s)r  c                 >    g | ]}|                                 d k    S )r  )rj  r   rW  s     r   r  z=ConfluenceAPIImport._convert_table_filter.<locals>.<listcomp>l  s%    *T*T*T117799+>*T*T*Tr   c                 ,    g | ]}t          |          S r   )r   r"  s     r   r  z=ConfluenceAPIImport._convert_table_filter.<locals>.<listcomp>p  s    *G*G*Ga3q66*G*G*Gr   c                 <    g | ]}                     ||          S r   )rG   )r   rW  	total_maps     r   r  z=ConfluenceAPIImport._convert_table_filter.<locals>.<listcomp>t  s'    &P&P&Pqy}}Q':':&P&P&Pr   totalcolr  	numberingr  r{  Fcolumnu!   Выпадающий список)r   r  
userfilteru   Текстовой списокnumberfilteru   Числовой фильтр
datefilteru   Фильтр по датамvisualu!   Визуальный фильтрglobalu!   Глобальный фильтрhiddensu   Скрыть столбцы)r(  r)  r*  r+  r  globalFilterhideColumns)r/  r0  r  r   r   )
columnNamecolumnIndexfilterLabel
filterTypefilterIdr  r$  r8  r-  c                 2    i | ]}d | t                      S data_id_r  r   r  s     r   r   z=ConfluenceAPIImport._convert_table_filter.<locals>.<dictcomp>  $    TTT!1TTTr   ztable-filter-r  r  r  r  rZ   &apos;rx  rF  r  r  ztablefilter-table-wrapperc              3   4   K   | ]}t          |          V  d S r!   r7  r  s     r   r(  z<ConfluenceAPIImport._convert_table_filter.<locals>.<genexpr>  (      )U)U7#g,,)U)U)U)U)U)Ur   r  r  r   )r  r  r   r2  rG   r  r  r5  r=  r  r   r   r   r   rj  r  r_  r   r  r:  get_random_strr
  r  rc  r9  r   r;  r<  )#r%   rK  r  re  data_id_countr  unknown_paramslist_params
int_params
params_mapseparator_mapnumbering_maptable_filterr  rx  rF  ro  
param_nameparam_valuer$  filter_typesfilter_typefilter_datafilter_valuecolumn_nameordered_filtersr  	old_index	new_indexrL  rA  tablenew_htmlrK  r%  s#                                     @r   r  z)ConfluenceAPIImport._convert_table_filter  s   (T 

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

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

 
 

  /.
 
	 "."/ +!-	
 
 )112GPY[iOj1kk m	9 m	9L#''66H OF &..~>> &1 &1"YYy"55
49JHej..000D.9
+//'^^J77E:
*![00 ')h/E{&S&S%22*T*T*T*T*TK!Z//%k488 ;*G*G;*G*G*GKK*-k*:*:KK#z11&P&P&P&PK&P&P&P&)hh{&;&;#z11&/mmK&@&@#{22&3&7&7&D&D#{22&3&7&7&D&D!+s33 0&,,..&88*.KK(..00G;;*/K%0z"" G!)4WXX%1<]^^'5@_ ` `%1<Z[[%-8[\\'/:] ^ ^&/:WXX L 2;<;M;M;O;OQR1S1S  --K%zz+66# "AAANN&1'&:'('27';&1$&7$%$ $     $&8,BL#Q#QL'3  *5+,+6w+?*5d*;()( (      $fs7||3OJJw''-2E(1%(8(8 @ @$	9-4Y-?	**%G 'F9 LT]innOX+FnGGGY]G T#..0A>/R.SS 9TTu]?S?STTT#F>!3D3D#F#FZ *.**#!&) +5 + + '#x((	 &'
 "&!&) ", " " '#x((	 X  U7<W2XYY"$'')U)Uen)U)U)U"U"UY&4;....'-@@$$W%7888[m	9 m	9r   c                    d}|                     d          }t          |          D ]}|                    dd| dd          }g d}ddg}d	d
ddd}|                    dddi          D ]V}	|	                    d          }
i }ddi}|	                    d          D ]}|                    dd          }|j        r|j                                        nd}|||<   ||v rD||                                dk    rd}n|                                dk    rd}t          |t                    rd|v r|                    dd
          }||v rt          |          }n|dv r|                    |          }|||<   |
r|                    d|
i          nd}|s|                    ddi          }|rd t          |          D             }d t          d!           |d"<   t                              |dd#$                              dd%          |d&<   t                              |dd#$                              dd%          |d'<   |                    d(d)d*i          }d                    d+ |j        D                       |d,<    |j        d.i |}t%          |d-          }|                    |j                   XdS )/uW   
        Конвертирует макрос 'Сводная таблица'
        ul  
        <div        NOTE: 
            id="{macro_id}"
            data-id="{data_id}"
            class="macros-panel pivot-table"
            contenteditable="false"
            original-data-macro-parameters='{original_params}'
            data-macros-parameters='{params}'
            data-rendered="true"
            data-macros="pivottable"
        >
            <div data-layout="default" class="extension-container" contenteditable="false" data-id="{data_id}">
                <span role="img" aria-label="Макрос Сводные таблицы" data-id="{data_id}">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewbox="0 0 24 24" width="16" height="16">
                        <path d="M22,15h2v7h-7v-2h5v-5Zm2-10v6.731l-2-1.976v-.755H7v11h4.738c.033,.036,.057,.078,.092,.113l1.887,1.887H0V5c0-1.654,1.346-3,3-3H21c1.654,0,3,1.346,3,3ZM2,5v2h3v-3H3c-.551,0-1,.448-1,1Zm3,4H2v11h3V9Zm17-2v-2c0-.552-.448-1-1-1H7v3h15Zm-9.715,9.292c-.38,.391-.38,1.025,0,1.416l2.715,2.792v-2.5h2c1.654,0,3-1.346,3-3v-2.023h2.455l-2.756-2.711c-.386-.386-1.012-.386-1.398,0l-2.756,2.711h2.455v2.023c0,.552-.448,1-1,1h-2v-2.5l-2.715,2.792Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="{data_id}">
                    <span class="excerpt-title" data-id="{data_id}">Сводные таблицы</span>
                </span>
                <span class="macros-actions" data-id="{data_id}">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="{data_id}">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path _ngcontent-aiw-c17="" fill="var(--color-gray-222, #222)" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id="{data_id}">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="var(--color-gray-222, #222)" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="var(--color-gray-222, #222)" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div data-fabric-macro="null" data-macro-body="" class="ak-renderer-wrapper" contenteditable="true" data-id="{data_id}">
                {content}
            </div>
            <div class="macros-preview" data-id="{data_id}"></div>
        </div>
        r  r  r  r  )r   r  r  r  r   collapseAll
cumulativedecimalsnumberaccuracyr  r   rZ   r  )r  r  zApostrophe (')z	Space ( )r  r  zpivot-tabler.  r  showrawdataFr   rU  Nr  Tr{  u   ‚)decimalseparatorr  r8  r-  c                 2    i | ]}d | t                      S r7  r9  r:  s     r   r   z<ConfluenceAPIImport._convert_pivot_table.<locals>.<dictcomp>0  r;  r   zpivot-table-r  r  r  r  r<  rx  rF  r  r  zoriginal-tablec              3   4   K   | ]}t          |          V  d S r!   r7  r  s     r   r(  z;ConfluenceAPIImport._convert_pivot_table.<locals>.<genexpr>>  r>  r   r  r  r   )r  r  r   r2  rG   r  r  rj  r  r   r   r:  r?  r
  r  r   rc  r9  r   r;  r<  )r%   rK  r  re  r@  r  rA  rC  rE  pivot_tabler  rx  rF  ro  rH  rI  rL  rA  rR  rS  rK  s                        r   r  z(ConfluenceAPIImport._convert_pivot_table  s   (T 

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

 !	
 
 (001FyZgNh0ii 5	9 5	9K"}55H OuF %--n== 1 1"YYy"55
49JHej..000D.9
+//*"((**f44&*$**,,77&+!+s33 F8L8L&1&9&9%&E&E!Z//&)+&6&6#'HHH&3&7&7&D&D%0z"" LT]innOX+FnGGGY]G S#..0A=/Q.RR 9TTu]?S?STTT#E.2C2C#E#EZ *.**#!&) +5 + + '#x((	 &'
 "&!&) ", " " '#x((	 X  U7<L2MNN"$'')U)Uen)U)U)U"U"UY&4;....'-@@$$W%7888k5	9 5	9r   c                 0   dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       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="r  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="r  u   ">Макрос "Вкладки" | {tab_name}</span>
                </span>
                <span class="macros-actions" data-id="r  a  " data-macros-action="macros-edit">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-action macros-delete" data-id="aA  " data-macros-action="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-id="zG">
                {content}
            </div>
        </div>
        rR  r-  deckr.  r/  rU  c              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  rn  s     r   r(  z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>p  s]        u{{3**++q00 C##0000 r   rp  tabLocationcardc              3      K   | ]A}t          |                    d d                    dk    )|                    d d          V  BdS r  r  rn  s     r   r(  z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>z  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headerStyler8  Nr  )r-  r  r  r  r  c              3   4   K   | ]}t          |          V  d S r!   r7  r  s     r   r(  z4ConfluenceAPIImport._convert_tabs.<locals>.<genexpr>  s(      +\+\WCLL+\+\+\+\+\+\r   )rF  tab_namer  r  r  )r  r2  rG   r  r=  r  r:  r   r9  r
  r  r   r   rc  r   r  r;  insert_after)r%   rK  rL  re  r_  deck_macro_parametersdeck_paramstab_locationtabsr  rb  card_macro_parameterscard_params
card_lable
tab_paramscard_macro_id
card_macro	tab_macrodeck_macro_id
deck_macror  tabs                         r   r  z!ConfluenceAPIImport._convert_tabsD  s   $ "mm	$ $ P[}}$ $ ;F--$ $ 9D$ $ ;F--$ $" 8C}}#$ $$ ;F--%$ $. IT/$ $@ OZmmA$ $ $L  ((9JF8S(TT =	" =	"D$(HH-Db$I$I!  288==    K
 '??=99LD$T]]7CTV\B]]%^%^__ (/ (/4(,1H"(M(M%" # #!6!<!<S!A!A# # #  
 )__W55
%/&%.!&""#q&/;v/E/E<%+#* 
 !% 9 9WdnY^^?M2R^SSSjn
! !*/5%/  "0 " "J  	/ -#'::ju:#M#M#U#UVY[c#d#d%/$&GG+\+\
H[+\+\+\$\$\ $  
 &! !I KK	... HH_55MS`j.NOOOfjJ V&^^E:KV9T^UU
 "d "''Q000q'8 " "C((---!GG{=	" =	"r   c           	         d}|                     dddi          D ]B}|                    d          }|                    dd          }t          d	 |                    d
          D                       }|                    dd          }|                    d|          }	t	          |                    |	|	pd|                                pd          d          }
t          j        |
          }|                    |
j	                   |r|
                    d|i          nd}|s|
                    ddi          }|r|                    |j	                   DdS )uF   
        Конвертирует макрос 'Статус'
        a  
        <span
            data-macros="wiki-status"
            text="{text}"
            color="{color}"
            class="statusView-content-wrap"
            contenteditable="false"
        >
            <span>{text_span}</span>
        </span>
        r,  r-  r  r.  r8  r/  rU  c              3   F   K   | ]}||                     d d          V  dS rl  rm  rn  s     r   r(  z6ConfluenceAPIImport._convert_status.<locals>.<genexpr>  J        C##     r   rp  colourr     Задать статусneutral)r  	text_spanrj  r  N)r2  rG   r  r=  r   r9  rj  r  r;  r<  r:  )r%   rK  rL  re  r#  r  r  rF  rj  r  rK  new_tag_viewrL  s                r   r  z#ConfluenceAPIImport._convert_status  s   
 ''6G5R'SS 	> 	>Cww//H"ww'>CC  -33C88    F
 JJx,,E::gu--D#"A&A++--49   
  G  9W--L
 W/000KS]innOX+FnGGGY]G N#..0A8/L.MM >$$\%<===?	> 	>r   c                 n   d}|                     dddi          D ]}|                    d          }|                    dd          }t          d	 |                    d
          D                       }|                    dd          }t	          |                    ||pd          d          }	t          j        |	          }
|                    |	j                   |r|	                    d|i          nd}|s|	                    ddi          }|r|                    |
j                   dS )uF   
        Конвертирует макрос 'Handy Status'
        a  
        <span
            data-macros="wiki-status"
            text="{text}"
            color="neutral"
            class="statusView-content-wrap"
            contenteditable="false"
        >
            <span>{text_span}</span>
        </span>
        r,  r-  zstatus-handyr.  r8  r/  rU  c              3   F   K   | ]}||                     d d          V  dS rl  rm  rn  s     r   r(  z<ConfluenceAPIImport._convert_status_handy.<locals>.<genexpr>  r  r   rp  Statusr  )r  r  r  N)
r2  rG   r  r=  r   r9  r  r;  r<  r:  )r%   rK  rL  re  r#  r  r  rF  r  rK  r  rL  s               r   r  z)ConfluenceAPIImport._convert_status_handy  sv   
 ''6G5X'YY 	> 	>Cww//H"ww'>CC  -33C88    F
 ::h++D#"A&A     G  9W--L
 W/000KS]innOX+FnGGGY]G T#..0A>/R.SS >$$\%<===;	> 	>r   c                    ddl m} t                      }t                      }t	          |                     d                    }	 |D ]}|dk    rt          |          }t          |          }	|dk    r|	                    d          g}
n8|dk    r2d |	                    d	                              d
          D             }
t                      }t                      }|
D ]D}|                    dd                              dd          } ||dd          }	 t          j
                            dddd| dgdd|gddd| dggddg          }|s1t          
                    |          }|                    d           n7# t          $ r*}t                              d| d|            Y d }~d }~ww xY w|j        j        |vrW|                    |j        j                   |                    |j        j        |j        j        |j        j        dd           F|r|                    dd|g           ||d<   |d k    rwt          |          }t          |          }	|dk    r|	                    d          g}n8|dk    r2d! |	                    d	                              d
          D             }t                      }t                      }|D ]}|d"k    r|r|}n3t          j                            d#d$d%| d&gd'd$d(| dggddg          }|st                              d)| d*           a|j        j        |vrW|                    |j        j                   |                    |j        j        |j        j        |j        j        d+d           |r|                    d,d|g           ||d,<   n# t,          $ r Y nw xY w||fS )-Nr   translitr  r  z\=r  inc                 8    g | ]}|                     d           S r  r  )r   r  s     r   r  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>  s$    !^!^!^u%++c"2"2!^!^!^r   z()r   r  #rU  ruTlanguage_codereversedORaliasr  r  r   r:   r  r   r   u*   Не удалось создать тег r.  r   )r   r:   r   	classNamer  INr   c                 8    g | ]}|                     d           S r  r  r   s     r   r  z5ConfluenceAPIImport._bql_from_cql.<locals>.<listcomp>>  s"    !V!V!V1!''#,,!V!V!Vr   zcurrentSpace()r   r   r  r  rz  r  u.   Не удалось найти проект «   »r  r   )transliterater  r   r  iterr=  r:  r  r   rE   r   rG   r   r   rt   ri   r   r#   r   r   r:   r  StopIteration)cqlrA   r   r  bql_listbql_dict	cql_partscql_partopr   r  tags_ids	tags_listr  label_aliasr#  rN  r  
parent_idsparent_listr   ru  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                 z   d}|                     ddi          D ]}|                    d          }t          |                    d                    }	 |                    d          }t	          d |D                       }	|                     |	                    d	d
          | 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 Hx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.  r8  r/  rp  c                 :    g | ]}|                     d d          S r^  r  rm  r   ps     r   r  zAConfluenceAPIImport._convert_content_by_label.<locals>.<listcomp>  $    GGG1qwwsAGGGr   r  rU  r  defaultr  FTr  Truer  r  
showLabelsT	showSpacer}  r  )
r]  modelr  r  r  r  r  r  bqlr  ui   Не удалось конвертировать макрос «Содержимое по меткам»     с параметрами: zERR-0034r  rZ   r  r  z:Truez:truez:Falsez:falser  r  N)r2  rG   r   r=  r  r  rA   r   r4   r  r   r9  r   r:  r;  r<  )r%   r  rK  rL  re  r#  r  r  all_parametersrF  r  r  r  rK  rL  s                  r   r  z-ConfluenceAPIImport._convert_content_by_label^  s   < ''/@BR.S'TT (	9 (	9Cww//H"377+B#C#CDD!1!7!7!<!<GGGGGHH $ 2 26::eR3H3H$JZ [ [X&%%zz)U;;?UUvzz%4455"(**\4"@"@DZ"Z!'K!>!>BX!X#)$LL44 

))F  AH F F3CF F)w * 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8Q(	9 (	9s   C$D;;%E#c                 
   dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       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                      }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_i }	 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.          $ r2}| j                            d| d5| d6| d7|d38           Y d%}~d%S d%}~ww xY wd%S )9u[   
        Конвертирует макрос "Свойства страницы"
        aS  
        <div
            class="macros-panel details{details_hidden}"
            contenteditable="false"
            data-macros="details"
            data-macros-parameters="{parameters}"
            data-id="{macro_data_id}"
        >
            <div class="extension-container" contenteditable="false" data-layout="default" data-id="ui   ">
                <span aria-label="Макрос Свойства страницы" role="img" data-id="  ">
                    <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewbox="0 0 24 24" width="16" height="16">
                        <path d="M22,15h2v7h-7v-2h5v-5Zm2-10v6.731l-2-1.976v-.755H7v11h4.738c.033,.036,.057,.078,.092,.113l1.887,1.887H0V5c0-1.654,1.346-3,3-3H21c1.654,0,3,1.346,3,3ZM2,5v2h3v-3H3c-.551,0-1,.448-1,1Zm3,4H2v11h3V9Zm17-2v-2c0-.552-.448-1-1-1H7v3h15Zm-9.715,9.292c-.38,.391-.38,1.025,0,1.416l2.715,2.792v-2.5h2c1.654,0,3-1.346,3-3v-2.023h2.455l-2.756-2.711c-.386-.386-1.012-.386-1.398,0l-2.756,2.711h2.455v2.023c0,.552-.448,1-1,1h-2v-2.5l-2.715,2.792Z"></path>
                    </svg>
                </span>
                <span class="extension-title" data-id="r  uy   ">Свойства страницы</span>
                </span>
                <span class="macros-actions" data-id="U">
                    <span class="macros-edit" style="margin-right: 7px;" data-id="  ">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span class="macros-delete" data-id="J  ">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </div>
            <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-macro-body="" data-id="za">
                {content}
            </div>
            <div class="macros-preview" data-id=" "></div>
        </div>
        r-  detailsr.  r8  r/  Nonerp  c                 :    g | ]}|                     d d          S r  rm  r  s     r   r  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  s$    "K"K"Kq1773??"K"K"Kr   ud   Не удалось конвертировать макрос «Свойства страницы» r  zERR-0035r  r   hiddenFr  )r   r  r  r  r  rU  c                 ,    g | ]}t          |          S r   r7  r   cs     r   r  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  s    #A#A#AqCFF#A#A#Ar   z details-hidden)macro_data_idr  r  details_hiddenr  r   Nc              3   4   K   | ]}t          |          V  d S r!   r7  r  s     r   r(  z7ConfluenceAPIImport._convert_details.<locals>.<genexpr>  s(      *X*XG3w<<*X*X*X*X*X*Xr   r  rR  u5   Отсутствует таблица свойств.trr  confluenceTdc                 .    g | ]}d |j         d          S )key_details r   )rc  )r   ths     r   r  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  s6     " " " 8r{1~77" " "r   confluenceThc                 V    g | ]&}d                      d |j        D                       'S )rU  c              3   @   K   | ]}|d k    t          |          V  dS r  Nr7  r  s     r   r(  zBConfluenceAPIImport._convert_details.<locals>.<listcomp>.<genexpr>  s,      II1qDyyAyyyyIIr   )r   rc  )r   tds     r   r  z8ConfluenceAPIImport._convert_details.<locals>.<listcomp>  sE     " " " IIIIIII" " "r   r  c           
          g | ]b}d |                     ddi          j        d          d                    d |                     ddi          j        D                       fcS )r  r  r  r.  r   rU  c              3   @   K   | ]}|d k    t          |          V  dS r  r7  r  s     r   r(  zBConfluenceAPIImport._convert_details.<locals>.<listcomp>.<genexpr>)  s4      'w'w1mnrvmvmvAmvmvmvmv'w'wr   r  )r:  rc  r   )r   r  s     r   r  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-0037r?  )!r  r2  rG   r   r  r=  r4   r  r
  r  r   r   rc  r   r9  r   insertr<  r:  r;  r  rE   r  r   zipr  rh   ri   	macros_dbr   r#   macros_db_draftr   )r%   r  rK  rL  r  re  r  r#  r  r  rF  r  r  r  prmcontents_strrK  rL  
propertiescontents_table	first_row
second_rowrN  s                          r   r  z$ConfluenceAPIImport._convert_details  s(   % fqerer% % hsgtgt% % 9D% % ;F--% %" 8C}}#% %$ T_S`S`%% %. ;F--/% %@ {F  {H  {HA% %F 3>--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 (MMM**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
  	!&&((($*2(*G%/6!),',,...*08.0G+5<'	2.....   ))l  |C l l[bl lhil l)! *         	 	s>   .6D%%%EEQ
R!?RR!'BT+ +
U'5'U""U'c                    dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       d
t                       d}|                    ddi          D ]R}|                    d          }t          |                    d                    }	 |                    d          }t          d |D                       }	|                     |	                    dd          | 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                   Td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.  r8  r/  rp  c                 :    g | ]}|                     d d          S r  rm  r  s     r   r  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>x  r  r   r  rU  c                 6    g | ]}|                                 S r   r  )r   r  s     r   r  z@ConfluenceAPIImport._convert_details_summary.<locals>.<listcomp>z  s     UUU!AGGIIUUUr   headingsr   showCommentsCountFr  showLikesCountreverseSortpageSize   NsortByfirstcolumn)r  showCreatorshowLastModifiedr  showPageLabelsshowUnresolvedCommentsCountr  r  r   r  r  r  settingsParamsr  uv   Не удалось конвертировать макрос «Отчёт по свойствам страницы» r  zERR-0036r  r  r  r  r  r  )r  r2  rG   r   r=  r  r  rA   r   r   r   r4   r  r
  r  r   r   r9  r:  r;  r<  )r%   r  rK  rL  re  r#  r  r  r  rF  r  r  r  r  r  rK  rL  s                    r   r  z,ConfluenceAPIImport._convert_details_summaryI  s   $ "mm$ $ fqerer$ $ zE  zG  zG$ $ 9D$ $  ;F--!$ $$ 8C}}%$ $& T_S`S`'$ $0 ;F--1$ $B {F  {H  {HC$ $D 3>--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$JZ\c\j k k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H44%Ic                    dt                       dt                       dt                       dt                       dt                       dt                       dt                       dt                       d	t                       d
}|                    ddi          D ]}|                    d          }t          |                    d                    }t	          |                    t          j                            |                    d          }|r|	                    d|i          nd}|s|	                    ddi          }|r|
                    |j                   dS )uD   
        Конвертирует макрос "Якорь"
        a:  
        <span
            class="macros-panel anchor-macros"
            contenteditable="false"
            style="display: inline-flex; flex-direction: column; position: relative;"
            data-param-name="{param_name}"
            data-rendered="true"
            data-macros="anchor"
            data-id="z'"
        >
            <span data-id="r  ur  " role="img" aria-label="Макрос Якорь">
                    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewbox="0 0 204.851 204.851" style="enable-background: new 0 0 204.851 204.851;" xml:space="preserve" width="16" height="16">
                        <path xmlns="http://www.w3.org/2000/svg" style="fill: #010002;" d="M139.518,128.595l16.834,16.336c0,0-20.644,29.877-42.725,30.473 c0.479,0,0.117-84.092,0.039-104.472c14.694-4.797,25.402-18.182,25.402-34.117c0-20.009-16.697-36.218-37.273-36.218 c-20.615,0-37.312,16.209-37.312,36.208c0,15.671,10.376,28.929,24.748,33.961l0.098,104.277 c-26.643-1.837-42.061-27.474-42.061-27.474l17.997-17.41L0,120.505l9.887,63.301l17.362-16.795 c15.036,12.105,32.017,37.244,72.876,37.244c51.332-1.309,63.184-28.939,76.344-39.804l18.993,18.514l9.389-63.907 L139.518,128.595z M82.558,36.208c0-10.298,8.608-18.661,19.218-18.661s19.257,8.363,19.257,18.661 c0,10.327-8.647,18.681-19.257,18.681S82.558,46.535,82.558,36.208z"></path>
                    </svg>
                </span>
                <span data-id="u^   " class="extension-title">Якорь
                    <span class="excerpt-title" data-id="z>">| {param_name}</span></span>
                <span data-id="r  u  " class="anchor-copy" role="img" title="Скопировать ссылку" area-label="Скопировать ссылку">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="14" height="14">
                            <path d="M22,4.145,17.986,0H10A3,3,0,0,0,7,3V4H5A3,3,0,0,0,2,7V24H18V19h4ZM16,22H4V7A1,1,0,0,1,5,6H7V19h9ZM9,17V3a1,1,0,0,1,1-1h6V6h4V17Z"></path>
                        </svg>
                    </span>
                    <span data-id="a  " class="macros-edit" style="margin-right: 7px;">
                        <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                            <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                    <span data-id="a   " class="macros-delete">
                        <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                            <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                            <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                        </svg>
                    </span>
                </span>
            </span>
        </span>
        r-  anchorr.  r8  r  )rH  r  N)r  r2  rG   r   r   r9  r/  r0  quoter:  r;  r<  )	r%   rK  rL  re  r#  r  macro_param_namerK  rL  s	            r   r  z#ConfluenceAPIImport._convert_anchor  s   ' "mm' ' (MM' ' !,' '  !,!' '" ;F--#' '$ !,%' '& %0MM'' '0 %0MM1' ': %0MM;' ' '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t                       dt                       dt                       dt                       dt                       dt                       dt                       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.  r8  r/  z	(?<!\\)\|r^  r  jqlQuery\rU  z\|\|?r  z&&?ANDserverIdr  	columnIdsr   rA   r   Nr   r   rz  r2  T)r   r4   r   r   )
logic_typer:   r   responsiblerA  priorityr  r<  rC  rF  deadlineFmaximumIssues   )bordercolumns	itemsSizer5  
filterNamefilterParentNameuserFilterIduseCustomFilterr  r  r  r  r  r  r  )r  r2  rG   r5  r=  r  r   subr  r   convert_fieldr   r   r4   rh   ri   r   rE   CmfBqlFilterr   rz  r   r   r   r
  r  r   r9  r:  r;  r<  )r%   r  rK  rL  re  r#  r  r  rF  ro  rF  r#   	jql_queryr  r  
column_ids	column_idr(  r  	tf_ext_idtfdefault_columnsr  rK  rL  s                            r   r  z(ConfluenceAPIImport._convert_task_filter  s    "mm	  8C}}  R]Q^Q^  9D  8C}}  9D $ ;F--%  > ''/@&.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   =H
H>$H99H>c                    t           j                            dd|gg dg dgg d          D ]H}	 |j        d         d         d	         r|                    d
|j        d         d         d	         i          D ]}d                    d |j        D                       }t          |j                  dk    r\t                      |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 GxY wd S )Nr   r   )r;  r   T)rz  r   N)rz  r  r  html_contextr  r   inlineProperties	markerRefzdata-refr.  rU  c                 ,    g | ]}t          |          S r   r7  r  s     r   r  z@ConfluenceAPIImport._convert_inline_comments.<locals>.<listcomp>n  s    .L.L.L!s1vv.L.L.Lr   r	  zdata-idzdata-object-idzinline-highlightr  inlineCommentzdata-mark-annotation-type
annotationzdata-mark-typeTr  r   uO   Не удалось конвертировать inline комментарий r.  zERR-0020r  )rE   r@  r   rz  r2  r   r   r   r  r  r3  r   unwrapr  r   r4   r  r  )r%   r  rK  r|  r#  tag_contexts         r   r  z,ConfluenceAPIImport._convert_inline_comments[  s   (--4%&&&///
   . 
 
 "	J "	JGJ*<89KL[Y 7(11#-w/F|/TUg/hit/u"v  2  x  x 7 7&(gg.L.Ls|.L.L.L&M&Mw~..&883>==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*E5c                 z   dd l }|                    dddd| j        j         d| j        j         d| d| d| d	gd
d
t          dd          t          dd                    }| j                            | j         d|j         d| j        j         d| d| d|            | j        	                                 |S )Nr   z/usr/bin/python3z	manage.pyshellzefrom modules.confluence.api_import import ConfluenceAPIImport; cmf_import = models.CmfImport.get(id='z%', fields=['*', 'plugin']); args = ('rY   z', z]); ConfluenceAPIImport(cmf_import.plugin.confluence, cmf_import).run_threaded_process(*args);Tz"/var/log/eva-import-subprocess.logr  z&/var/log/eva-import-subprocess.err.log)	close_fdsstart_new_sessionstdoutstderru0    Запущен новый процесс (PID: z): project=z, item_type=z, queue_name=z, max_items=)

subprocessPopenr4   r   ru  r	  r;   r  pidr'  )r%   	item_type
queue_namer  r&  r)  s         r   _start_processz"ConfluenceAPIImport._start_process  sD   "Kn9=9Kn n LOn n1:n n@Jn nOXn n n "<dCC@$GG   
 
 	~ > >tx > >|> >4=> >$> >2;> >	
 	
 	

 	""$$$r   c                 ~   t          | dt                                           | j                  }d}|                     | j         d|           5  | j        d         d         D ]}| j        |         }|dk    r|d         d	k    r"|dk    rx	 | j        	                    |d
          }t          d |                    d          D                       }|| j        k    r| j        }	n|}	||	z  }|	|d<   n# t          $ r Y n	w xY w|dz  }|                    |           	 d d d            n# 1 swxY w Y   ||fS )Nz_queue.r   db_dirr   u%    Наполнение очереди r  r  r   r  r1   r?  c              3      K   | ]}d V  dS r  Nr   r  s     r   r(  z>ConfluenceAPIImport._build_processing_queue.<locals>.<genexpr>  s"      +[+[!A+[+[+[+[+[+[r   zversion_*.jsonr4  r  )r   r  getpidrq   r   r  r  r  r   r   r  globrp   r   rC  )
r%   r)  	item_namer  
item_countr   r  rS  r  r4  s
             r   _build_processing_queuez+ConfluenceAPIImport._build_processing_queue  s   &33biikk33(
 
 


 
ZZ4>[[PY[[\\ 	- 	-"o.@A%H - -
#4Z@	))l6.Bf.L.L	))
'+'8'A'A*j'Y'Y(++[+[|7H7HIY7Z7Z+[+[+[([([(4+KKK262R//2?/"&99
>Q%:;;$    !OJ|,,,,)-	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-. :%%s7   <D0A&C87D08
DD0DD00D47D4c                    |                                 }|                                }|dk    rd}d}d}|                                D ]:}	|	d         dk    r|	d         }
|
r!||	d         z  }||
d         z  }||
d         z  };||d<   ||d<   ||z   |d	<   |dk    r0|d
         }|dk    r||z  }nt          |          }||d<   ||z  |d<   t	          |d
         d          \  }}t	          |d          \  }}| j        j                            | j         d| dt          |          ddt          |          dd|d	           | j        j                            | j         d| d|d          d|d          d|d	          	           | j        j                            | j         d|d         dd| d           | j        j                            | j         d|d         dd           d S )Nr   r   r  	completedre  duration_secr  r  r  total_execution_time_secitems_per_secondavg_execution_time_secr   r   r  u    завершена за r   r   r   u    Обработано u&    (успешно/неуспешно): r+  u    из u&    Скорость обработки: .3fr  u   /секuM    Среднее время обработки одного элемента:     сек.)
	get_statsget_all_resultsr   floatr   r4   rh   r   r  r   )r%   r  r)  r3  r  all_resultstotal_durationcompleted_countfailed_countitem_resultre  total_execution_timer:  r   r   r   r   s                    r   _log_processing_statsz)ConfluenceAPIImport._log_processing_stats  s   $$&& 0022	!!NOL*1133 5 5x(K77$X. 5"k.&AAN#vk'::O F8$44L!0E+*E(O,|;E'N""',-G'H$'!++'69M'M$$',_'='=$,<()2@?2R./!%(B"CTJJy!)R00##~ C C9 C C5zzBC C #GBC C3:BC C	
 	
 	
 	##~ L LY L L[!L L$)(OL L;@>L L	
 	
 	
 	##~ B B'(AB B/8B B B	
 	
 	
 	##~ = =-.<= = =	
 	
 	
 	
 	
r   c           
      
    ddd}|                     |          }| j                                        }t          j        }t          j        }t          j        }d}|                     ||          \  }	}
| j        j        	                    | j
         d|
 d| d| d           g }|	                                }	 |rt          |          dk    r| j                                        rng }|D ](\  }}}|                                }||                    |||f           6|dk    r|d	z  }| j        j                            | j
         d
|j         d|            |	                    |j                  }|dk    r+| j        j                            | j
         d|            d}||k    r'| j                            d| dd           t(          | j                            | j
         d
|j         d           t-          d|d	z
            }*|}|sRt          |          |k     r>|t          |          z
  }|	                                }|dk    rd}nt1          j                     t3           fd|D                       }t-          d||z
            }|dk    r||z  }|dk    rd	}t5          ||          }||z  }||z  |z  }|dk    r|}|||z  z
  }t7          |          D ]}}|dk    r nt||z  |||z  k     rd	ndz   }||z   }t5          |||          }||z  }|                     ||	j        |          }|                    ||t1          j                    f           ~t1          j        d           |s|	                                }|t          |          dk    t          |          dk    rdd l}|D ]+\  }}}	 |                                  # tB          $ r Y (w xY w|D ]S\  }}}	 |"                    d           # |j#        $ r) 	 |$                                 n# tB          $ r Y nw xY wY Pw xY w| %                    |	||           |	&                                 d S # t          |          dk    rdd l}|D ]+\  }}}	 |                                  # tB          $ r Y (w xY w|D ]S\  }}}	 |"                    d           # |j#        $ r) 	 |$                                 n# tB          $ r Y nw xY wY Pw xY w| %                    |	||           |	&                                 w xY w)N   документов!   версий документовr1   r   r   r  r  u    с ограничением u,    одновременных процессаr  u    Процесс (PID: u&   ) завершился с кодом: u<    В очередь возвращено элементов: FuX   Превышен лимит аварийных завершений процессов (u`   ). Процессы стабильно падают. Проверьте код процесса.r  r  u%   ) завершился успешноTc              3   6   K   | ]\  }}}|z
  d k     |V  dS )Z   Nr   )r   r  r  
start_timenows       r   r(  z>ConfluenceAPIImport._run_parallel_processes.<locals>.<genexpr>D  sE       . .&:a
 #j 0B66 "6666. .r   r\  r   rg  )'rG   r4   rO   rd   IMPORT_THREADSIMPORT_OBJ_CNTIMPORT_PROCESS_RETRYr5  rh   r   r  rm  r  r`  pollr   ri   r(  recoverr  RuntimeErrorr;   r  qsizer   r  r  r  r+  r   sleepr&  	terminater   waitTimeoutExpiredkillrG  cleanup)!r%   r)  
item_typesr3  max_processesthreads_per_processmax_items_per_processmax_allowed_crashesconsecutive_crashesr  r4  active_processesis_queue_emptystill_activer  assigned_limitrN  return_coderestored_countslots_to_fillcurrent_qsizestarting_bufferuncovered_itemsneeded_processesprocesses_to_start
base_limitr   r  sharedynamic_limitr&  r  rO  s!                                   @r   _run_parallel_processesz+ConfluenceAPIImport._run_parallel_processes  sg   *:
 

 NN9--	99;;$3 & 5 %9!%!=!=i!S!S
J##~ g g: g g	 g g+8g g g	
 	
 	

 #))++A	!$ h8,<(=(=(A(A?,,.. !5E $R $R1A~z"#&&((K"*$++Q
,KLLLL '!++/14/ O2::#'> !U !U !U !UGR!U !U  
 .8-?-?-F-FN-11 $ 6 > >'+~  %D  %D  tB  %D  %D!" !" !" 2726III $ 9 9%E  @S %E %E %E/9 !: !" !" !"
 '3 2  J !O//#'> u u u u u  
 36a9Lq9P2Q2Q//#/ % 5Y#.>*?*?-*O*O$1C8H4I4I$IM %/$4$4$6$6M$)))-"ikk +. . . . .>N. . . + + +.a1P*Q*Q*Q.. 0?BU/U,/14434 014]DT1U1U. *9<N)NJ*48K*KOb)bJ)Q-@
 )8:HZ;Z([I &++=%>%> 
Y 
Y#2a#7#7$)E)26H)HRSW`cuWuRvRvQQ|}(~0:U0B03M?Ti0j0j /= @$($7$7	:?Ta$b$b 0 7 7M49;;8W X X X X
1% 8%/%5%5%7%7NQ % h8,<(=(=(A(AT #$$q((!!!!  0  GAq!$     0 ! !GAq!!r****%4 ! ! !!FFHHHH( ! ! ! D!! &&z9iHHH     - #$$q((!!!!  0  GAq!$     0 ! !GAq!!r****%4 ! ! !!FFHHHH( ! ! ! D!! &&z9iHHH    s   ;K7Q: O''
O43O4 P
Q
"P76Q
7
QQ
QQ
	Q
: UR0/U0
R=	:U<R=	=U	S U 
T	+T ?T	 
T
T	TT	UT	/Uc                      i d d fd	 j         j        dk    rd}n& j                            d          }|r|d         nd} |d	
           S )Nc                 f    | | n|}d t          j        dt          |                    D             S )Nc                 |    g | ]9}|                                 rt          |          n|                                :S r   )isdigitr   rj  r   parts     r   r  zRConfluenceAPIImport._prepare_content_tree.<locals>.natural_key.<locals>.<listcomp>  sG        "\\^^=D			  r   z(\d+))r5  r=  r   )r  r  sort_bys      r   natural_keyz>ConfluenceAPIImport._prepare_content_tree.<locals>.natural_key  sC    "*"6hhEG HXs7||<<   r   順 Fc                    g }|r| dfn| f}|D ][}j                             |g           D ]=}j        |                                         }|v |d<   |                    |           >\|                    fd           |}|D ]}	|dz   }
|
|	d<    |	d         |
          }|r;| dk    rdd	i}n&j                            |           }| v |d<   ||d<   ||d
<   || <   |S )Nr  is_selectedc                 4     | d         | d                   S )Nr  r  r   )r  rz  s    r   r$  zOConfluenceAPIImport._prepare_content_tree.<locals>.build_tree.<locals>.<lambda>  s    KKj8I5QX>,Z,Z r   rO  r_   ordernor   r  Tr   )r  rG   r  r  r   r  )r  r  is_rootr   parentsr   r  
child_metacurrent_ordernor  next_ordernoparent_meta
build_treecontent_treerz  selected_content_idsr%   s               r   r  z=ConfluenceAPIImport._prepare_content_tree.<locals>.build_tree  s^   H18Jy)--ylG! 0 0 $ 7 ; ;FB G G 0 0H!%!6x!@!E!E!G!GJ08<P0PJ}-OOJ////0
 MMZZZZM[[[ &O! H H.3#/i ",*U4[,"G"G 6&&#0$"7KK"&"7";";I"F"FK1:>R1RK.-4K	**2J'*5Y'""r   r/   r  r  r   T)r  )r{  F)r  r  r   rG   )r%   r  r  r  r  r  rz  s   ``  @@@r   _prepare_content_treez)ConfluenceAPIImport._prepare_content_tree  s    	 	 		# 	# 	# 	# 	# 	# 	# 	# 	# 	#< &-77II**:66H*2>I
9d++++r   c           
      0   |                                 D ]\  }}|d         s|                    d          }|d         }	 |dk    s|                    d          r| j        }n| j                            |d          }t	          t
                    |         }| j         d| }	|                    |	dd	gd
          }|s6| j                            | j	         d| d| j         d|           | j        }|D ]}
|
d         s|
d         }| j                            |
d         d          }t	          t
                    |         }| j         d| }|                    |g dd
          }|s,| j                            | j	         d| d| dd|           |j
        r*||_        |
d         |_        |                    d
           dd|g}|g dg}t
          j                            |dgd
          }t
          j                            |dgd
          }t#          |p|          |_        |j        rd
|_        nZt
          j                            |dg          }t
          j                            |dg          }t#          |p|          |_        |j        dk    r|j        rd
|_        |                    d
           t-                       # t.          $ r, | j                            | j	         d| d dd
!           Y w xY wd S )"Nr}  r  r   r  r  r/   r   tree_node_is_branchhas_children_archivedT)r   r   include_archivedu!    Не найден предок 'u>   '. Потомки будут помещены в корень zERR-0120r^  r  r   )r   rI  r   r  u#    Не найден потомок 'u   ' у предка 'rZ   zERR-0003r  r   rI  r^  )r  r^  Tr  )r   r   r  r  r  u7    Не получилось привязать ноду zERR-0024r  )r_  rG   r  r  r  rE   rA   r4   r  r  r   rI  r  r   r/   r  r0   rn   r  r  r  show_archiverC  r   )r%   r  r  r  parent_typer   rI  parent_model_nameparent_modeltree_parent_ext_idr  r  child_model_namechild_modelchild_ext_idr  tree_parent_filterarchived_filterarchived_documentsarchived_foldersr  r  s                         r   _process_content_treez)ConfluenceAPIImport._process_content_tree  s   &2&8&8&:&: [	 [	"I{}- %//&11K":.HT&&+//-*H*H&"&"2KK(,(;(?(?]([([%#'<<0A#BL,0,<)K)K	)K)K&"."2"2113  *. #3 # #K ' 711#~ m mPY m mZ^Zjm m'1%6	 2    '+&6"* 5 5J%m4 ! )$/H'+':'>'>z&?QS`'a'a$"&v,,/?"@K&*&6#D#D(#D#DL'OO+VVV)- ,  E
 ! !11#~{{RZ{{ox{{{'1%5 2   
 !, 5,7)(29(=

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   ))~ii^gii)*!	 *     k[	 [	s   JK2LLc                    g d}|ddgz   }t           j                            ||          D ]]}|j        rTg |_        |D ]}t          ||d           |j        j        dv rd|_        | j	        |_	        |
                    d           ^d	S )
u   
        Сброс настроек правил схемы прав доступа

        Args:
            perm_scheme (CmfProjectPermScheme): Схема проектных прав доступа
        )access_local_useraccess_owneraccess_owner_assistantaccess_authoraccess_spectatorsaccess_executorsaccess_responsibleaccess_list_owneraccess_project_owner_assistantaccess_project_spectatorsaccess_project_executorsaccess_sdesk_clientaccess_anonymousaccess_guestaccess_sharelink_anonymousproject_permissionaccess_members)r   r   F)PPP-DOC-DELETEzPPP-OBJ-DELETETr   N)rE   CmfProjectPermSchemeRuler   r   r  r"  r  r:   r  r4   r   )r%   perm_schemerule_bool_fieldsrule_fieldsrulefields         r   _reset_rulesz ConfluenceAPIImport._reset_rules  s    
 
 
" '*>@P)QQ388T_8`` 	, 	,D# ,&(#- 0 0ED%////*/3WWW)-D&"&/		d	+++	, 	,r   c                    g ddgg ddgdgdgdgdgg d	gd

}	 |                     |d         d           }|$| j        j                            d|            d S |D ]?}t          j                             |d          }|s&| j                            d| d| d|            d S t          j                             ||ddg          }|s&| j                            d| d| d|            d S |j        s d S |d         D ]W}| 	                    |          }	|	r|j
                            |	           4| j                            d| d| d|           X|d         D ]}
|
d         }| j        j        rd| j         d|
d          d}nd| j         d|
d          d}t          j                             dd d!| d!gdg"          }|s%t          j                             dd#|gdg"          }|rY|j        s||_        n||j        vr|j         | |_        |                    d$           |j
                            |           | j                            d%| d| d&|           |d'         rd|_        |                    d$           Ad S #  | j                            d(| d)|           Y d S xY w)*N)zPPP-DOC-CREATEzPPP-DOC-EDITzPPP-DOC-PUBLISHzPPP-DOC-TREEMOVEzPPP-OBJ-ORDERr  )zPPP-COM-ADDzPPP-COM-EDIT-OWNzPPP-COM-DELETE-OWNzPPP-COM-DELETE-ALLzPPP-ATT-CREATEzPPP-ATT-DELETE-ALLzPPP-PR-BROWSEzPPP-ATT-DELETE-OWNzPPP-PR-ADMIN)
rl  rm  rp  rq  rr  rs  rt  ru  rv  rw  r  u8   Не найдено соответствие права T)r:   r`  u    Не найдено право "u	   " для zERR-0059rr  r
   r  )r  r   r   u2   В схеме не найдено правило "rf  u)   Не нашли пользователя u    для прав zERR-0060r  r   r   r   r   r   r   r  r  r   u   Не нашли группу zERR-0061r  u>   Не удалось импортировать правило zERR-0063)rG   r4   rh   ri   rE   CmfProjectPermPermissionr  r  r   r   r  r   r3   r<   rA   r   r   r   r  )r%   	perm_dictr  mapping_permr  r  r  scheme_ruler   r   r   
group_namer   	group_objs                 r   _process_permissionsz(ConfluenceAPIImport._process_permissions>  s@    tss+,PPP23!1 2!5 6)*!5 6"$$2#3
 
U	&**9\+BDIIK"&../ujs/u/uvvv) I3 I3
6::#$( ;    O--[:[[PY[["' .   
 FF$=AA'+&!12 B  
 # O--mZmmbkmm"' .   
 FF"2 FF%g. 	 	D!--d33F #299&AAAA11jjj_hjj& + 2     'x0  E!&vJ, L!Id&6!I!I%+!I!I!I!Kd&6!K!K%-!K!K!K & 5 9 9 (&-f---@ (z !: ! !I % $*$9$=$=$*GZ#@$,: %> % %	 ! (/ M/5I,,#9+;;;2;2B/LF/L/LI,!4888#299)DDDD11dJddYbdd& + 2     [) 837K0  T 2222SI3 I3T	O%%\QZ\\ &      s'   A J! AJ! *A
J! 6J!  FJ! !"Kc                    | j          d| j        d          }t          j                            |          }|s"t                              |d| j                  }| j        d          d| j        d          |_        |                    d	           d }| j        	                    d
          }|
                                rG|                    d          5 }t                              |          }d d d            n# 1 swxY w Y   |ra|                     |           |                    dg           D ]}|                     ||           ||_        |                    d	           |S )Nr   r   )r   T)r   r   r4   rF  u?   : Схема проектных прав доступа для r   r   r  r  r  )rA   r   rE   CmfProjectPermSchemerG   r4   r   r   r   r   r   r	  r
  r   r  r  rz  )r%   perm_scheme_ext_idr  	perm_listr  r  r  s          r   _process_perm_schemez(ConfluenceAPIImport._process_perm_scheme  s    $ 0KKDOD4IKK155=O5PP 	 55) $? 6  K
 #oe4  O  Ouy  vE  FL  vM  O  OT***	*334FGG!!## 	) %%c** )a IIaLL	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 	/k***&]];;; B B	)))[AAAA*3K'...s   D  DD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  r   r  task_code_prefixT)r  r   r  r   r`  r   z Wikiu   названиеWIKIu   кодu   В u    и u9    проекта добавлен суффикс 'Wiki': 'rq  r  r&  )rE   r  r  r   rj  r   r  upperr4   r;   r   rt   r  )	r%   r  r   updated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           	      8   dddd| dgg dg}t           j                            |dd|ggg d	          }|rVd
}|j        rd|j        j         d|j         d}|d| dz  }| j                            d|j         d| 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   rk  r   r  )r  r   r4   r   r  rU  u    (импорт z
, ext_id 'z')r  r  u   Проект с именем 'u   ' уже существуетuG   . Импортируемый проект переименован в 'rZ   zERR-0131r  r  r   r  Tr  r  r  u   Проект с кодом 'ug   ' уже существует. Код импортируемого проекта изменен на 'zERR-0132)rE   r  r  r4   r:   r   r  r   )	r%   r  r   r   ext_id_filterru  from_importoriginal_space_keycounters	            r   _check_project_uniquenessz-ConfluenceAPIImport._check_project_uniqueness  s    z=v===1!!!
 #((!FGZ#@A999 ) 
 
  	K! fe0B0GeeSZSaeee.v...(JO%%f f f\g 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                             d          }|                    d          5 }t                              |          | _        d d d            d S # 1 swxY w Y   d S )Nr+   r  )r   r   r	  r
  r   r  )r%   r  r  s      r   _load_space_metaz$ConfluenceAPIImport._load_space_meta/  s    $--g66	^^C   	+A"iillDO	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+    AA!$A!c                     | j                             d          }|                    d          5 }t                              |          | _        d d d            d S # 1 swxY w Y   d S )Nr  r  )r   r   r	  r
  r   r   )r%   r  r  s      r   _load_space_dataz$ConfluenceAPIImport._load_space_data4  s    $--k::	^^C   	+A"iillDO	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+r  c                     | j                             d          }|                    d          5 }t                              |          | _        d d d            d S # 1 swxY w Y   d S )Nr  r  )r   r   r	  r
  r   r  )r%   r  r  s      r   _load_all_content_metaz*ConfluenceAPIImport._load_all_content_meta9  s    +445LMM""3'' 	11$(IIaLLD!	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1r  c                     | j                             d          }|                    d          5 }t                              |          | _        d d d            d S # 1 swxY w Y   d S )Nr  r  )r   r   r	  r
  r   r  )r%   r  r  s      r   _load_parent_to_childrenz,ConfluenceAPIImport._load_parent_to_children>  s    "&"2";";<U"V"V$))#.. 	3!&*iillD#	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3r  c           	         | j                             d          r| j         d         }d|d<   n| j        j                            | j         d           | j         d         D ]_}	 |                     |          }|r nS# t          $ r6}| j        j                            | j         d| d|            Y d }~Xd }~ww xY wt          d          d	|d<   |S )
Nr  F	from_rootu   У пространсва не установлена домашняя страница. Сведения о создателе и дате создания пространства будут взяты из первой корневой страницы.r  uB    Не найден дамп корневой страницы [ID:z]. u>   Не найдены дампы корневых страницT)	r   rG   r4   rh   ri   r  r  r   r  )r%   r  root_page_idr  s       r   _get_space_homepagez'ConfluenceAPIImport._get_space_homepageC  sO   ?z** 	)z2H$)H[!!O"**> ^ ^ ^   !% = a a#55lCCH     O*22> X XAMX XRUX X        _```$(H[!s   %A??
B?	,B::B?c                    i }| j                             | j        d         |          |d<   | j        d         }| j        d         dk    r
|dz  }d|d<   ||d<   |d	         d
         }| j         j                            | j         d|            |d         dk    rt          j        |d<   n#|                     || j	                           |d<   |d	         
                    d          }|ri| j         j                            | j         d|            |d         dk    rt          j        |d<   n/|                     || j	                           |d<   n|d         |d<   |d	         d         d         }| j         j                            | j         d|            |d         dk    rt          j        |d<   n#|                     || j	                           |d<   |d	         d         |d<   |d	         d         d         |d<   |S )NrF  r  r   r  personalu(    (Личное пространство)u%   Личное пространствоdescriptionr/  r5  u/    Автор домашней страницы: r  rD  r7  u5    Владелец домашней страницы: rA  r0  r6  u&    Последний редактор: rE  r4  rC  r1  rF  )r4   get_correct_keyr   rh   r   r  r   rB  r   r=   rG   )r%   project_ext_idr  project_datar  r  r  r  s           r   _prepare_project_dataz)ConfluenceAPIImport._prepare_project_dataa  s6   +/?+J+JOE",
 ,
'(
 _V,
?6"j00DDJ*QL')V)$[1##t~$n$nfl$n$nooo&>[(()*)9L&&)-)9)9&:O)P)PL&#''	22 	CO"''4>(w(wpu(w(wxxxV}++,-,<[)),0,<,<U4==Q,R,R[))(4\(BL%I&}5d;##t~$g$g]e$g$ghhhF{**./.>L*++.2.>.>x?V.W.WL*+)1))<])K%&*29*=m*LV*T&'r   c                 D   t           j                            ddd| dgt          |                                          g dz             }|rQ|j        dk    rd| }n|j        dk    rd	| d
|d          d}| j                            | j         d| d           |S )Nr   r   r   )r  r  rz  r  r  uI   Найден ранее импортированный Wiki-проект project.agileu    Найден Agile-проект u_    с импортированным в раздел 'Документы' Wiki-проектом 'r   rZ   r  Tr  )	rE   r  rG   r   keysr  r4   r;   r  )r%   r  r  ru  log_msgs        r   _get_imported_projectz)ConfluenceAPIImport._get_imported_project  s    #''f&;.&;&;&;<))++,, 0 0 0  ( 
 
  	O#~55ofmoo%88Fw F F.:6.BF F F  O4> = =G = =NNNr   c                    | j         dv ryt          j                            d          }t                              |||| j        d          }| j         dk    rd|_        d| d	}nd
|_        d|_        d|_        d| d}n| j         dk    rt          j                            g dddd|gdd|gggg d          }|r6|j	         d| |_	        |
                    d           t                       nt          d          d| d| }nt          d| j                    | j                            | j         d| d           |S )N)project_wikiwikizproject.wiki:defaultr9   T)r  r   r   r4   r   r  ru  u3   Создание нового Wiki-проекта 'rZ   sectionzCmfWiki:Classu,   Создание нового раздел 'u-   ' в портале 'Моя компания')r  r   r  r  r  r  r   )r  r  r   r  r   r   u   Не найден Agile-проект для объединения. Создайте или импортируйте одноименный Agile-проект и повторите импорт проектаu"   Импорт Wiki-проекта 'u;   'в раздел 'Документы' Agile-проекта u8   Неизвестный тип опции импорта r  r  )r   rE   CmfLogicTyperG   r  r4   project_typer  tree_parent_idr   r   rC  r  r;   r  )r%   r  project_keyproject_namer  ru  r  s          r   _create_projectz#ConfluenceAPIImport._create_project  s   777,006L0MMJ''%!%? $ (  G >11'0$_P\___'0$$3!)8& E  E  E  E** '++;;;+WkB,79   ,  G  	$+N!F!Fn!F!F...H  W\ W WMTW W G
 hVZVfhhiiit~9999TJJJr   c                 4   |j         dk    r|j        rL|d         }|d         }| j        j        j                            d          }t          |j        o|j        j                            d                    }|s|r$|                     ||          \  }}}|| j	        d<   | 
                    |||          \  }}||d<   ||d<   | j	        |d<   |                                 }	|	r|	|d<   |D ]}
t          ||
||
                    |j        j        r|                                |_        |                                 |d         s|                     ||           n2| j                            | j         d	| d
t*          j        d           || _        n}|j         dk    rrt0          j                            dd|j        gg dgdg          }|st7          d|           |j        r"| j	        |_        |                    d           || _        |S )Nr  r   r  
add_suffixr  rz  project_perm_schemer  u#    Настройки проекта u    были изменены пользователем. Изменения из импорта не будут примененыTr&  r  r  r   r   r   u   Документыr   r  uL   Не найден раздел 'Документы' в Agile-проекте r   )r  r   r4   rC   r#   rG   rn   rz  r  r   r  r  r"  r   r   gen_coder:   r   r  r;   r  rt   r  r  rE   r/   r   r  )r%   ru  r  r  homepage_datar  r  r  r  r  rF  
doc_folders               r   _update_projectz#ConfluenceAPIImport._update_project  s   >11& 2+F3#/0B#C !_:@DD\RR
!+ H/599,GG 
  ? ? BFAYAY$(B B>L"2J 5?DOL1151O1O $"2 2.. (4V$3C/026/./"7799 F:EL!67' = =CGS,s*;<<<<<* 6#*#3#3#5#5GL %[1 O66wNNN##~ a a' a a a!/"	 $     'D!_44+//%tWZ8888 !z 0  J  ywnuwwxxx) 2-1_
*D111)Dr   c                     t           j                            dd|j        gg dg          }|j        dk    rt           j                            |d          }|r|                    d	           t           j                            |d
          }|r|                    d	           |r|                    d	           d S d S |j        dk    r;t           j                            |d          }|r|                    d	           d S d S d S )Nr  r   r  r   r  u   Документ1)rI  r   T)TEXKOM_db_deleteu   Документ2r  )rE   r/   rG   r   r  rz  )r%   ru  r  doc1doc2s        r   _delete_demo_dataz%ConfluenceAPIImport._delete_demo_data'  sF   '++!44444 , 
 

 >11%))gDW)XXD 3T222%))jGZ)[[D 3T222 9!!4!888889 9!_44%))jGZ)[[D 3T22222	 543 3r   c                     |j         dk    re|                    dg           |j        j        }|d         s| j         d|d          |_        | j        |_        |                    d           d S d S )Nr  r  r  r   r   Tr   )r  r  r  r#   rA   r   r4   r   )r%   ru  r  r  s       r    _link_homepage_to_descr_documentz4ConfluenceAPIImport._link_homepage_to_descr_document?  s    >11!1 2333$39NK( P+/+;(O(Ox~(O(O%(,N%D11111 21r   c                    d| j          d| j        d          d}|                                 }|                     ||          }|d         }|d         }|                     ||          }|s|                     |||          }d}nd}|                     ||||          }|r+|                     |           |                     ||           t                       |S )Nr   r   r  r   TF)
rA   r   r  r  r  r  r  r  r
  rC  )r%   r  r  r  r  r  ru  is_new_projects           r   _get_or_create_projectz*ConfluenceAPIImport._get_or_create_projectH  s    Kd.KK$/$2GKKK002211.-PP"#56#F+,,^\JJ 	#**>;UUG!NN"N&&wnm\\ 	J""7+++11'=IIIr   c                 p   | j         r| j        j                            | j         d           | j         dk    rd}nd| j          d}|                     | j         d|           5  |                     d           d d d            d S # 1 swxY w Y   d S | j        j                            d           d S )	Nu    Для настройки обработки количества версий документов, установите значение параметра IMPORT_CONFLUENCE_PROC_LAST_PAGE_VER в configr   u=   Обработка всех версий документовu&   Обработка последних u"    версий документовr  r   u{   Обработка версий документов отключена в config: IMPORT_CONFLUENCE_PROC_LAST_PAGE_VER = 0)rp   r4   rh   ri   r  r   rr  )r%   log_num_vers     r   _run_version_processingz+ConfluenceAPIImport._run_version_processingb  s?   + 	O"**> { { {  
 /255] LtGg  L  L  Lt~====>> 8 8,,Y7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O"**;    s   'B

BBc           	         | j         d         d         d         | _        | j        D ]}| j                                        r d S || _        |d         }|d         }|                    d          p|d         }d| d| d	| _        	 | j        j        	                    | j         d
| d           | j
                            |          | _        | j                            d          | _        |                                  |                                  |                                  |                     | j         d          5  |                                 | _        d d d            n# 1 swxY w Y   |                     | j         d          5  |                                  d d d            n# 1 swxY w Y   |                     | j         d          5  |                     d           d d d            n# 1 swxY w Y   |                     | j         d          5  |                     |d         d                   }d d d            n# 1 swxY w Y   |                     | j         d          5  |                     |           d d d            n# 1 swxY w Y   |                                  # t2          $ r6}| j                            | j         d| d| ddd           Y d }~d }~ww xY wd S )Nr   r#   r   rF  r  r   r  r  r  u(    Импорт пространства 'rZ   r  u5    Создание/Обновление проектаu)    Создание тегов (меток)u(    Обработка документовr1   uM    Подготовка данных для создания структурыr  r  u9    Создание структуры документовu7    Ошибка импорта пространства 'r  zERR-0032r  Tr  )rD   r   r  r4   r`  r  rG   r  rh   r   r   r   r   r   r  r  r  r   r  ru  _process_project_tagsrr  r  r  r  r   r  )r%   r  r  r   r  r  r  s          r   _process_spacesz#ConfluenceAPIImport._process_spacesu  s   =7@F. +	 +	J((** (DO!$'H"5)I#88NJv<NJE(EEEEEDN&++t~,t,tgq,t,t,tuuu#'#4#=#=i#H#H $($4$=$=k$J$J!%%'''++-----///ZZ4> h h hii A A#'#>#>#@#@DLA A A A A A A A A A A A A A A ZZ4> \ \ \]] 1 1..0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ZZ4> [ [ [\\ 9 9008889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ZZ4>  !A  !A  !A  B  B e e#'#=#=jI[>\]b>c#d#dLe e e e e e e e e e e e e e eZZ4> l l lmm = =..|<<<= = = = = = = = = = = = = = = ,,....   ))~rr^hrrmprr))!	 *        K+	 +	s   CK	E/#K/E3	3K6E3	7 KF8,K8F<	<K?F<	  K H6KH	K	H	
 K*"IKI	KI	  K J"K"J&	&K)J&	*K
L+K>>Lc           
         ddl m} i }|                                 D ]J}| j                                        r d S |d         d         d         D ]}|d         |vr|||d         <   K|                                D ]}| j                                        r d S |d         }|d         }	 |                    dd	                              d
d          }|                    dd                              dd                              d	d          } ||dd          }	d| j         d| d}
t          j	        
                    ddd|
 dgdg          }|s9ddd|gdd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!                       # t"          $ r7}| j                            d | d!| d"| d#| j        d$           Y d }~d }~ww xY wd S )%Nr   r  r   r  r   r   r   r  r  r  rU  r  z\\r   z\%z\_r  Tr  r   r   r   r
   r  r  r  r  r  r  )r   r4   r   r   r   u+   Не удалось создать тег 'rq  z). zERR-0022r?  )r  r  r  r4   r`  r   r   rA   rE   r   rG   r   r   rz  r   r   rC  r   r  ru  )r%   r  r  r   r  tag_idtag_namer   
name_iliker  r   tag_obj
tag_filterr  s                 r   r  z)ConfluenceAPIImport._process_project_tags  s%   ******  ..00 	0 	0L((** %j1(;IF 0 0;f,,*/F5;'0 ]]__ /	 /	E((** 4[FV}H)''S1199#rBBWT6**WS%((WS%((	  !MMM<d.<<&<<< -++Hfm&mmm3T^a]b+cc Q*5 '+=z+=+=+=> '=u===9	"J %m//z3%/PPG $mm!#'?(,%	 ,  G ~ A%+GNN7>11(/%@%@%@GN#*/'% 3LLTL222   ))_(__v__Z]__)!	 *        S/	 /	s   ,E.H
I&,IIc              #   (  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?   r   r  listdirr	  r
  r   )r%   r  group_idr  s       r   _get_groupszConfluenceAPIImport._get_groups  s      '00::


:.. 	# 	#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 )Nrf  r  )r   r  r  r	  r
  r   )r%   
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	rX  c           
      4   |s|r"| j         j                            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         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         d
          dk    r|rq| j         j                            d| d|j                    t3          j        d
| j         dd|j        j                  |_        |                    d           d }n)| j                             d| d|j         d d!d"#           |s)d$dd%d&| j         d'gg d(g}t&          j                            d)d*|d         g|g|
          }|st&          j                            dd*|d         g|g|
          }t          |          dk    r8| j                             d+|d          d,t          |           d!d"#           g }|sd-d*|d-         g|g}t&          j                            ||
          }|sd$g}t=          |	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    r6| j                             d.|d-          d,t          |           d!d"#           |r|d         }d}|s|rd}d}|d         }t&          j                            d)d*|                                 g|
          r| j         !                    d/| d0tD          j#                   |d                             d          \  }}| d1| d| }|dz  }t&          j                            d)d*|                                 g|
          | j         !                    d2|            t&                              ||| j         d3          }nd |fS |r|j$        s|j%        r|D ]}tM          ||||                    |'                    g d4           |j        r||j        vr|j         | |_        n||_        t&          j(        )                                }t&          j(        *                                }||j+        vr|j+                            |           ||j+        vr|j+                            |           d|_,        |j-        r|                    d           ||fS )5Nu2   Обрабатываем пользователя r   u8   Не указан Email для пользователя r  rh  @
operationsT)r   r   does_not_workr   Fr  r  r   	last_namerU  
first_namesecond_name   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  r  r  )r   r   Nloginr  u+   Пользователей с почтой z > r   u+   Пользователей с именем uQ   Обнаружена учетная запись с дублирующим email u   , добавляем цифру+u1   Создадим пользователя ext_id=)r   r+  r4   r   )r   r*  
user_local).r4   rh   r   rG   warncmfr   CmfEmail
max_lengthr  rd   
ORG_DOMAINr  translit_stripr  rn   rA   r=   r=  rE   r   r   r#   r  ri   r5  r  r   r  r   r   r   rj  r;   rt   r  r   r  r"  r  r   confluence_group
user_groupr*  r-  r   )r%   rX  ry  r   r   max_len	user_dictr   
is_created	full_namer   r   not_source_hash_filterpersonsr  
name_combonr+  prefix_emaildomainrF  
conf_groupr5  s                          r   _process_personz#ConfluenceAPIImport._process_person  s	    	jV 	jO"''(h]f(h(hiiig&& 	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	Fd&FF)DM*BFFF
m,223::	y>>Q%.q\Ik"&(Il#')Im$$^^q  %.q\Ik"&/lIl#')Im$$^^q  %.q\Ik"&/lIl#'0|Im$~&!%%fm&mmm4 & 
 
  	fm)//0IT5E0I0I0IJJQNN  &..cv c cSYS`c c   !#3$*333M'! !
 ---))Ggm G G {A  {HG G G  *# *     >	( :'BT-='B'B'BC&&&&"
 %))gy'9:*  *  F  ,( *// '9W+=>. " 0   w<<!##O--  /B\efm\n  /B  /Bsvw~ss  /B  /B9Cf . W W W 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<<!##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  .---z!!r   c           	      $   | 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         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tA          |           d|            tC          t,          j"        j#        tI          |          g           d S d S d S )Nr  TuA   Не грузим пользователей из-за опцийr  rf  r   r1  r   r  r   r   r   r   r   r   r
   r  r   r   r4   r   r   rz  send_invitesu,   Отправляем приглашения u    пользователям: )r  )%r4   rC   r#   rG   r;   rt   r  r  r  rH  r`  rA  r   r   r   r  rd   r2  r  r3   r<   rA   rE   r   r   r   r   r*  r   rC  rh   r   r  schedule_deferred_jobr   register_personsr   )	r%   rD  rX  r   r8  r   rF  r   r   s	            r   _process_personsz$ConfluenceAPIImport._process_persons  sj   ,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Ed.EE*S/EEE-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                 v   |                                  D ]}d}| j        j        rd}d| j         d||          d}t          j                            ddd| dgdg          }|s+t          j                            dd	|d         gdg          }|s+t                              || j        |d         d
|          }n|j        r|d         |_	        |j
        s||_
        n||j
        vr|j
         | |_
        |                    d
           t                       |                     | j                            d||                             D ]U}|                     |d          \  }}|s|j                            |           |j        r|                    d
           Vt                       d S )Nr   r   r   r   r   r   r
   r  r   TrC  r   r  F)r  r3   r<   rA   rE   r   rG   r4   r   r   r   r   rC  r!  r?   r   rA  r*  r   r   )r%   r   rF  r   r   rX  r   r  s           r   _process_groupsz#ConfluenceAPIImport._process_groups  s   **,, 	 	JC$ A$*AAjoAAAF)--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4T5G5P5PQY[efi[j5k5kll 2 2	 00EBB	 #**5111$ 2KKDK111LLLL7	 	r   c           
      H   t          t          dd          }|s!| j        j                            d           dS | j        j                            d           t                      }t          j                    }t          j
                            g dg dg dgg d	
          }|D ]}d|j         d|j         d}|j        j                            d          }|s8|j        j                            d          pi }|                    d          pd}		 | j                            d           | j                            d|            |                    ||	          \  }
}|
|_        t(                              |d          |_        |                    d           | j                            d|            | j                            d|
            | j                            d|            |j        D ]!}| j        j                            |           "# t2          $ r2}| j                            d| d| d| ddd           Y d}~d}~ww xY wt          j                    |z
  }| j        j                            d |d!d"           dS )#u   
        Пост обработка JQL в фильтрах задач макроса "Результаты фильтра"
        IMPORT_CONVERT_JQLTu   Конвертация JQL в фильтрах отключена. Для включения, измените значение параметра 'IMPORT_CONVERT_JQL'Nuj   Обработка JQL в фильтрах задач макроса 'Результаты фильтра')rz  r   z%"jqlQuery":"%r   )r   r   T)rz  ubqlr  r   r  r  z" (r  r  r  rA   r   2--------------------------------------------------u   ФИЛЬТР: Fr  r   zJQL:	zUBQL:	zBQL:	u   Фильтр u0   : ошибка преобразования JQL r   zERR-0066r  )r  rx  uC   Обработка JQL в фильтрах выполнена за r<  r=  )rc   rd   r4   rh   ri   r   r   r   process_timerE   r  r   r   r:   rz  r#   rG   r;   get_modifiedrL  r
  r  r  r   r  r   r  )r%   convert_jqljqlt1task_filterstask_filter
filter_msgrV  r  rA   rL  r  r  r  t2s                  r   _process_jql_in_filtersz+ConfluenceAPIImport._process_jql_in_filters  s&    f&:DAA 	O"**w   F##y	
 	
 	
 oo  *//===***///
 >== 0 
 
 ( 	 	KE[-EE+2BEEEJ/599*EEE !17;;IFFL"G!++m44;K##H---##$AZ$A$ABBB,,UK@@	c#' "&**Su*"E"E  T 222##$4U$4$4555##$4d$4$4555##NSNN333!$ > >IO*229====>   ))nJnn`ennilnn+!	 *           2%##$zjl$z$z$z$z{{{{{s   DH))
I%3'I  I%c           	          t          j        | j                  \  }}}||z  dz  }|dz  }|dz  }| j        j                            d|dd|dd|dd           d S )Nd   i   @u-   Свободно места на диске: r  u	    GB из z GB (z%))r  
disk_usager?   r4   rh   r   )r%   r  usedfreefree_percentfree_gbtotal_gbs          r   _check_disk_spacez%ConfluenceAPIImport._check_disk_space  s    "-d.@AAtTe|c)'"G$##MLM M%-LM M8DLM M M	
 	
 	
 	
 	
r   c                     t          d |                     d          D                       }| j                            d|           d S )Nc              3      K   | ]}d V  dS r0  r   r  s     r   r(  z3ConfluenceAPIImport._count_users.<locals>.<genexpr>  s"      99!A999999r   rf  r   r"   )r  r  r4   rH  )r%   r  s     r   _count_usersz ConfluenceAPIImport._count_users  sM    99t//8899999  u 55555r   c           	      H   | j         D ]}|d         }|d         }|                    d          p|d         }d| d| d}	 | j                            |          }|                                st          d          d	| j         d	| d	}t          j        	                    d
dd| dgdg          }|st          d          | j
        j                            | d| d           n?# t
          $ r2}	| j
        j                            | d| d|	            Y d }	~	d }	~	ww xY wt          j        s2	 | j
                            || j
        j                   [# t
          $ r2}	| j
        j                            | d| d|	            Y d }	~	d }	~	ww xY wd S )Nr   rF  r  r   r  r  r  us   Отсутствует каталог дампа: вероятно, ошибки при создании дампаr   r   r   r   r  r  u%   Проект не был созданu6    Импортировано пространство 'rZ   u=    Импорт выбранного пространства 'u   ' не выполнен. )rh   uD    Не удалось создать отчет по проекту 'r  )r  rG   r   r   r   r   rA   rE   r  r  r4   rh   r   rE  rd   IMPORT_COLLECT_STATSproject_stats)
r%   r   r  r   r  r  r   r  ru  r  s
             r   _check_import_selected_spacesz1ConfluenceAPIImport._check_import_selected_spaces"  sk   ) $	 $	ET{HeI?33DuV}J@X@@I@@@I"/88CC"))++ [#  %Z  [  [  [!Fd&6!F!F(!F!F!F +00$f.C..C.C.CD 6 1    M#$KLLL&++y,},}pz,},},}~~~~   &,,   J  J_i  J  J  EH  J  J   	 . --nT_E[-\\\\   &,, zzfpzzuxzz       C$	 $	s1   B*C--
D)7'D$$D);&E##
F-'FFc                    |                                   | j        5  |                                  |                                  |                                  |                                  ddd           n# 1 swxY w Y   |                                  |                                  |                                  | 	                                 | j
        j        j                            dd          r| j
                                         n| j
        j                            d           t#                       | j
                            d           |                                  dS )u-   
        Запуск импорта
        Nprocess_linksTu2   Отключена обработка ссылокrM  )r`  r3   r  r  r  r+  rc  rG  r  rW  r4   rC   r#   rG   process_cross_linksrh   ri   rC  r;   rg  r$   s    r   process_importz"ConfluenceAPIImport.process_importI  s    	   _ 	" 	"%%'''))+++   !!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	$$&&&?(.22?DII 	aO//1111O"**+_```H%%%**,,,,,s   AA99A= A=c                     |                     dt          j        d          i          s |j        dk    s|                     d          r'|                    |                                           |S )uS   
        Из документов MS создаем наши превью
        r  
backgroundr.  r,  )r:  r5  compiler   r;  create_preview_tag)r%   r#  rZ  s      r   _create_previewz#ConfluenceAPIImport._create_previewg  so     887BJ|$<$<=8>> 	:#(eBSBSWZW_W_`eWfWfBSV6688999
r   c                    t           j                            | j        j                  }|                    d           D ],}	 |j                            d          r|                    d          r)|                    dd          	                                }n(|                    dd          	                                }|st           j                            |          }|j
        r3|j
        | j        j        v r|j                            |j                  s|j        r|j                            d          s|j        s	|j
        r| j        j                            d|j         d|            d }	|                    |	          }
|                    d          r|                    d
          r||
rzt           j                            |
                    dd                              d
                    }|r$| j        j                            d|            |j         d| }	n#d|v rw|                    d          d                             d          d         }|                     |          }|s$| j        j                            d|            o|j        }	nd|v rt3          j        d|          }|r|                    d          }|s2t           j                            |                    d                    }|rB|                     |          }|s$| j        j                            d|            |j        }	|	rF|	|j        d<   ||j        d<   d|j        d<   | j        j                            d| d|	 d           g|
rx|
                    d          rc|
                    d          dk    rJ|
                    d          |d<   |
                    d          |d<   |
                    d          |d<   |}t           j                            |                              d          d                             d          d         }|}|j                            d           }|j        d!k    r|r||j                            d"          d         k    r]t?          | j         j!        "                                d#                   }t?          | j         j!        "                                d$                   }| j#        $                    d%|d&|d'          }| j%         d"| }tL          j'                            |d(g)          }|r|}|(                                s=|r;| j#        $                    d%t?          |j)        j!        d#                   d&|d'          }|(                                s,| j        *                    d*| d+| d,| d-| d.	d/|0           tL          j+        ,                    d$d1|gd2d3| d4gg d5gg d67          }|rt[          |j                  (                                rtL          j.                            ||8          }|stL          .                    ||| j        d9          }|j!        r|j!                            d:          r|j!        d:         }|                    d;          |_/        |                    d<          r>|d<         d=         d>k    r,|                     |d<         | j0                           |_1        ntd          j3        |_1        |j1        |_4        |5                    d?           tm          t[          |j                  d@          5 }|7                    |8                                ddAB           d|_9        |5                    d?           d d d            n# 1 swxY w Y   n)| j        *                    dC| dD| dE| ddF|0           tL          j.                            |g dG|H          }|r|                    d          r#|j        d         |j        dI<   |j        j:        |j        d<   d|j        d<   |                    dJ          r|j        dJ         |j        dK<   |j        dJ= tw          j<        |j        d                             d          d                   }|rI|d         rA|d                             dL          r&dL|_=        dM|j        dM<   dN|j        dO<   dN|j        dP<   n;|r#|d         r1|d                             dQ          s| >                    ||           |                    d          r
|j        d         |j        d<   |j        j:        |j        d<   d|j        d<   tw          j<        |j        d                             d          d                   \  }}|r|                    dL          rodL|_=        dM|j        dM<   dN|j        dO<   dN|j        dP<   |?                    dR          }|j        d         |j        d<   ||j        d=<   |@                    |           n| >                    ||           | j        j                            dS|j                    
|j                            d          dk    r"| j        *                    dT| dU|0           
| j        j                            d|j         dV|            
# t          $ r+} | j        *                    dW|  dX|0           Y d } ~ &d } ~ ww xY wd S )YNc                 V    |                      d          p|                      d          S r  r   r"  s    r   r$  z4ConfluenceAPIImport._convert_links.<locals>.<lambda>r  s$    #,,v2F2F2]#,,W\J]J] r   r  r  rU  r  r*  z[CODE:u#   ] Обработка ссылки: )r  r  zdata-anchoru1   Не найден якорь для ссылки z##z/people/r+  r   r,  r   u?   Пользователь не найден для ссылки z
/display/~r)  zdata-usernamer  	href_origTu   Заменили 'u   ' на 'rZ   data-linked-resource-typer}  zdata-linked-resource-idz!data-linked-resource-container-idr/   r   rF  r   r}   r  r8  zparent.import_raw_jsonr2  u   Документ ID u)    с каталогом вложений 'u<   ' не найден в дампе пространства 'rq  u~   ). Возможно он находится в пространстве, которое еще не импортированоzERR-0005r  r^  r-  r   r  rB  r^  Tr  r;  rz  r  r0  rl  r   r1  r6  r  r  r   rm  Frn  u   Не найден файл '   ' страницы ID r	  zERR-0006)r'  rj  ri  )r   r   r   src_origsrcsetsrcset_origvideocontrolsr2  r5  r6  imagesourceu   Заменили на u%   Не найдено вложение zERR-0007u*   ] Не обработана ссылка: u.   Ошибка обработки ссылки: zERR-0008)Br/  r0  r1  r3   r'  r2  r3  rG   r!  r  hostnamer;  r7  r8  r4   rh   r   r:   r:  r  lstripri   r  r=  r   r5  r6  r<  r   r  r   r   r  rz  r   r?   r   rA   rE   r/   r   r   r  rA  r  r   ra  rC  r=   rD  r   rB  rA  r   r	  rv  r   r   r#   r>  r?  r   rp  rK  r   r   )!r%   r   rK  rL  make_previewrE  r#  r'  rI  new_urlraw_taganchor_name
account_idr   r?  	user_nameattach_parentr   rL  resource_container_idr   r  rP  resource_ext_iddoc_with_attachdownloaded_file
attach_objr  r  rJ  r)  r~  r  s!                                    r   rH  z"ConfluenceAPIImport._convert_linkso  s	    & 5 5do6I J J%%&]&]^^ j	 j	Ci9==11  <<'' 5''&"--3355CC''%,,2244C #\22377
 ' #+t/BBB&O667L7QRR C  $ Z->-I-I&-Q-Q  "( Z-@ &++,jV[,j,jeh,j,jkkk%***44<<'' 2CNN3,?,? 2G 2"(,"4"4W[[PR5S5S5Z5Z[^5_5_"`"`K" !.667pkn7p7pqqq !'====GG3&&!$3!3!9!9#!>!>q!AJ!--j99F! !.667~y|7~7~ $kGG!S((I&A3GGE 2$'GGO$<$<	( M(.(<(<U[[^^(L(LI$ 2%)%5%5i%@%@F#) ) $ 6 > >$kfi$k$k!" !" !" !)&,kG (/CIf%-0CIk*15CIo.O*//0\S0\0\RY0\0\0\]]]
 $?@@  $?@@LPP7>{{C^7_7_C345<[[AZ5[5[C12)0])C)CC& &|++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'+'9'B'B"!#-%( ($ *.)9&T&T=R&T&TO&,&8&<&<. 89 '= ' 'O ' 8(7+2244  +/+=+F+F& 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    ! '-&>&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    !#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Y]]#>??<OOO--.[VY.[.[hr28 . : : :&../t/t/tor/t/tuuuu   ))JSJJ) *        Kj	 j	s   l6A(l6Al6!!l6l6Cl6.A?l6/B'l6Al6'A8l6!G$l6Fl6A_, l6,_0	0l63_0	4+l6!J'l6
>l6
*l66
m+  m&&m+c                    i }|                     d          D ]D}|j        r;d}t          j        ||j                  }|D ]\  }}|                                ||<   E|                     dddi          D ]L}|d         }||v r>||         }	d|	 }
|                    dd           d	|
                     d
          |d<   MdS )ub   
        Добавляет стиль цвета для текста в Confluence Cloud
        r  z5\[data-colorid=([^\]]+)\]\s*\{\s*color:\s*([^;\}\n]+)spanzdata-coloridTr.  zcolor: rU  ; ;N)r2  stringr5  findallr  rG   r  )r%   rK  color_rules	style_tagpatternmatchescoloridcolor_valuer  rj  
text_colors              r   r  z'ConfluenceAPIImport._convert_text_color^  s   
 "++G44 	? 	?I ?R*Wi.>??,3 ? ?(G[+6+<+<+>+>K((&&vnd5K&LL 	U 	UD>*G+%%#G,.u..
#'88GR#8#8 H HJ H H O OPS T TW	U 	Ur   c           
      ~   g dddgdddg ddddg d	dd
ddgddddgddddgdddg ddddddgdddg ddddg dddddgddddgddd d gdd!d"g d#dd$d%d%d&gdd'd(d(gdd)d*d*gdd+d,d,gdd-d.d.gdd/d0d0d1gdd2d3d3gdd4d5d5gdd6d7d7gdd8d9d9d:gdd;d<d<gdd=d>g d?dd@dAdAgddBdCg dDddEdFdFdGgddHdIg dJddKdLg dMddNdOdOgddPdQdQgddRdSdSdTgddUdVdWdVgddXdYdYgddZd[g d\dd]d^d^gdd_d`d`gddadbg dcddddeg dfddgdhdhgddidjdjdkgddldmg dnddodpdpgddqdrdrdsgddtdududvgddwdxdxdygddzd{d{d|gdd}d~d~gdddddgdddddgdddddgd}|                     dddi          D ]}|                    d          }|r|                    dd|i          nd}|s|                    ddi          }|sRi }|                     d          D ]j}|                    d          }	|j        r|j                                        nd|	dk    r&t          fd|D             ddi          }
|
d         ||	<   kd}|                    d          }|r|j        rt          |j                  }t          d          }|	                    ddd|                    dd           i          }|	                    d          }||_        |
                    |           |                    |           dS )uF   
        Конвертирует "Фрагмент кода"
        ABAPabap)r   r#   r  ActionScriptactionscript)r  actionscript3asAdaada)r  ada95ada2005AppleScriptapplescriptArduinoarduinoAutoItautoitBashbash)r!  r  shkshzshCr  cppzC#csharp)r  zc#cszC++)zc++r  clikeCSScssClojureclojureDiffdiffElixirelixir)r  exexsErlangerlangerlFortranfortranGogoGraphQLgraphqlGroovygroovyHaskellhaskellhsJavajavaJSONr
  Kotlinkotlin
LiveScript
livescriptzlive-scriptLualuazObjective-C
objectivec)zobjective-cr  zobj-cobjcOCamlocamlPascalpascal)pasr  objectpascaldelphiPerlperlplPHPphp)r  php3php4php5
PowerShell
powershell)r  poshps1psm1PrologprologPuppetpuppetPythonpythonpyQMLqmlqbsRr  Racketracket)r  rktlispJSXjsxTSXtsxreSTrest)restructuredtextrstr   Rubyruby)r  rm  dubyRustrustSchemer8  scmSQLsql)r  
postgresqlpostgresplpgsqlpsqlzpostgresql-consolezpostgres-consoletsqlzt-sqlmysqlsqliteTcltcl
Typescript
typescriptts
JavaScript
javascriptjsValavalavapiVerilogverilogrW  VHDLvhdlzVisual Basiczvisual-basicvisualbasicYAMLyamlymlzHTML/XMLmarkupr  xmlr  r  r:   r.  r  r  r8  Nr-  r   languagec              3   0   K   | ]}|d          v |V  dS )r  Nr   )r   langrI  s     r   r(  z4ConfluenceAPIImport._convert_code.<locals>.<genexpr>  s4      ^^$PTU\P]A]A]A]A]A]A]^^r   r#   r}  rU  zac:plain-text-bodyr  featuresprer  z	language-)r2  rG   r:  r  r  r:  r  r   r   rK  r   r;  )r%   rK  r  supported_languages
code_macror  rL  rF  ro  rH  supported_languager  	cdata_tagnew_souppre_tagcode_tagrI  s                   @r   r  z!ConfluenceAPIImport._convert_coder  s   J
  J
 ''@@@ J
 444 J
" &&' !J
, ""# +J
6 !!" 5J
@ >>> ?J
J u IJ
T !/// SJ
^ 000 ]J
h  gJ
r ""# qJ
|   {J
F !!000 EJ
P !!"E* OJ
Z ""# YJ
d  cJ
n ""# mJ
x !!" wJ
B ""#T* AJ
L   KJ
V   UJ
` !!" _J
j %%&6 iJ
t  sJ
~ &%GGG }J
H   ! GJ
R !!DDD QJ
\  $ [J
f 888 eJ
p %%>>> oJ
z !!" yJ
D !!" CJ
N !!"D) MJ
X  WJ
b  aJ
l !!222 kJ
v  uJ
@  J
J <<< IJ
T /// SJ
^   ]J
h !!"E* gJ
r  \  \  \ qJ
|  {J
F %%&- EJ
P %%&- OJ
Z  &) YJ
d ""#S) cJ
n   mJ
x '''8 wJ
B  % AJ
L #! % KJ
X '//0EiY_M`/aa "	* "	*J!~~m44HRZdinnU?H2MnNNN`dG L#..0A6/J.KK F#,,^<< 	1 	1"YYy11
49JHej..000D++)-^^^^*=^^^ &)* *& #5W"=K%0z""G"(<==I 0Y- 0i.//$m<<<H&& LFJJz6,J,J L LM '  G  ''//H%HONN8$$$  ))))E"	* "	*r   c                 F   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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ddd}ddd}d  }|                     |          }|D ]3}d!}	d!}
d!}|j        }|d"k    r|                    d#          }|                    |          }|                    d$          }
|                    d%          }i }|                     d&          D ]>}|                    d#          }|j        r|j                                        nd!}|||<   ?n|d'k    rd(}i }|                     d)          D ]>}|                    d*          }|j        r|j                                        nd!}|||<   ?|                    d+          }
|                    d,          }nL|
r|                    d-d.|
i/          }	|	s|r|                    d-d0|i/          }	|	s|                    d1|i/          }	|	st          d23          }|                    d-d4d5|d6/          }|                    d-d7d5d8/          }|                    d-d9d:i/          }|dk    r|                    d;          }|r|                    d<          r|t          d<          d!         }|                    ||          }|                    |          }|                    d=|d>         /          }|                    d?|d@         /          }|
                    |           |
                    |           nK|                    dA          }dB |D             } dC                    |           }|
                    |           |                    dD          }!|!r6dE|! }"|                    dFdC           dG|"                     dH          |dF<   |	                    d9dIi/          }#n|                    dJ          d5k    ry|                    |          }|                    d=|d>         /          }|                    d?|d@         /          }|
                    |           |
                    |           |d"k    r|	                    d9dKi/          }#n|d'k    r|	                    d9dIi/          }#|                    dL          }$|$rh|                    dM          }%|                    dN          }&t          |$          |&_        |%
                    |&           |
                    |%           |                    |#j                   |
                    |           |
                    |           |	                    |           5d!S )Ou9   
        Конвертирует "Панель"
        r   successri   rE  customr   tipnoteri   panel20z	0 0 24 24)r6  r5  viewboxzM12,24A12,12,0,1,0,0,12,12.013,12.013,0,0,0,12,24ZM12,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12,5Zm-1,5h1a2,2,0,0,1,2,2v6a1,1,0,0,1-2,0V12H11a1,1,0,0,1,0-2Zzrgb(1,82,204))dfill)	svg_attrs
path_attrszLayer 1)r6  r5  r=  z	data-namea  m19 3.022c0-.008 0-.014 0-.022v-2a1 1 0 0 0 -2 0v1.1a5 5 0 0 0 -1-.1h-1v-1a1 1 0 0 0 -2 0v1h-2v-1a1 1 0 0 0 -2 0v1h-1a5 5 0 0 0 -1 .1v-1.1a1 1 0 0 0 -2 0v2 .022a4.979 4.979 0 0 0 -2 3.978v12a5.006 5.006 0 0 0 5 5h8a5.006 5.006 0 0 0 5-5v-12a4.979 4.979 0 0 0 -2-3.978zm-7 13.978h-4a1 1 0 0 1 0-2h4a1 1 0 0 1 0 2zm4-4h-8a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2zm0-4h-8a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2zz#5243aaz0 0 1000 10000pxpreserve)r6  r5  r=  r9  yz	xml:spacea9  M500,990c270.6,0,490-219.4,490-490S770.6,10,500,10S10,229.4,10,500S229.4,990,500,990z M483.7,678c-0.4,0.4-0.7,0.8-1.1,1.2c-19.1,19.1-50.2,19.1-69.3,0L239.9,505.9c-19.1-19.1-19.1-50.1,0-69.3c19.1-19.1,50.2-19.1,69.3,0l138.7,138.7L695,328.1c19.1-19.1,50.2-19.1,69.3,0c19.1,19.1,19.1,50.2,0,69.3L483.7,678L483.7,678zz#01875az0 0 554.2 554.199a!  M538.5,386.199L356.5,70.8c-16.4-28.4-46.7-45.9-79.501-45.9c-32.8,0-63.1,17.5-79.5,45.9L12.3,391.6   c-16.4,28.4-16.4,63.4,0,91.8C28.7,511.8,59,529.3,91.8,529.3H462.2c0.101,0,0.2,0,0.2,0c50.7,0,91.8-41.101,91.8-91.8   C554.2,418.5,548.4,400.8,538.5,386.199z M316.3,416.899c0,21.7-16.7,38.3-39.2,38.3s-39.2-16.6-39.2-38.3V416   c0-21.601,16.7-38.301,39.2-38.301S316.3,394.3,316.3,416V416.899z M317.2,158.7L297.8,328.1c-1.3,12.2-9.4,19.8-20.7,19.8   s-19.4-7.7-20.7-19.8L237,158.6c-1.3-13.1,5.801-23,18-23H299.1C311.3,135.7,318.5,145.6,317.2,158.7zzrgb(255,153,32)z0 0 208.891 208.891zM0,170l65.555-65.555L0,38.891L38.891,0l65.555,65.555L170,0l38.891,38.891l-65.555,65.555L208.891,170L170,208.891  l-65.555-65.555l-65.555,65.555L0,170zzrgb(216, 64, 64))r   r:  r6  ri   rE  )
check_mark
cross_markc                     d}| j         dk    r|                     d          |v S | j         dk    r|                     d          dk    S dS )Nr8  r  r  ac:adf-noder  r;  F)r   rG   )r#  panel_namess     r   find_panelsz7ConfluenceAPIImport._convert_panel.<locals>.find_panels  sW    K x000wwy))[88x=((wwv'115r   Nr  r  zac:local-idr  r   rH  r;  zac:adf-attributerF  zlocal-idz
panel-typer  data-local-idr.  r8  r-  r  r+  zak-editor-panel eva_convertedr{  )r  contentEditablezdata-panel-typezak-editor-panel__icon)r  rL  r  z$ak-editor-panel__content mceEditablepanelIconIdz
atlassian-rH  r@  r;  rA  -c                 L    g | ]!}|t          t          |d                     "S )   )chrr   rw  s     r   r  z6ConfluenceAPIImport._convert_panel.<locals>.<listcomp>Q  s-    %S%S%STd%Sc#dB--&8&8%S%S%Sr   rU  bgColorzbackground-color: r  r  r  panelContenticonz!confluence-information-macro-bodyr  r  strong)r2  r   rG   r  r  r:  r   rK  r7  r  r   r=  r   r  r   r  r  rc  r;  )'r%   rK  r  panel_typespanel_iconsicon_maprJ  panel_macrospanel_macrorL  local_idr  panel_element
panel_name
panel_typerF  ro  rH  rI  attrattr_key
attr_valuer2  	panel_tagpanel_icon_tagpanel_content_tagicon_id	icon_typerT  svg_tagpath_tagparts
icon_charspanel_colorbg_colorcontent_tagpanel_titlep_tag
strong_tags'                                          r   r  z"ConfluenceAPIImport._convert_panel  sJ   
 
 
 #!*  w+ 
 
 #!*!*	  `%   #!.!+  U%    #!2!+  }-    #!4!+  r.  iB
 B
H $!
 

	 	 	 $,,[99' l	, l	,KGHH',M 555(__Y77
(__Z88
&??=99&??=99(11.AA 5 5E!&9!5!5J8=
"L%*"2"2"4"4"4K)4F:&&5 -//$
'001CDD 2 2D#xxH6:i!I!2!2!2TJ'1F8$$!::j11#ZZ55

 S#..6Q.RR Sx S#..6Q.RR P#..0A:/N.OO $m<<<H ((<'.'1  )  I &--4'.  .  N !) 0 0C !1 ! ! X%% **]33 4)),77 4$+C,=,=,>,>$?	$,LLI$F$F	*y99"*"2"25[@Q"2"R"R#+#3#3F$|BT#3#U#Ux000&--g6666 'c 2 2%S%SU%S%S%S
!wwz22&--d333$jj33 aAKAAH,5MM'2,F,F)T)T()T)T)[)[\_)`)`Ig&%ll'>1JlKK::f%%00&??:66D&..uD<M.NNG'//d<>P/QQHNN8,,,"))'222 $999"),,g?b5c,"d"dKK"m33"),,g~5N,"O"OK **W--K 0 ((--%--h77
$'$4$4
!Z(((!((///$$[%9:::^,,,.///  ++++Yl	, l	,r   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   Конвертируем упоминания пользователейrt  userinfor.  userkeyu]   Не найдены аттрибуты для определения пользователя)	person_idperson_loginperson_hrefperson_namer  zuser-mentionr  )class_r  uZ   Не удалось преобразовать ссылку на пользователя zERR-0009r  N)r  r4   rh   r   r2  rG   r   r   r   r9  r   r   r+  r  r   r  r;  r<  r:  r  )r%   r   rK  rL  re  r#  r   rK  r  rL  rN  s              r   rG  z%ConfluenceAPIImport._convert_mentionsv  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k    rdS 	 |                      |          
|                     
dd          \  }}|s:t          j        r
}nddd| j        h}
fd|D             }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: Объект пользователя.
        unknownNFrh  rS  r   c                 *    i | ]}|v ||         S r   r   )r   rF  r   s     r   r   z3ConfluenceAPIImport._get_person.<locals>.<dictcomp>  s$     O O OC3$;;d3i;;;r   u>   Пользователь не найден в системе: u   по умолчанию u   'Система'u;   . Будет установлен пользователь zERR-0023r   r  )
rZ  rA  rd   DEBUGr=   r   r   r   r4   r  )r%   r`  r  r  r   r  	user_datar  r  
person_msgr   s             @r   r   zConfluenceAPIImport._get_person  sT   $ i4	0099D,,T5%@@IFA n< P $II):wND O O O O4 O O OI laj l lmmmn  	 	 	 
.DHDYq@@@@_q
))ccWacc)(	 *        	 s   A+A7 7
C;CC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 разметку r3  r  macroParamsr   r#   rq  rr  rZ   rs  extensionKeyrt  rq  r   r  r  r   ru  r  N)rE   ra  rG   r   r;  ri  r   rz  r  r  r  r4   r  )
r%   r  elemr#  rw  r  rL  rZ  r  ry  s
             r   _convert_msoviewer_in_atlas_docz3ConfluenceAPIImport._convert_msoviewer_in_atlas_doc  s   	Wl3MB6J7SI)--Sy-IIF W U U U UVVVT==c6:VVWWWWW 	 	 	T4=Q_C` T T*-(T T7:7J47PT T T  &&";<< JI0FIIII
*s**$JO%%%Mc &         	s   B B 
DA7DDr  c                 !   t          |          D ]}|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|                    |           nn|d         dk    r:d }|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    rd }|
                    d|d         d         i          }|rm|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&          }|rt+          |                    dd"                              |d         t1          j        |                              d'd(          t1          j        |                              d'd(          )          d*          }|                    |j                   n|d         d         d+k    rkd,}|
                    d|d         d         i          }|r@|d         d         d!         d"         d         }|rd#|v r|                    d#d$          \  }}n`t          |t           j                  r |j                                        d%         }n$|j        j                                        d%         }|}t+          |                    dd"                              t1          j        |                              d'd(          t1          j        |                              d'd(          -          d*          }|                    |j                   nH|d         d                             d.          rK|d         d         d!         d/         d         }|}t           j        	                    ||0          }d1}|s|d         d         d!         d2         d         }| j         d3| }t           j                            d&d4|gd5d6| d7gg d8gg d9:          }|rtA          |j!                  "                                rt                               ||| j        d;<          }|j        r|j        	                    d=          r|j        d=         }|	                    d>          |_#        |	                    d?          r>|d?         d         d@k    r,| $                    |d?         | j%                           |_&        ntN          j(        |_&        |j&        |_)        |*                    d;A           tW          tA          |j!                  dB          5 }|,                    |-                                d;dCD           d;|_.        |*                    d;A           d d d            n# 1 swxY w Y   t           j                            d&d6| dEgd5d6| d7gg d8gg dF:          }|r#tA          |j!                  "                                r|j/        }t           j        	                    d&d4|gdGdH|ggI          }|sKt                               |||j#        |j&        |j&        | j        d;J          }|*                    d;A           tW          tA          |j!                  dB          5 }|,                    |-                                d;dCD           d;|_.        |*                    d;A           d d d            n# 1 swxY w Y   nv| j0        1                    dKte          | j3        j                                        d%                   dL|dM          } | j        4                    dN| dO| dP|  dQdR|S           	|}t           j        	                    dGdH|gd&d6| dEggdTg:          }dU}dU}!|d         d         d!         	                    d          r |d         d         d!         d         d         }|d         d         d!         	                    dV          r |d         d         d!         dV         d         }!|j/        j5        |j6        j5        ||!dW}"|r|j7        |"dX<   nd"|"dX<   t+           |                    dd"          j        di |"d*          }|                    |j                   n|d         d         dYk    r>dZ}#te          |j6                  }$te          |j/                  }%dC|$|$d[d"d\dCd]}&|d         d         d!         }'|'rQ|'	                    d^          r;tp          9                    |'d^         d         :                                          |&d_<   |'	                    d`          r|'d`         d         }t           j;        	                    |j<        |0          }(|(s t           j        	                    |a          }(|(r,te          |(j6                  |&db<   te          |(j/                  }%n(| j        j                            dc|d                     |'	                    dd          r|'dd         d         |&de<   |'	                    df          r|'df         d         |&dg<   |'	                    dh          r|'dh         d         |&di<   |'	                    dj          r*d\dddk})|)	                    |'dj         d                   |&dl<   |'	                    dm          r*d&dndodp}*|*	                    |'dm         d                   |&dq<   |'	                    dr          r;tp          9                    |'dr         d         :                                          |&ds<   dt=                    du |'>                                D                       }+t+          |#                    |$|%tp          ?                    |&dCv          |+w                              dd"          d*          },|                    |,j                   n|d         d         dxk    r|                    ddxddy          }-|                    dzd
d{i          }.|.                    |d         d         d!         d{         d                    |-                    |.           |                    d|d}dd~d          }/|/                    |d         d         d!         d         d                    |-                    |/           |                    |-           n|d         d         dk    r| @                    |||d|           nU|d         d         dk    r| @                    |||d|           n'|d         dk    r|d         d         dk    r|d         d         d!         	                    d&          r|d         d         d!         d&         d         }d}|
                    d|d         d         i          }|rvt+          |                    dd"                              |d"=                    d |j        D                                 d*          }|                    |j                   n"| j        j                            d|            |	                    d          r| A                    ||d         ||           d S )Nr  layoutSectionr  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  r   r.  r   r  s     r   r  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  sJ     j j js'sy/AAAhVYV_`gVhFhFh FhFhFhr   r  columnLayoutr  r  r3  r5  r   zflex-basis: )zdata-column-widthzdata-layout-columnr  c                 6    g | ]}t          j         |          S r   )r  r  s     r   r  z:ConfluenceAPIImport._convert_atlas_doc.<locals>.<listcomp>  s     *V*V*VA49Q<<*V*V*Vr   	extensionlocalIdrK  u&   Не удалось найти тег u    для r  macroMetadatar  macroIdr8  r#   r  uU  
                    <div
                        class="macros-panel macros-include-block"
                        contenteditable="false"
                        data-id
                        data-macros="include-excerpt"
                        data-param-excerpt="{excerpt_name}"
                        data-param-pageid=""
                        data-param-pagename="{page_name}"
                        data-param-projectkey="{space_key}"
                    >
                        <div class="extension-container" contenteditable="false" data-id data-layout="default">
                            <span aria-label="Макрос Include. " data-id role="img">
                                <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                                    <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                                </svg>
                            </span>
                            <span class="extension-title" data-id>Макрос Include. "Вставить выборку" <span class="excerpt-title" data-id>| Имя = {excerpt_name}</span></span>
                            <span class="macros-actions" data-id>
                                <span class="macros-edit" data-id style="margin-right: 7px;">
                                    <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                        <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                    </svg>
                                </span>
                                <span class="macros-delete" data-id>
                                    <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                                        <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                        <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                        <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                    </svg>
                                </span>
                            </span>
                        </div>
                        <div class="ak-renderer-wrapper" data-id></div>
                    </div>
                    r  rU  r   r  rF  r   r  r  r  r  r  u  
                    <div
                        class="macros-panel macros-include-page"
                        contenteditable="false"
                        data-macros="include-page"
                        data-param-pageid=""
                        data-param-page-label="{page_label}"
                        data-param-projectkey="{space_key}"
                        data-rendered="true"
                    >
                        <div data-layout="default" class="extension-container" contenteditable="false">
                            <span role="img" aria-label="Макрос Include. ">
                                <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                                    <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                                </svg>
                            </span>
                            <span class="extension-title">Макрос Include. "Вставить страницу" <span class="excerpt-title">| Имя = {page_label}</span></span>
                            <span class="macros-actions">
                                <span class="macros-edit" style="margin-right: 7px;">
                                    <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                        <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                    </svg>
                                </span>
                                <span class="macros-delete">
                                    <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                                        <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                        <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                        <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                    </svg>
                                </span>
                            </span>
                        </div>
                        <div class="ak-renderer-wrapper"></div>
                    </div>
                    r  r+  diagramNamerq  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   r^  r-  r   r  ru  rv  r  Trl  r   r1  r6  r  r   rm  Frn  r1  )r  r   r;  r   r   r   )r   r   rC  rD  rA  r4   r   r}   r  r8  u7   Не найден файл Draw.io диаграммы 'rw  r	  rZ   zERR-0010r  r'  r2  r6  r3  r7  r   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  rx   r  r  r  r~  r1   r   r  uE   Не удалось обработать тег оглавления r  r  r  rx   r  r  r  r  r  r  rC  rF  r  r  r  r  rp  c              3   6   K   | ]\  }}| d |d          V  dS )r^  r#   Nr   r  s      r   r(  z9ConfluenceAPIImport._convert_atlas_doc.<locals>.<genexpr>f  s8      2k2k41aa3F3F!G*3F3F2k2k2k2k2k2kr   r  )r  r  rF  rx  zpaste-code-macro)r  r  r  r  r-  zlanguage-markuprS  )r  r  zdata-mce-selected__bodyContentrZ  r  r[  bodiedExtensionr  u  
                    <div
                        class="macros-panel macros-excerpt-block"
                        contenteditable="false"
                        data-id
                        data-macros="exceprt"
                        data-param-name="{name}"
                    >
                        <div class="extension-container" contenteditable="false" data-id data-layout="default">
                            <span aria-label="Макрос Include. 'Создать выборку'" data-id role="img">
                                <svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewbox="0 0 24 24" width="14" height="14">
                                    <path d="M19.949,5.536,16.465,2.05A6.958,6.958,0,0,0,11.515,0H7A5.006,5.006,0,0,0,2,5V19a5.006,5.006,0,0,0,5,5H17a5.006,5.006,0,0,0,5-5V10.485A6.951,6.951,0,0,0,19.949,5.536ZM18.535,6.95A4.983,4.983,0,0,1,19.316,8H15a1,1,0,0,1-1-1V2.684a5.01,5.01,0,0,1,1.051.78ZM20,19a3,3,0,0,1-3,3H7a3,3,0,0,1-3-3V5A3,3,0,0,1,7,2h4.515c.164,0,.323.032.485.047V7a3,3,0,0,0,3,3h4.953c.015.162.047.32.047.485Z"></path>
                                </svg>
                            </span>
                            <span class="extension-title" data-id>Макрос Include. 'Создать выборку' <span class="excerpt-title" data-id>| name = {name}</span></span>
                            <span class="macros-actions" data-id>
                                <span class="macros-edit" data-id style="margin-right: 7px;">
                                    <svg _ngcontent-aiw-c17="" viewbox="0 0 24 24" class="ng-star-inserted" style="width: 14px; height: 14px; color: #444444;">
                                        <path _ngcontent-aiw-c17="" fill="#444" d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                                    </svg>
                                </span>
                                <span class="macros-delete" data-id>
                                    <svg viewbox="0 0 18 18" class="ng-star-inserted" style="width: 14px; height: 14px; color: #222222;">
                                        <path fill="#222" d="M16.5 3H12.75V1.5C12.75 1.10218 12.592 0.720644 12.3107 0.43934C12.0294 0.158035 11.6478 0 11.25 0L6.75 0C6.35218 0 5.97064 0.158035 5.68934 0.43934C5.40804 0.720644 5.25 1.10218 5.25 1.5V3H1.5V4.5H3V15.75C3 16.3467 3.23705 16.919 3.65901 17.341C4.08097 17.7629 4.65326 18 5.25 18H12.75C13.3467 18 13.919 17.7629 14.341 17.341C14.7629 16.919 15 16.3467 15 15.75V4.5H16.5V3ZM6.75 1.5H11.25V3H6.75V1.5ZM13.5 15.75C13.5 15.9489 13.421 16.1397 13.2803 16.2803C13.1397 16.421 12.9489 16.5 12.75 16.5H5.25C5.05109 16.5 4.86032 16.421 4.71967 16.2803C4.57902 16.1397 4.5 15.9489 4.5 15.75V4.5H13.5V15.75Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                        <path fill="#222" d="M8.25 7.5H6.75V13.5H8.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                        <path fill="#222" d="M11.25 7.5H9.75V13.5H11.25V7.5Z" stroke="none" stroke-width="1" class="ng-star-inserted"></path>
                                    </svg>
                                </span>
                            </span>
                        </div>
                        <div class="ak-renderer-wrapper" contenteditable="true" data-fabric-macro="null" data-id data-macro-body="">{content}</div>
                    </div>
                    c                 ,    g | ]}t          |          S r   r7  r  s     r   r  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   )Br  rK  r2  poprc  r   r  r  r;  rG   r:  r4   rh   ri   r=  r  rE   r  rz  r   r   r   r   r9  r  r  r<  r  ra  rA   rA  r  r   r;  r   rC  r   r=   rD  r   rB  rA  r   r	  rv  r   r   r   r?   r   r   r  r  r#   r   r'  r
  r  rj  r/   r  r   r_  r  r  r  )0r%   r  r  r  r  r  tag_layout_sectionr#  rc  r  r  colr5  tag_layout_colr=  macro_paramsr   r  r  r   r  r   rL  rZ  r  
doc_ext_idr+  r  r  
drawio_imgfile_name_imgr@  ra  r6  rA  re  r  r  rF  rx  parent_pager  r  original_params_strr2  
code_blockr  r#   s0                                                   r   r  z&ConfluenceAPIImport._convert_atlas_doc   s   Y'' g	S g	SD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.2k).D.D.L.LTSY.Z.Z.2k).D.D.L.LTSY.Z.Z !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/3{:/F/F/N/NtU[/\/\.2k).D.D.L.LTSY.Z.Z !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^"_(,(8%E%EG%E%E
!'!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 )-(:(C(C * #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ROg	S g	Ss&   "A^66^:	=^:	<Add	d	  c                    | j         j        rdnd| j        dd| j        dd}||         }|d         }|d         }dt                                           d	}	t                                          5  t                                          5  t          	                                5  | j
        j                            |	 d
           t          j                            |g d          | _        | j        j        dk    r/t          j                            dd|gg dgdg          | _        n| j        | _        | j        j        j        }
| j                            |
d                   | _        | j                            d          | _        t4          j        }| j
        j                            |	 d| d| d           t9          || j                  | _        t?          j                     | _!        t?          j"                    | _#        d| _$        	 g }tK          |          D ]s}t?          j&        ||j'         d| d|i          }|(                                 |)                    |           | j
        j        *                    |	 d| d           t| j
        j                            |	 d| d            |D ];}|+                                 | j
        j        *                    |	 d| d!           <	 | j        ,                                 n# | j        ,                                 w xY w| j
        j                            |	 d"| d#| j$                    t[          j.        d$           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )%Nu   документов/папокrI  )r   funcrJ  rK  r   r  z[PID:r  u    Процесс запущен)r  rz  r  z#scheme_wf.default_document_workflowr  r  r  r   r  rz  r  rF  r  u!    Запуск обработки u    с u    потоками ...r-  r   r  r  r  u    Поток u    запущенu%    Ожидание обработки z...u    завершенu'    Завершена обработка r.  rf  )/r3   r<   r)  r  r  r1  r  r  disable_notifyensure_recursion_limitr4   rh   r   rE   r  rG   ru  r  r/   r  rz  r#   r   r   r   r   rd   rP  r   rq   r  rP   r  rj  r  r  r  r  r  r   r   r   rx  r   r  r   rW  )r%   
project_idr)  r*  r  r]  r  r3  	item_funclog_processr   num_threadsr  r  r  s                  r   run_threaded_processz(ConfluenceAPIImport.run_threaded_process  s0    >B_=Rn99Xn. 
 <. 	
 	

 )$L	L	,biikk,,,  "" K	 K	##%%K	 K	++--K	 K	 O"'';(V(V(VWWW!,00   1  DL |(O;;#)#5#9#9)4<<<< .. $: $ $   $(< $4:E#099%,GGD $ 0 9 9+ F FD !/KO"''rrrrP[rrr   0,  DO (o//DO ) 0 0D+,D(3{++ 
f 
fA&-( ) 288Q88'   F LLNNNNN6***O*00K1d1dV1d1d1deeee&++{,o,oaj,o,o,oppp% h hFKKMMMO*00K1f1fV1f1f1fggggh 002222002222O"'' 2 2y 2 2/2 2  
 JsOOOWK	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	 K	su   2N4N&E1NC(LNL6	6AN9NN		NN	NN4N 	 N4#N 	$N44N8;N8r!   )F)r  r_   )TNN)TT)T)NF)NN)r  )r   r   r   r   r  r  r   rE   	CmfImportrS   rI   rJ   rK   rL   rM   rN   r   r   r   r   r   r   r   staticmethodr   r  rB   r   r  r  r  r   rO  rd  rZ  r  r  r  r  r  r  r  r  r  r%  r,  rW  rd  rq  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r-  rM  rQ  r\  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r)  r  r  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r5  rG  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r!  rA  rG  rI  rW  r`  rc  rg  rk  rp  rH  r  r  r  rG  r   r  r  r  r   r   r   r*   r*   3   sD       EE  N
(= (f>N ( ( ( (,!K !K !KF6 6 66 6 6/ / /
;Q ;Q ;Qz
2 
2 
2 / /# / / / ^/(   ^&   ^,8d 8 8 8 8 0d 0t 0 0 0 \0    ?U ?U ?UB) )3 ) ) ) )    Et Etd Et Et Et Et EtNM M M2a a a a$A A AF!= != !=F# # # . . . . .
7 
7 
7Y Y Y<7P 7P 7Pr+ + +Z  8Gt G$ G G G G0E E E\- \- \-|. . . .`* * *B
; 
; 
; 
;7 7 7r.* .* .*`<* <* <*|+* +* +*Z7* 7* 7*r       *j j jX/  /  / b6Y 6Y 6Yp& & &Po o o' ' ':     = = =
	
 	
 	
$ $ $
  2     <# <# <#|=x =x =x~& & &E$ E$ E$N   / / \/0  $f@ f@ f@PK K K KZ  	 	 	2$ 2$ 2$h, , ,6$ 6 6 6 6p  8	 	 	S/ S/ S/jT    4 '  '  'D  65 5 5n(F (F (FTW/ W/ W/r.H .H .H`7 7 7r_" _" _"B   @z9 z9 z9x<9 <9 <9|J9 J9 J9XA9 A9 A9FU9 U9 U9nl9 l9 l9\G9 G9 G9RP9 P9 P9d|9 |9 |9|g" g" g"R/> /> />b-> -> ->^ N" N" N" \N"`J9 J9 J9X] ] ] ]~R9 R9 R9h:9 :9 :9x@9 @9 @9D$J $J $JL  4& & &@0
 0
 0
dZ! Z! Z!x1 1 1f\ \ \|", ", ",He e eN  :39 39 39j6% 6% 6%p+ + +
+ + +
1 1 1
3 3 3
  <) ) )V  ,: : :xG G GR3 3 302 2 2  4  &. . .`; ; ;z# # ## # #`" `" `"D `" `" `" `"D'` '` '`R  <;| ;| ;|z
 
 
6 6 6% % %N- - -<  m m m m^U U U(r* r* r*h	N, N, N,`BM3 BM BM BM BMH, , , ,\   0hS hS hSRU hS hS hS hST\ \ \ \ \ \r   r*   )-r  r'  r  r>  rl  r5  r  rP   r   r/  
contextlibr   enumr   	itertoolsr   pathlibr   typingr   r  bs4r   cmf.appr	   cmf.include%common.models.cmf_plugin_import_mixinr   modules.confluence.apir   %modules.confluence.utils.queue_brokerr   r   modules.jira.jql.parserr   r   r   r   r   r   rE   r/   r?  r  r*   r   r   r   <module>r     s$           				        % % % % % %       " " " " " "                              F F F F F F 0 0 0 0 0 0 J J J J J J J J 1 1 1 1 1 1	 	 	 	 	) 	 	 	
	 	 	 	 	y 	 	 	
    #t    #2 ,Sw Sw Sw Sw Sw Sw Sw Sw Sw Swr   