
    j                         d dl mZ d dlmZmZ d dlZd dl  G d dej                  j                  j                  j                        Zy)    )Path)urlparse
urlunsplitN)*c                       e Zd Zej                  j
                  j                  j                  j                  dz   ZdZ	dZ
ej                  j
                  j                  j                  j                  g dz   Zd Zddddd fd
Zd	d
 fd
Zed        Zd Zd ZdefdZd#defdZdefdZdefdZdefdZdefdZdefdZd Zd Z fdZ fdZe d        Z!e d        Z"d$dZ#d%dZ$d&d Z%d! Z&d" Z' xZ(S )'CmfPluginConfluence)
confluenceNT)get_all_spacesget_space_pagesget_total_spacesget_page_by_idc           
          | j                   ry 	 t        j                  d| j                  | j                  | j
                  |||d|}|j                          || _         y )N)nametypetokenext_url	ext_login	ext_token )pluginmodels	CmfPlugincode
class_nameidsave)selfr   r   r   kwargsr   s         4./modules/confluence/models/cmf_plugin_confluence.py_init_secretz CmfPluginConfluence._init_secret   sY    ;;1!! gtyytdgg*1YR[g_eg    r   )depthr   r   r   c                d    | j                   r| j                  |||       t        |   |d|i|S )Nr"   )is_newr    superr   )r   r"   r   r   r   argsr   	__class__s          r   r   zCmfPluginConfluence.save   s5    ;;gy)<w|T99&99r!   F)forcec                    t         j                  j                  dd| j                  gg d      }|j	                          t        |   |d|i|S )Nr   ==)r   r   r   r   filterfieldsr(   )r   r   getr   deleter%   )r   r(   r&   r   r   r'   s        r   r/   zCmfPluginConfluence.delete!   sQ    !!%%gtTWW-E-[ & ]w~t;5;F;;r!   c                    | j                   sddlm} | j                  g d        || j                  j
                  j                  | j                  j                  j                  | j                  j                  j                         | j                  j                  j                         | j                  j                  j                  | j                  j                  j                        | _         | j                   S )Nr   )ConfluenceApi)r   zplugin.ext_urlzplugin.ext_loginzplugin.ext_tokenzplugin.verify_sslzplugin.cloudzplugin.ext_password)urlusernamepasswordr   
verify_sslcloud) _CmfPluginConfluence__confluencemodules.confluence.apir1   load_fieldsr   r   valuer   ext_passworddecryptr   r5   r6   )r   r1   s     r   r	   zCmfPluginConfluence.confluence'   s      <   !.KK''--..441199;kk++335;;1177kk''--!D    r!   c                    | j                   5 }|j                  j                  j                          |j	                  d      5  |j                         }|j                         }d d d        d   }|j                  j                  d      |k7  rt        d| d       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)N   )timeoutr2   /u   Указанный адрес отличается от основного URL-адреса Confluence.<br />Пожалуйста, используйте основной URL для корректной работы.<br />Основной URL: <strong>z	</strong>)
r	   _sessioncookiesclearwithout_retryget_current_userget_system_infor2   rstrip	cmf_alert)r   r	   current_usersystem_infobase_urls        r   check_connectionz$CmfPluginConfluence.check_connectionA   s    __ 	
''--/))!)4 ;)::<(88:; #5)H~~$$S)X555=JiI	 	; ;	 	s#   7B4!B(%:B4(B1	-B44B=c           	         g }	 | j                   5 }|j                  |d      D cg c]  }| }}|j                  |dd      D cg c]  }| }}|r| ddddd	|iid
}	|j                  |	       d d d        |S c c}w c c}w # 1 sw Y   |S xY w# t        $ r}
t
        j                  |
       t        j                  j                  |g d      }|j                         j                  d      }|j                         r\t        |j                  |d            5 }t        j                  |      }|d   D ]k  }|j                  |d|d      }|j                         s(t        |      5 }|j                  t        j                  |             d d d        a# 1 sw Y   jxY w g }|j                  dg       D ]k  }|j                  |d|d      }|j                         s(t        |      5 }|j                  t        j                  |             d d d        a# 1 sw Y   jxY w |r| ddddd	|iid
}	|j                  |	       d d d        n# 1 sw Y   nxY w Y d }
~
|S d }
~
ww xY w)Nzchildren.pager   archived)status_archived_pagesarchiveu!   Архивные страницыpageresults)r   r   titlechildrenr   zplugin.*zplugin.plugin.*r   r-   projects	info.json
root_pages	documentsarchived_pages)r	   get_root_pages_from_spaceget_all_pages_from_spaceappend	Exceptiongdebugr   	CmfImportr.   get_download_pathjoinpathexistsopenjsonload)r   keycmf_import_idr&   r   resr	   objrQ   r\   e
cmf_importdump_dirfprojectroot_page_iddoc_filef2archived_page_ids                      r   r   z#CmfPluginConfluence.get_space_pagesP   sp   (	 /J&0&J&J3P_&`assaa*4*M*McST]g*M*hi33ii!$_5 )!D%+i-A$B	&N JJ~./P 
O bi/P 
9  	GGAJ))--Gk-lJ!335>>zJH (++C=> 3!"iilG(/(= :#+#4#4S+|U`#a#??,!%h :2 #

499R= 9: : ::
 !G,3KK8H",M >(#+#4#4S+GWYd#e#??,!%h >2 'tyy} => > >>
 %(E"9$-%H)/)W1E(F	* 

>2)3 3 3, 
9	s   B B	A<B	B#B2B <
BBB B 
I-BI( AI#I.%F		IF%!AI%I0%H		IH'#)I	I(I	I((I-rk   c                    d}	 | j                   5 }|j                  ddd      }ddd       d   }|S # 1 sw Y   xY w# t        $ r}t        j	                  |       t
        j                  j                  |g d      }|j                         j                  d	      }	|	j                         r!t        d
 |	j                         D              }n Y d}~|S d}~ww xY w)uI    Получает общее количество пространств r   z
type=spaceT)cqllimitinclude_archived_spacesN	totalSizerV   rW   rX   c              3   B   K   | ]  }|j                         sd   yw)r>   N)is_dir).0ps     r   	<genexpr>z7CmfPluginConfluence.get_total_spaces.<locals>.<genexpr>   s     H!QXXZAHs   )r	   rx   r`   ra   rb   r   rc   r.   rd   re   rf   sumiterdir)
r   rk   r&   r   totalr	   responsern   ro   rp   s
             r   r   z$CmfPluginConfluence.get_total_spaces}   s    	 cJ%>>l!]a>bc[)E c c  	GGAJ))--Gk-lJ!335>>zJH Hx'7'7'9HH  	s*   A  4A  =A   	C	B	CCc           	         | j                  dg       g }	 | j                  5 }|j                  |      D ]  }|d   |d<   |d   }|d   dk(  r|dz  }n#|dt        |d	         j	                          d
z  }d| j
                  j                   d|d    d}	t        j                  j                  ddd|	 dgddg      }
|
r|dz  }||d<   |j                  |        	 d d d        |S # 1 sw Y   |S xY w# t        $ r}t        j                  |       t        j                  j                  |g d      }|j!                         j#                  d      }|j%                         rot&        j)                  |      D ]V  }t+        |j#                  |d            5 }|j                  t,        j/                  |             d d d        L# 1 sw Y   UxY w n Y d }~|S d }~ww xY w)Nzplugin.source_hash)slicer   original_namer   personalu(    (Личное пространство)z (rj   )::r   ext_idLIKE%T--)r,   include_deletedr-   u    [импортирован]rV   rW   rX   rY   )r9   r	   r
   strupperr   source_hashr   
CmfProjectsgetr_   r`   ra   rb   rc   r.   rd   re   rf   oslistdirrg   rh   ri   )r   rk   r   r&   r   rl   r	   space
space_nameproject_ext_idrr   rn   ro   rp   rj   rq   s                   r   r
   z"CmfPluginConfluence.get_all_spaces   s   ./0	 &J'66U6C &E-26]E/*!&vJV}
2"&PP
 #3uU|+<+B+B+D*EQ&GG
')$++*A*A)B"U4[MQS%TN$//44 (&An5EQ2GH(, $v 5 G
 "&CC
$.E&MJJu%#&&< 
=&< 
  
	GGAJ))--Gk-lJ!335>>zJH ::h/ 1Ch//[AB 1a

499Q<01 1 11 	1
 

	sN   C7 B=C* C7 *C4/C7 4C7 7	G" BG%G?	GG
GG"c                    	 | j                   5 }|j                  |dd      cd d d        S # 1 sw Y   y xY w# t        $ r}t        j	                  |       t
        j                  j                  |g d      }|j                         j                  d      }|j                         rt        j                  |      D ]q  }	|j                  |	d|      }
|
j                         s't        |
j                  d            5 }t        j                  |      cd d d        c cY d }~S # 1 sw Y   pxY w t        d	       d }~ww xY w)
NFT)detailedwith_childrenrV   rW   rX   r[   rY   u,   Документ не попал в дамп)r	   r   r`   ra   rb   r   rc   r.   rd   re   rf   r   r   rg   rh   ri   )r   page_idrk   r&   r   r	   rn   ro   rp   rj   doc_dirrq   s               r   r   z"CmfPluginConfluence.get_page_by_id   s   	L ^J!005X\0]^ ^ ^ 	LGGAJ))--Gk-lJ!335>>zJH ::h/ 0C&//['JG~~'!'"2"2;"?@ 0A#'99Q<0 0 0 00 JKK 	LsN   8 ,	8 58 8 
EB"D>%D>?D%D>E%D.*D>>Ereturnc                 P    ddl m}  || j                  |      j                         S )u   
        Инициализация настроек
        :param models.CmfImport cmf_import: Объект импорта.
        r   ConfluenceAPIImport)modules.confluence.api_importr   r	   calc_import_settingsr   ro   r   s      r   r   z(CmfPluginConfluence.calc_import_settings   s"    
 	F"4??J?TTVVr!   c                 P    ddl m}  || j                  |      j                         S )u   
        Предварительный просмотр данных
        :param models.CmfImport cmf_import: Объект импорта.
        r   r   )r   r   r	   previewr   s      r   r   zCmfPluginConfluence.preview   s"    
 	F"4??J?GGIIr!   c                     ddl m} d|_        | j                  5 } |||      j	                         cddd       S # 1 sw Y   yxY w)ux   
        Процесс импорта
        :param models.CmfImport cmf_import: Объект импорта.
        r   r   u)   Импорт данных из ConfluenceN)r   r   r   r	   process_importr   ro   r   r	   s       r   r   z"CmfPluginConfluence.process_import   sD    
 	FE
__ 	P
&z:>MMO	P 	P 	Ps	   ;Ac                     g S Nr   )r   s    r   calc_models_settingsz(CmfPluginConfluence.calc_models_settings   s    	r!   c                     ddl m} | j                  5 } |||      j                         cd d d        S # 1 sw Y   y xY wNr   r   )r   r   r	   download_datar   s       r   r   z!CmfPluginConfluence.download_data   s:    E__ 	O
&z:>LLN	O 	O 	O   4=c                     ddl m} | j                  5 } |||      j                         cd d d        S # 1 sw Y   y xY wr   )r   r   r	   download_filesr   s       r   r   z"CmfPluginConfluence.download_files   s:    E__ 	P
&z:>MMO	P 	P 	Pr   c                    |j                  dg       |j                  r|j                  d   j                  d      r|j                  d   j                  d      dd  }|j                  d   j                  d      r0t        j                  j                  |j                  d   d   |      S t        |j                  d   d         }t        |j                  |j                  |ddf      S t        | -  |      S )Nimport_raw_json_linkswebuir>   baser    )r9   r   r.   r   pathjoinr   r   schemenetlocr%   calc_ext_href)r   rm   linkself_urlr'   s       r   r   z!CmfPluginConfluence.calc_ext_href   s    *+,3#6#6x#@#D#DW#M&&x044W=abAD""8,008ww||C$7$7$A&$I4PP#C$7$7$A&$IJ!8??HOOT2r"RSSw$S))r!   c                     |j                  dg       |j                  dv r|j                  r|j                  d   S t        |   |      S )Nr   )r   CmfDocumentr   )r9   r   r   r%   calc_dump_path)r   rm   r'   s     r   r   z"CmfPluginConfluence.calc_dump_path   sI    *+,>>::s?R?R&&v..w%c**r!   c                 H
   dd l }dd l}ddlm} ddlm} d}	d| d}
t        j                         5  t        j                         5  t        j                         5  t        j                  j                  | ddg      }|j                  j                  |
 d	        ||j                  j                   |      }|j#                          t        j$                  j                  |g d
      }|}|j&                  j(                  dk(  r3t        j*                  j                  dd|j,                  gg dgdg      }|j.                  j0                  }||_        g }|j4                  j7                  d      }|j4                  j7                         }t        j8                  j                  d|      }|j:                  }|j                  j                  |
 d| d       |j                   j=                         }t?        |j:                        D ]~  }|j@                  jC                  |jD                  d| ||||d      }|jG                  |       |jI                          |jJ                  j                  j                  |
 d| d        d}|j                  d      }|stM        d       }|jO                  |d   ||      D ]h  }|d   |jP                  vr|d    d!k(  r|d"z  }|d   |d#   |d$   tS        |d         jU                  d%      |d   |d   k(  d&}|jW                  |       j |D ]  }|jW                  d'        |jJ                  j                  j                  |
 d(       |D ]>  }|jY                          |jJ                  j                  j                  |
 d| d)       ~@ |jJ                  j[                         rIt]                |jJ                  j                  j_                  d*       	 d d d        d d d        d d d        y |j                   j=                         |z
  }|jJ                  j                  j                  |
 d+||ja                         z   d,       d}|jc                         s$||j                         z  }|jc                         s$|jJ                  j                  j                  |
 d-|        |	|z  }	|je                  d"       d d d        d d d        d d d        |	S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |	S xY w).Nr   cmf_contextr   []r   r   rW      : запущен)
logic_typer   descr_documentz#scheme_wf.default_document_workflowproject.agile:defaulttree_parent_idr*   r   r*      Документыr   r+      maxsizerQ   )sys_typetree_parentu8   : начал обработку документов с     потоками..._process_document_fork)	obj_queue
done_queuerr   archive_foldertargetr   r      : поток     запущенhomepage)r   r   r   rO   trashedr>   rT   r   r[   )r   rT   r   r   is_homepageDONEu=   : ожидание обработки документов...    завершен   Импорт прерван   : скорость '    документов в секундуuJ   : завершил обработку документов. Ошибок: )3datetimetimecmf.appr   r   r   cmfutildisable_acldisable_notifyensure_recursion_limitr   rc   r.   loggerinfor   r	   _load_selected_objsr   r   r   r   r   r   r:   root_parentqueueQueue	CmfFolderthreading_max_forksnowrange	threadingThreadr   r_   startro   dict_get_documents_selected_objsr   re   putr   	is_cancelcommit_with_eventwarningtotal_secondsemptysleep)rk   
project_idoffsetry   	worker_iddtr   r   r   errors
worker_msgro   
api_importrr   r   r   obj_processr   r   r   num_threadssiproccntr   docdoc_datadiff
has_errorss                                 r   process_document_forkz)CmfPluginConfluence.process_document_fork   s$   'E1%
  " q	##%q	++-q	  ))--X-WJ""j\1A#BC,Z->->-I-I:VJ**,''++ , G "K!!&&*AA$0044-tWZZ@Bfg-. 5 
  //55E%0J"K"((..s.;I#))//1J#--119RY1ZN %88K"",VWbVccwx !A:99: e!++22%<<1!5%.&0#**8	 3 	 ""4(

%%,,11ZLdVSb2cde Cyy,H4=!00vN (t9J$=$==x=I-qd) \K#E&M2;;KH#&t9#> h'(" $ &f%&!!((--,[\ $ 		%%,,11!l-v5FG  $$..0!#%%,,445RSCq	 q	 q	 q	F ;;??$q(D!!((--,1#8J8J8L2L1MMtu J &&(jnn..
 !&&( !!((--,hishtu j FJJqMcq	 q	 q	f gq	 q	 q	 q	 q	f sV   TTN"S?=TTBS?%A S?%T-T?TTT	TT!c                 |	   dd l }dd l}ddlm} ddlm} d}	d| d}
t        j                         5  t        j                         5  t        j                         5  t        j                  j                  | ddg      }|j                  j                  |
 d	        ||j                  j                   |      }|j#                          t        j$                  j                  |d
dg      }|}|j&                  j(                  dk(  r3t        j*                  j                  dd|j,                  gg dgdg      }|j.                  j0                  }||_        g }|j4                  j7                  d      }|j4                  j7                         }|j8                  }|j                  j                  |
 d| d       |j                   j;                         }t=        |      D ]|  }|j>                  jA                  |jB                  d| ||d      }|jE                  |       |jG                          |jH                  j                  j                  |
 d| d       ~ d}|jK                  |d   ||      D ]K  }|d   dk7  r|d   |jL                  vr|d   dk(  r'|d z  }|d   |d!   |d   d"}|jO                  |       M |D ]  }|jO                  d#        |jH                  j                  j                  |
 d$       |D ]>  }|jQ                          |jH                  j                  j                  |
 d| d%       ~@ |jH                  jS                         rItU                |jH                  j                  jW                  d&       	 d d d        d d d        d d d        y |j                   j;                         |z
  }||jY                         z  }|jH                  j                  j                  |
 d'|d(d)       d}|j[                         s$||j                         z  }|j[                         s$|jH                  j                  j                  |
 d*|        |	|z  }	|j]                  d        d d d        d d d        d d d        |	S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |	S xY w)+Nr   r   r   r   r   r   r   rW   r   r   r   r   r   r*   r   r+   r   r   uE   : начал обработку версий документов с r   _process_doc_versions_fork_)r   r   r   r   r   r   r   rR   r   rO   r   r>   rT   )r   rT   r   r   uJ   : ожидание обработки версий документов...r   r   r   z.3fr   uW   : завершил обработку версий документов. Ошибок: )/r   r   r   r   r   r   r   r   r   r   r   rc   r.   r   r   r   r	   r   r   r   r   r   r   r   r:   r   r   r   r   r   r   r   r   _process_doc_versions_forkr_   r   ro   r   r   r   r   r   r   r   r  r  r  )rk   r  r  ry   r  r  r   r   r   r  r	  ro   r
  rr   r   r   r  r   r   r  r  r  r  r  r  r  r  speedr  s                                r   process_doc_versions_forkz-CmfPluginConfluence.process_doc_versions_fork~  s   'E1%
  " c	##%c	++-c	  ))--X-WJ""j\1A#BC,Z->->-I-I:VJ**,''++z<QbBc+dG!K!!&&*AA$0044-tWZZ@Bfg-. 5 
  //55E%0J"K"((..s.;I#))//1J %88K"",cdocp  qE  F !A;' e!++22%@@6qc:%.&0 3  ""4(

%%,,11ZLdVSb2cde C!00vN (v;&(t9J$=$==x=I-qd) \K
 h'!($ $ &f%&!!((--,hi $ 		%%,,11!l-v5FG  $$..0!#%%,,445RSec	 c	 c	 c	h ;;??$q(D$,,..E!!((--,1%<cd J &&(jnn..
 !&&( !!((--,u  wA  vB  C j FJJqMGc	 c	 c	J Kc	 c	 c	 c	 c	J sV   R1R%L9RR%R1-BR?A R?R%R1R"R%%R.	*R11R;c                    ddl m} dt               g d}dt               dd}t               }t        |j                  j
                  j                  d            }|j                  |      }	|	j                         r[t        |	d      5 }
|
D ]>  }t        j                  |      |j                  t        d            f       |dz  }@ 	 d	d	d	       n|	j                         r|	j                         D ]  }|j                         s|j                   j#                  |j$                        r;|j                  d
      }|j'                         s]t        |d      5 }
t        j)                  |
      d	d	d	       d   dk7  r|j                  t        d            f       |dz  }|dk(  sg }|j                  d      }|j'                         r*t        |d      5 }
t        j)                  |
      }d	d	d	       i }|D ]]  }|d   }|d   d   }d|v r	|d   d   }n+t*        j-                  d|      }|r|j/                  d      nd}t        |d         || d| <   _ |j                  d      }|j'                         rv|j                         D ]c  }|j                         s|j                   |v s#|j1                  |j                         }|d   j                     |f       |dxx   dz  cc<   e |r6|d   j3                     dj5                  |j7                               f       fd|j                  d      }|j'                         sht        |d      5 }
|
D ]  }t        j                  |      } |       ! 	 d	d	d	        ||d}|dk(  r
||d<   |d<   |S # 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   xY w)u  
        Возвращает информацию о дампе сущности,
        общее количество объектов и множество объектов в виде кортежей (id, name/key).
        Для документов дополнительно добавляется информация об их вложениях
        и комментариях с множеством кортежей вида (key, id/name)

        Args:
            project (object): объект CmfProject
            entity (str): название сущности (название каталога или файла)
            field (str, optional): дополнительное поле сущности 
                                   для добавления в кортеж объекта вместе c id.
                                   Defaults to "name".

        Returns:
            dict: _description_
        r   r   )countobjsundownloadedr  r  r   zr+r   r>   NrY   r   rR   r[   zattachments.jsonr   downloadversionnumberz[?&]version=(\d+)rT   .attachmentsr  r  r  z, c                     d   j                     t        | d         f       dxx   dz  cc<   | d   D ]
  } |        y )Nr  r   r  r>   rU   )addr   )commentchild_commentcomment_statsdump_stats_commentfieldobj_datas     r   r*  zICmfPluginConfluence._get_dump_stats_by_entity.<locals>.dump_stats_commentJ  sU    %f-118E?CPTDV2WX%g.!3.-4Z-@ >M.}=>r!   zcomments.jsoncomments)r   r   setr   r   r:   r.   re   is_filerg   rh   loadsr&  r   r}   r   r   endswithexcluded_doc_dir_endingsrf   ri   researchgrouppopr_   r   values)r   rr   entityr+  r   attachment_statsdumped_countdumped_objsproject_dir	objs_pathrq   rowobj_dirobj_data_filer$  attach_fileattachment_idsattatt_iddownload_linkr!  attachments_diritem	att_titlecomment_data_filecomment_datastatsr)  r*  r,  s      `                       @@@r   _get_dump_stats_by_entityz-CmfPluginConfluence._get_dump_stats_by_entity  s	   " 	F E
 E

 e72288<<VDE((0	i& &! &C#zz#HOOS$%8(5/$JK A%L&& &
 $,,. :A~~'<<(()<)U)UV ' 0 0 =$++--. ,!#yy|H,F#v-Xd^!4huo FG![("$K")"2"23E"FK"))+!+t4 7*.))A,K7%'N* R!$T(+Hj(A$+&))nX&>G&(ii0Dm&TG:AgmmA&6qG@CCL@Q&7)'<=R '.&6&6}&EO&--/$3$;$;$= ?D#'<<> (#yyN:,:,>,>tyy,I	 0 8 < <huoy=Y Z 0 9Q > 9? &(8??$UOTYY~7L7L7N-OA >
 )0(8(8(I%(//1!"3T: Aa'( A/3zz# 2< @AA Ao:Az "
 [ #3E-  -E*U& &, ,7 7HA As1   AN8&O)O1%O8OO	O	O(	c           	      &   dd|gg dg}|r|j                  |       t        j                  |      }|j                  |d      }t	               }d}	t        d||	      D ]*  }
|j                  |g dd|
|
|	z   g	      }|D ]  }|j                  r|j                  j                  d
      d   nd}|j                  }|j                  r3t        |j                  d         }|j                  j                  |      }|dk(  r2|j                  |j                  j                  |j                  f       |dk(  r(|j                  |j                  j                  |f       |r|j                  ||f       |j                  |        - ||d}|S )u  
        Возвращает информацию об обработанных объектах сущности

        Args:
            project (object): объект CmfProject
            entity (str): название cmf модели
            filter_by (list, optional): дополнительный фильтр. Defaults to None.
            field (str, optional): дополнительное поле сущности 
                                   для добавления в кортеж объекта вида (id, name/key).
                                   Defaults to None.

        Returns:
            dict: _description_
        rr   =)ro   !=NT)r,   include_archivedd   r   )r   r   r   zparent.namer   )r,   r-   rP  r   r   r>   Nr   CmfAttachment
CmfCommentr  )r_   r   get_model_by_namer  r.  r   slistr   splitr   r   r   r.   r&  parent)r   rr   r8  	filter_byr+  filter_modelprocessed_countprocessed_objsstepr   r  rm   obj_id	obj_fieldrK  s                   r   _get_process_stats_by_entityz0CmfPluginConfluence._get_process_stats_by_entity_  s     W%&
 NN9%))&1++Wt+L1ot4 	/E;;Q!%edl+	  D  /69jj))$/2dHH	&& !4!4T!:;F # 3 3 7 7 >I_,"&&

'BC|+"&&

'@A"&&	':;"&&v./	/. %"
 r!   c                 Z    |j                  |      }||z
  }|s|rdndt        |      d}|S )u  
        Возвращает результат проверки сдампленных и обработанных объектов
        в виде статуса и множества необработанных объектов в виде кортежей

        Args:
            dump_objs (set): сдампленные объекты
            process_objs (set): обработанные объекты
            has_undownloaded (bool, optional): есть незагруженные вложения
        u   НЕКОРРЕКТНОOK)rO   unprocessed)intersectionlist)r   	dump_objsprocess_objshas_undownloadedrd  rc  results          r   _check_consistencyz&CmfPluginConfluence._check_consistency  s@     !--l;,.2=AQ.W[,
 r!   c                 $   | j                   j                  d       | j                  |dd      }| j                   j                  d|d           | j                   j                  d|d   d           | j                   j                  d	|d
   d           | j                   j                  d       | j                  |dd      }| j                   j                  d|d           d|d   |d   d}g d}| j                   j                  d       | j                  |dg d|gd      }| j                   j                  d|d           d|d   d   |d   d   |d   d}| j                   j                  d       | j                  |dg d|g      }| j                   j                  d|d           d|d
   d   |d   d}	| j                   j                  d        | j	                  |d!   |d!         }
| j                   j                  d"|
d#           |j                  |
       | j                   j                  d$       | j	                  |d   d!   |d!   t        |d   d         %      }| j                   j                  d&|d#           |j                  |       | j                   j                  d'       | j	                  |d
   d!   |d!         }| j                   j                  d(|d#           |	j                  |       |||	gS ))u$  
        Возвращает статистику по документам проекта, их вложениям и комментариям

        Args:
            project (object): объект CmfProject

        Returns:
            dict: данные статистики
        uz   Сбор информации о сдампенных документах, вложениях и комментарияхr[   rT   )r+  u)   Сдамплено документов: r  u%   Сдамплено вложений: r$  u-   Сдамплено комментариев: r-  uP   Сбор информации об обработанных документахr   u+   Обработано документов: r   )r8  dumped	processed)	parent_idr   zCmfDocument:%uN   Сбор информации об обработанных вложенияхrR  )r   rO  Nr   )rX  r+  u'   Обработано вложений: u   Вложенияr  )r8  rl  r  rm  uT   Сбор информации об обработанных комментарияхrS  )	log_levelrN  r   )rX  u/   Обработано комментариев: u   Комментарииu   Проверка консистентности между сдампленными и обработанными документамиr  u   Документы: rO   u   Проверка консистентности между сдампленными и обработанными вложениями)rh  u   Вложения: u   Проверка консистентности между сдампленными и обработанными комментариямиu   Комментарии: )r   rb   rL  r`  rj  updatebool)r   rr   
dump_statsprocess_statspage_stats_dataparent_filterattach_process_statsattachment_stats_datacomment_process_statscomment_stats_datapage_resultattachment_resultcomment_results                r   _get_project_page_statsz+CmfPluginConfluence._get_project_page_stats  s    	  W  	X33 4 


 	EjQXFYEZ[\A*]B[\cBdAefgI*U_J`ahJiIjkllm99 : 

 	GV]H^G_`a* )&w/
 ?jk#@@/   A  
 	CDXY`DaCbcd( /8&}5nE-g6	!
 	pq $ A A% !B !
 	KLabiLjKklm. ,W5.w7
 	 W	
 --v&!
 	0X1F0GHI{+ U	
 !33}%f- (!*]";N"KL 4 

 	./@/J.KLM$$%67 [	
 00z"6*!&)
 	4^H5M4NOP!!.1!68JKKr!   c                 \    g }| j                  |      }|D ]  }|j                  |        |S )u   
        Возвращает отчет сдампленных и обработанных объектов

        Args:
            project (object): объект CmfProject
        )r}  r_   )r   rr   rK  rt  
stats_datas        r   project_statsz!CmfPluginConfluence.project_stats  s=      66w?) 	%JLL$	% r!   r   )r   )NN)F))__name__
__module____qualname__modulesr	   r-   cmf_plugin_confluencer   ui_meta_skipr7   	api_allowapi_methodsr    r   r/   propertyrL   r   r   r   r
   r   re  r   r   rq  r   r   r   r   r   r   staticmethodr  r  rL  r`  rj  r}  r  __classcell__)r'   s   @r   r   r      sb   %%,,BBVVccfuuLLI$$++AAUUaa e
 
K !"444 :
 #( < ! !2+Zc $"C "HLS L&W$ WJT JPD Pd O
P

*+ | || n n`n`5n$dLLr!   r   )pathlibr   urllib.parser   r   /modules.confluence.fields.cmf_plugin_confluencer  cmf.includer	   r-   r  r   r   r!   r   <module>r     s7     - 6 T',,33II]] Tr!   