
    i                     v    d dl mZ d dlmZmZ d dlZd dlT  G d dej        j	        j
        j                  ZdS )    )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d S 	 t          j        d| j        | j        | j        |||d|}|                                 || _         d S )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   si    ; 	F1! gtytdg*1YR[g g_eg g    r   )depthr   r   r   c                v    | j         r|                     |||            t                      j        |d|i|S )Nr"   )is_newr    superr   )r   r"   r   r   r   argsr   	__class__s          r   r   zCmfPluginConfluence.save   sE    ; 	=gy)<<<uww|T99&999r!   F)forcec                    t           j                            dd| j        gg d          }|                                  t                      j        |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!   sc    !%%gtTW-E-[-[-[ & ] ]uww~t;5;F;;;r!   c                 l   | j         sddlm} |                     g d            || 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      	<<<<<<       !.K'-.4199;;k+3355;17k'-! ! !D   r!   c                    | j         5 }|j        j                                         |                    d          5  |                                }|                                }d d d            n# 1 swxY w Y   |d         }|j                            d          |k    rt          d| d           d d d            d S # 1 swxY w Y   d S )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   se   _ 	
'--///))!)44 ; ;)::<<(88::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; #5)H~$$S))X55I5=I I I  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   5C)A2&C2A6	6C9A6	:<CC
Cc           	         g }	 | j         5 }d |                    |d          D             }d |                    |dd          D             }|r#| ddd	d
d|iid}|                    |           d d d            n# 1 swxY w Y   n3# t          $ r%}	t
                              |	           t          j        	                    |g d          }
|

                                                    d          }|                                rt          |                    |d                    5 }t                              |          }|d         D ]}|                    |d|d          }|                                rTt          |          5 }|                    t                              |                     d d d            n# 1 swxY w Y   g }|	                    dg           D ]}|                    |d|d          }|                                rTt          |          5 }|                    t                              |                     d d d            n# 1 swxY w Y   |r#| ddd	d
d|iid}|                    |           d d d            n# 1 swxY w Y   n Y d }	~	nd }	~	ww xY w|S )Nc                     g | ]}|S r   r   .0objs     r   
<listcomp>z7CmfPluginConfluence.get_space_pages.<locals>.<listcomp>T   s    aaassaaar!   zchildren.pagec                     g | ]}|S r   r   rO   s     r   rR   z7CmfPluginConfluence.get_space_pages.<locals>.<listcomp>V   s    iii33iiir!   r   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	   rW   rb   e
cmf_importdump_dirfprojectroot_page_iddoc_filef2archived_page_ids                     r   r   z#CmfPluginConfluence.get_space_pagesP   s   (	 /Jaaj&J&J3P_&`&`aaaii**M*McST]g*M*h*hiii /!$555 )!D%+i-A$B	& &N JJ~.../ / / / / / / / / / / / / / /  	 	 	GGAJJJ)--GkGkGk-llJ!3355>>zJJH   (++C==>> 3!"iillG(/(= : :#+#4#4S+|U`#a#a#??,, :!%h :2 #

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

>222)3 3 3 3 3 3 3 3 3 3 3 3 3 3 3, 7	8 
s   B A(A?3B ?BB BB J<BJ73A J%.G	J%GJ%GAJ%..I(	J%(I,,J%/I,0)J%J7%J)	)J7,J)	-J77J<rq   c                    d}	 | j         5 }|                    ddd          }ddd           n# 1 swxY w Y   |d         }n# t          $ r}t                              |           t
          j                            |g d          }|                                	                    d	          }	|	
                                r,t          d
 |	                                D                       }n Y d}~nd}~ww xY w|S )uI    Получает общее количество пространств r   z
type=spaceT)cqllimitinclude_archived_spacesN	totalSizer\   r]   r^   c              3   B   K   | ]}|                                 d V  dS )r>   N)is_dir)rP   ps     r   	<genexpr>z7CmfPluginConfluence.get_total_spaces.<locals>.<genexpr>   s/      HH!QXXZZHAHHHHHHr!   )r	   r}   rf   rg   rh   r   ri   r.   rj   rk   rl   sumiterdir)
r   rq   r&   r   totalr	   responsers   rt   ru   s
             r   r   z$CmfPluginConfluence.get_total_spaces}   s\   	 cJ%>>l!]a>bbc c c c c c c c c c c c c c c[)EE 	 	 	GGAJJJ)--GkGkGk-llJ!3355>>zJJH   HHx'7'7'9'9HHHHH 	 s3   A 0A 4A 4A 
C=B%C88C=c           	      J   |                      dg           g }	 | j        5 }|                    |          D ]}|d         |d<   |d         }|d         dk    r|dz  }n.|dt          |d	                                                    d
z  }d| j        j         d|d          d}	t          j        	                    ddd|	 dgddg          }
|
r|dz  }||d<   |
                    |           	 d d d            n# 1 swxY w Y   n# t          $ r	}t                              |           t          j                            |g d          }|                                                    d          }|                                rt&                              |          D ]j}t+          |                    |d                    5 }|
                    t,                              |                     d d d            n# 1 swxY w Y   kn Y d }~nd }~ww xY w|S )Nzplugin.source_hash)slicer   original_namer   personalu(    (Личное пространство)z (rp   )::r   ext_idLIKE%T--)r,   include_deletedr-   u    [импортирован]r\   r]   r^   r_   )r9   r	   r
   strupperr   source_hashr   
CmfProjectsgetre   rf   rg   rh   ri   r.   rj   rk   rl   oslistdirrm   rn   ro   )r   rq   r   r&   r   rr   r	   space
space_nameproject_ext_idrw   rs   rt   ru   rp   rv   s                   r   r
   z"CmfPluginConfluence.get_all_spaces   s   ./000	 &J'66U6CC & &E-26]E/*!&vJV}
22"&PP

 #&G3uU|+<+<+B+B+D+D&G&G&GG
%T$+*A%T%TU4[%T%T%TN$/44 (&2Gn2G2G2GH(, $v 5  G
  D"&CC
$.E&MJJu%%%%#&& & & & & & & & & & & & & & &&  
	 
	 
	GGAJJJ)--GkGkGk-llJ!3355>>zJJH   ::h// 1 1Ch//[AABB 1a

499Q<<0001 1 1 1 1 1 1 1 1 1 1 1 1 1 11 	1 1 1 1 1
	 
s`   D CC?3D ?DD DD H B7H.H<HHHHHH c                    	 | j         5 }|                    |dd          cd d d            S # 1 swxY w Y   d S # t          $ r1}t                              |           t
          j                            |g d          }|                                	                    d          }|
                                rt                              |          D ]}	|	                    |	d|          }
|

                                r[t          |
	                    d                    5 }t                              |          cd d d            c cY d }~S # 1 swxY w Y   n t          d	          d }~ww xY w)
NFT)detailedwith_childrenr\   r]   r^   ra   r_   u,   Документ не попал в дамп)r	   r   rf   rg   rh   r   ri   r.   rj   rk   rl   r   r   rm   rn   ro   )r   page_idrq   r&   r   r	   rs   rt   ru   rp   doc_dirrv   s               r   r   z"CmfPluginConfluence.get_page_by_id   s#   	L ^J!005X\0]]^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 	L 	L 	LGGAJJJ)--GkGkGk-llJ!3355>>zJJH   ::h// 0 0C&//['JJG~~'' 0!'"2"2;"?"?@@ 0A#'99Q<<0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 JKKK	LsX   ; .; 2; 2; E7C!E2'EE2E7EE2EE22E7returnc                 T    ddl m}  || j        |                                          S )u   
        Инициализация настроек
        :param models.CmfImport cmf_import: Объект импорта.
        r   ConfluenceAPIImport)modules.confluence.api_importr   r	   calc_import_settingsr   rt   r   s      r   r   z(CmfPluginConfluence.calc_import_settings   s8    
 	FEEEEE""4?J??TTVVVr!   c                 T    ddl m}  || j        |                                          S )u   
        Предварительный просмотр данных
        :param models.CmfImport cmf_import: Объект импорта.
        r   r   )r   r   r	   previewr   s      r   r   zCmfPluginConfluence.preview   s8    
 	FEEEEE""4?J??GGIIIr!   c                     ddl m} d|_        | j        5 } |||                                          cddd           S # 1 swxY w Y   dS )ux   
        Процесс импорта
        :param models.CmfImport cmf_import: Объект импорта.
        r   r   u)   Импорт данных из ConfluenceN)r   r   r   r	   process_importr   rt   r   r	   s       r   r   z"CmfPluginConfluence.process_import   s    
 	FEEEEEE
_ 	P
&&z:>>MMOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   A  AAc                     g S Nr   )r   s    r   calc_models_settingsz(CmfPluginConfluence.calc_models_settings   s    	r!   c                     ddl m} | j        5 } |||                                          cd d d            S # 1 swxY w Y   d S Nr   r   )r   r   r	   download_datar   s       r   r   z!CmfPluginConfluence.download_data   s    EEEEEE_ 	O
&&z:>>LLNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O   9= =c                     ddl m} | j        5 } |||                                          cd d d            S # 1 swxY w Y   d S r   )r   r   r	   download_filesr   s       r   r   z"CmfPluginConfluence.download_files   s    EEEEEE_ 	P
&&z:>>MMOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Pr   c                 .   |                     dg           |j        r|j        d                             d          r|j        d                             d          dd          }|j        d                             d          r1t          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   rQ   linkself_urlr'   s       r   r   z!CmfPluginConfluence.calc_ext_href   s    *+,,, 	T3#6x#@#D#DW#M#M 	T&x044W==abbAD"8,0088 Tw||C$7$A&$I4PPP#C$7$A&$IJJ!8?HOT2r"RSSSww$$S)))r!   c                     |                     dg           |j        dv r|j        r|j        d         S t                                          |          S )Nr   )r   CmfDocumentr   )r9   r   r   r%   calc_dump_path)r   rQ   r'   s     r   r   z"CmfPluginConfluence.calc_dump_path   sU    *+,,,>:::s?R:&v..ww%%c***r!   c                 	   dd l }ddlm} ddlm} d}t
                                          5  t
                                          5  t
                                          5  t          j
                            | ddg          } ||j        j        |          }	|	                                 t          j                            |g d          }
|
}|
j        j        dk    r.t          j                            d	d
|
j        gg dgdg          }|j        j        }||	_        g }|	j                            d          }|	j                                        }t          j                            d|
          }|j                            d           |j                                         }t;          |	j                  D ]w}|	j                             |	j!        d| |||
|d          }|"                    |           |#                                 |	j$        j                            d|            xd}|                    d          }|stK          d           }|	&                    |d         ||          D ]}|d         |	j'        vr|d         dk    r|dz  }|d         |d         |d         tQ          |d                   )                    d           |d         |d         k    d!}|*                    |           |D ]}|*                    d"           |	j$        j                            d#           |D ]}|+                                 ~|	j$        ,                                rQt[                       |	j$        j        .                    d$           	 d d d            d d d            d d d            d S |j                                         |z
  }|	j$        j                            d%||/                                z   d&           d}|0                                s+||                                z  }|0                                +|	j$        j                            d'|            ||z  }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            n# 1 swxY w Y   |S )(Nr   cmf_contextr   r   r   r]   )
logic_typer   descr_documentz#scheme_wf.default_document_workflowproject.agile:defaulttree_parent_idr*   r   r*      Документыr   r+      maxsizerW   )sys_typetree_parentuD   Грузим документы в несколько потоков_process_document_fork)	obj_queue
done_queuerw   archive_foldertargetr   r   .   Параллельный обработчик homepage)r   r   r   rU   trashedr>   rZ   r   ra   )r   rZ   r   r   is_homepageDONEu0   Ждем обработки документов   Импорт прерван*   ------------------------ скорость '    документов в секундуuI   Закончили обработку документов, ошибок )1datetimecmf.appr   r   r   cmfutildisable_acldisable_notifyensure_recursion_limitr   ri   r.   r   r	   _load_selected_objsr   r   r   r   r   r   r:   root_parentqueueQueue	CmfFolderloggerinfonowrangethreading_max_forks	threadingThreadr   re   startrt   dict_get_documents_selected_objsr   rk   putr   	is_cancelcommit_with_eventwarningtotal_secondsempty)rq   
project_idoffsetr~   dtr   r   errorsrt   
api_importrw   r   r   obj_processr   r   r   siproccntr   docdoc_datadiff
has_errorss                             r   process_document_forkz)CmfPluginConfluence.process_document_fork   s   ''''''EEEEEE  "" b	! b	!##%%b	! b	!++--b	! b	!  )--X-WWJ,,Z->-I:VVJ**,,,'++   ,  G "K!&*AAA$044-tWZ@BfBfBfg-. 5  
  /5E%0J"K"(..s.;;I#)//11J#-119RY1ZZN ""#ijjj!!A:9:: k k!+22%<5!55%.&0#**8	  3 	 	 ""4(((

%,112icg2i2ijjjjCyy,,H )4===!00vNN ( (t9J$===x=I--qd) \K#E&M22;;KHH#&t9#>  h''''# & &f%%%%!(--.`aaa#  		D$..00 !###%,445RSSSmb	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	!p ;??$$q(D!(-- AS4CUCUCWCW=W  A  A  A   J &&(( /jnn...
 !&&(( / !(--  /G  {E  /G  /G  H  H  Hj FEb	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	! b	!H sm   R=R& MR$R&/R=B<RR&RR&RR&R=&R*	*R=-R*	.R==SSc                    dd l }ddlm} ddlm} d}t
                                          5  t
                                          5  t
                                          5  t          j
                            | ddg          } ||j        j        |          }	|	                                 t          j                            |ddg          }
|
}|
j        j        d	k    r.t          j                            d
d|
j        gg dgdg          }|j        j        }||	_        g }|	j                            d          }|	j                                        }|j                            d           |j                                         }t9          |	j                  D ]u}|	j                            |	j         d| ||d          }|!                    |           |"                                 |	j#        j                            d|            vd}|	$                    |d         ||          D ]^}|d         dk    r|d         |	j%        vr|d         dk    r,|dz  }|d         |d         |d         d}|&                    |           _|D ]}|&                    d           |	j#        j                            d           |D ]}|'                                 ~|	j#        (                                rQtS                       |	j#        j        *                    d            	 d d d            d d d            d d d            d S |j                                         |z
  }||+                                z  }|	j#        j                            d!|d"d#           d}|,                                s+||                                z  }|,                                +|	j#        j                            d$|            ||z  }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            n# 1 swxY w Y   |S )%Nr   r   r   r   r   r]   r   r   r   r   r*   r   r+   r   r   u_   Обрабатываем версии документов в несколько потоков_process_doc_versions_fork_)r   r   r   r   r   r   rX   r   rU   r   r>   rZ   )r   rZ   r   r   u=   Ждем обработки версий документовr   r   z.3fr   uW   Закончили обработку версий документов. Ошибок: )-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   _process_doc_versions_forkre   r   rt   r   r   r   r   r   r   r   r   r   )rq   r   r  r~   r  r   r   r  rt   r  rw   r   r   r  r   r   r  r  r  r	  r
  r  r  speedr  s                            r   process_doc_versions_forkz-CmfPluginConfluence.process_doc_versions_forkn  s/   ''''''EEEEEE  "" T	! T	!##%%T	! T	!++--T	! T	!  )--X-WWJ,,Z->-I:VVJ**,,,'++z<QbBc+ddG!K!&*AAA$044-tWZ@BfBfBfg-. 5  
  /5E%0J"K"(..s.;;I#)//11J ""  $E  F  F  F!!A:9:: k k!+22%@:q::%.&0  3   ""4(((

%,112icg2i2ijjjjC!00vNN ( (v;&((t9J$===x=I--qd) \K 
 h''''# & &f%%%%!(--.mnnn#  		D$..00 !###%,445RSSSOT	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	!R ;??$$q(D$,,...E!(--oUoooo   J &&(( /jnn...
 !&&(( / !(--  /U  IS  /U  /U  V  V  Vj FiT	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	! T	!l sm   QP4 KP/P4:QB?PP4P!!P4$P!%P4(Q4P8	8Q;P8	<QQQr   c                 P	   ddl m} dt                      g d}dt                      dd}t                      }t          |j        j                            d                    }|                    |          }	|	                                rt          |	d          5 }
|
D ]Q}t                              |          |                    t          d                            f           |dz  }R	 d	d	d	           n# 1 swxY w Y   n|	                                rj|	                                D ]T}|                                s|j                            |j                  r8|                    d
          }|                                sbt          |d          5 }
t                              |
          d	d	d	           n# 1 swxY w Y   d         dk    r|                    t          d                            f           |dz  }|dk    rgg }|                    d          }|                                rBt          |d          5 }
t                              |
          }d	d	d	           n# 1 swxY w Y   i }|D ]|}|d         }|d         d         }d|v r|d         d         }n4t*                              d|          }|r|                    d          nd}t          |d                   || d| <   }|                    d          }|                                r|                                D ]m}|                                s|j        |v rM|                    |j                  }|d                                      |f           |dxx         dz  cc<   n|rH|d                                      d                    |                                          f           fd|                    d          }|                                rSt          |d          5 }
|
D ]'}t                              |          } |           (	 d	d	d	           n# 1 swxY w Y   V||d}|dk    r
||d<   |d<   |S )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>   Nr_   r   rX   ra   zattachments.jsonr   downloadversionnumberz[?&]version=(\d+)rZ   .attachmentsr  r  r  z, c                     d                                       t          | d                   f           dxx         dz  cc<   | d         D ]} |           d S )Nr  r   r  r>   r[   )addr   )commentchild_commentcomment_statsdump_stats_commentfieldobj_datas     r   r#  zICmfPluginConfluence._get_dump_stats_by_entity.<locals>.dump_stats_comment*  s    %f-118E?CPTDVDV2WXXX%g...!3...-4Z-@ > >M..}====> >r!   zcomments.jsoncomments)r   r   setr   r   r:   r.   rk   is_filerm   rn   loadsr  r   r   r   r   endswithexcluded_doc_dir_endingsrl   ro   researchgrouppopre   r   values)r   rw   entityr$  r   attachment_statsdumped_countdumped_objsproject_dir	objs_pathrv   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EE EE
 
 EE
 

 ee728<<VDDEE((00	 C	Ai&& &! & &C#zz#HOOS$%8%8(5/$JKKK A%LL&& & & & & & & & & & & & & & &
  <	A$,,.. :A :A~~'' <(()<)UVV  ' 0 0 = =$++-- -.. ,!#yy||H, , , , , , , , , , , , , , ,F#v--Xd^!4!4huo FGGG![(("$K")"2"23E"F"FK"))++ 7!+t44 7*.))A,,K7 7 7 7 7 7 7 7 7 7 7 7 7 7 7%'N* R R!$T(+Hj(A$++&))nX&>GG&(ii0Dm&T&TG:A&HgmmA&6&6&6qG@CCL@Q@Q&'<'<7'<'<==&-&6&6}&E&EO&--// ?$3$;$;$=$= ? ?D#'<<>> ) (#yN::,:,>,>ty,I,I	 0 8 < <huoy=Y Z Z Z 0 9 9 9Q > 9 9 9% (8??$UOTYY~7L7L7N7N-O-OA   > > > > > > > >
 )0(8(8(I(I%(//11 A!"3T:: Aa'( A A/3zz# 2 2< @ @ @ @AA A A A A A A A A A A A A A A "
 
 [  #3E-  -E*sI   #ADD	D	-GG	G	#J

J	J	+RR	R	c           	      &   dd|gg dg}|r|                     |           t                              |          }|                    |d          }t	                      }d}	t          d||	          D ]}
|                    |g dd|
|
|	z   g	          }|D ]}|j        r |j                            d
          d         nd}|j	        }|j
        r4t          |j
        d                   }|j
                            |          }|dk    r'|                    |j        j	        |j	        f           |dk    r"|                    |j        j	        |f           |r|                    ||f           |                    |           ||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_
        rw   =)rt   !=NT)r,   include_archivedd   r   )r   r   r   zparent.namer   )r,   r-   rI  r   r   r>   Nr   CmfAttachment
CmfCommentr  )re   r   get_model_by_namer  r'  r   slistr   splitr   r   r   r.   r  parent)r   rw   r1  	filter_byr$  filter_modelprocessed_countprocessed_objsstepr   r  rQ   obj_id	obj_fieldrD  s                   r   _get_process_stats_by_entityz0CmfPluginConfluence._get_process_stats_by_entity?  s     W%&&&
  	&NN9%%%))&11++Wt+LL1ot44 	/ 	/E;;QQQ!%edl+	   D  / /69jJ))$//22dH	& ? !4T!:;;F # 3 7 7 > >I_,,"&&
'BCCCC|++"&&
'@AAAA /"&&	':;;;;"&&v..../  %"
 
 r!   c                 j    |                     |          }||z
  }|s|rdndt          |          d}|S )u  
        Возвращает результат проверки сдампленных и обработанных объектов
        в виде статуса и множества необработанных объектов в виде кортежей

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

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

        Returns:
            dict: данные статистики
        uz   Сбор информации о сдампенных документах, вложениях и комментарияхra   rZ   )r$  u)   Сдамплено документов: r  u%   Сдамплено вложений: r  u-   Сдамплено комментариев: r&  uP   Сбор информации об обработанных документахr   u+   Обработано документов: r   )r1  dumped	processed)	parent_idr   zCmfDocument:%uN   Сбор информации об обработанных вложенияхrK  )r   rH  Nr   )rQ  r$  u'   Обработано вложений: u   Вложенияr  )r1  re  r  rf  uT   Сбор информации об обработанных комментарияхrL  )	log_levelrG  r   )rQ  u/   Обработано комментариев: u   Комментарииu   Проверка консистентности между сдампленными и обработанными документамиr  u   Документы: rU   u   Проверка консистентности между сдампленными и обработанными вложениями)ra  u   Вложения: u   Проверка консистентности между сдампленными и обработанными комментариямиu   Комментарии: )r   rh   rE  rY  rc  updatebool)r   rw   
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  sP    	  W  	X  	X  	X33 4 
 


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

        Args:
            project (object): объект CmfProject
        )rv  re   )r   rw   rD  rm  
stats_datas        r   project_statsz!CmfPluginConfluence.project_stats  sG      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   r^  r   r   rj  r   r   r   r   r   r   staticmethodr  r  rE  rY  rc  rv  ry  __classcell__)r'   s   @r   r   r      s       %,BVcfuuLLI$+AUa e
 e
 e
 
K   !"444 : : : : : : :
 #( < < < < < < < ! ! X!2  + + +Zc    $" "C " " " "HLS L L L L&W$ W W W WJT J J J JPD P P P Pd    O O O
P P P

* 
* 
* 
* 
*+ + + + + l l \l\ ^ ^ \^@n n n n`5 5 5 5n   $dL dL 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     s          - - - - - - - - 6 6 6 6    t t t t t',3I] t t t t tr!   