
    V^ho                         d dl m Z  d dlmZmZ d dlmZ d dlT d dlZ G d dej	        j
        j        j                  ZdS )    )cached_property)urlparse
urlunsplit)Path)*Nc                       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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  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    r0   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.apir2   load_fieldsr   r   valuer   ext_passworddecryptr   r6   r7   )r   r2   s     r    r
   zCmfPluginConfluence.confluence'   s      	<<<<<<       !.K'-.4199;;k+3355;17k'-! ! !D   r"   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>E   s    aaassaaar"   children.pagec                     g | ]}|S r   r   r@   s     r    rC   z7CmfPluginConfluence.get_space_pages.<locals>.<listcomp>G   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
   rI   rT   e
cmf_importdump_dirfprojectroot_page_iddoc_filef2archived_page_ids                     r    r   z#CmfPluginConfluence.get_space_pagesA   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<rc   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	totalSizerN   rO   rP   c              3   B   K   | ]}|                                 d V  dS )   N)is_dir)rA   ps     r    	<genexpr>z7CmfPluginConfluence.get_total_spaces.<locals>.<genexpr>{   s/      HH!QXXZZHAHHHHHHr"   )r
   ro   rX   rY   rZ   r   r[   r/   r\   r]   r^   sumiterdir)
r   rc   r'   r   totalr
   responsere   rf   rg   s
             r    r   z$CmfPluginConfluence.get_total_spacesn   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 (rb   )::r   ext_idLIKE%T--)r-   include_deletedr.   u    [импортирован]rN   rO   rP   rQ   )r:   r
   r   strupperr   source_hashr   
CmfProjectsgetrW   rX   rY   rZ   r[   r/   r\   r]   r^   oslistdirr_   r`   ra   )r   rc   r}   r'   r   rd   r
   space
space_nameproject_ext_idri   re   rf   rg   rb   rh   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          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)	NrD   )expandrN   rO   rP   rS   rQ   u,   Документ не попал в дамп)r
   r   rX   rY   rZ   r   r[   r/   r\   r]   r^   r   r   r_   r`   ra   )r   page_idrc   r'   r   r
   re   rf   rg   rb   doc_dirrh   s               r    r   z"CmfPluginConfluence.get_page_by_id   s    	L RJ!000QQR R R R R R R R R R R R R R R R R R 	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   : -: 1: 1: E6C!E1&E E1E6EE1EE11E6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   rf   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   rf   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webuirt   baser    )r:   r   r/   r   pathjoinr   r   schemenetlocr&   calc_ext_href)r   rB   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   )r:   r   r   r&   calc_dump_path)r   rB   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          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                                         }t9          |	j                  D ]w}|	j                            |	j         d| |||
|d          }|!                    |           |"                                 |	j#        j                            d|            xd}|
                    d          }|stI          d           }|	%                    |d         ||          D ]}|d         |	j&        vr|d         dk    r|dz  }|d         |d         tO          |d                   (                    d          |d         |d         k    d }|)                    |           |D ]}|)                    d!           |	j#        j                            d"           |D ]}|*                                 ~|	j#        +                                rFtY                       |	j#        j        -                    d#           	 d d d            d d d            d S |j                                         |z
  }|	j#        j                            d$||.                                z   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   |S )'Nr   cmf_contextr   r   r   rO   )
logic_typer   descr_documentproject.agile:defaulttree_parent_idr+   r   r+      Документыr   r,      maxsizerI   )sys_typetree_parentuD   Грузим документы в несколько потоков_process_document_fork)	obj_queue
done_queueri   archive_foldertargetr   r   .   Параллельный обработчик homepage)r   r   r   rG   trashedrt   rL   rS   )r   rL   r   is_homepageDONEu0   Ждем обработки документов   Импорт прерван*   ------------------------ скорость '    документов в секундуuI   Закончили обработку документов, ошибок )0datetimecmf.appr   r   r   cmfutildisable_acldisable_notifyr   r[   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   rW   startrf   dict_get_documents_selected_objsr   r]   putr   	is_cancelcommit_with_eventwarningtotal_secondsempty)rc   
project_idoffsetrp   dtr   r   errorsrf   
api_importri   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  "" ^	! ^	!G$:$:$<$< ^	! ^	!)--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) \#E&M22;;KHH#&t9#>	  h''''# & &f%%%%!(--.`aaa#  		D$..00 !###%,445RSSSe^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	!h ;??$$q(D!(-- AS4CUCUCWCW=W  A  A  A   J &&(( /jnn...
 !&&(( / !(--  /G  {E  /G  /G  H  H  Hj F}^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	! ^	!@ sC   Q:L=Q#Q:B<Q#Q:#Q'	'Q:*Q'	+Q::Q>Q>c           
         dd l }ddlm} ddlm} d}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                                         }t7          |	j                  D ]u}|	j                            |	j        d| ||d          }|                     |           |!                                 |	j"        j                            d|            vd}|	#                    |d         ||          D ]Q}|d         |	j$        vr|d         dk    r|dz  }|d         |d         |d         d}|%                    |           R|D ]}|%                    d           |	j"        j                            d           |D ]}|&                                 ~|	j"        '                                rFtQ                       |	j"        j        )                    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   |S )#Nr   r   r   r   r   rO   r   r   r   r   r+   r   r,   r   r   u_   Обрабатываем версии документов в несколько потоков_process_doc_versions_fork_)r   r   r   r   r   r   rG   r   rt   rL   )r   rL   r   r   u=   Ждем обработки версий документовr   r   z.3fr   uW   Закончили обработку версий документов. Ошибок: ),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   _process_doc_versions_forkrW   r   rf   r   r   r   r   r   r   r   r   r   )rc   r   r   rp   r   r   r   r   rf   r   ri   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EEEEE  "" O	! O	!G$:$:$<$< O	! O	!)--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 ( (t9J$===x=I--qd) \K 
 h''''# & &f%%%%!(--.mnnn#  		D$..00 !###%,445RSSSEO	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	!H ;??$$q(D$,,...E!(--oUoooo   J &&(( /jnn...
 !&&(( / !(--  /U  IS  /U  /U  V  V  Vj F_O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	! O	!b sC   PKO+P B?O+P+O/	/P2O/	3PP	Pr   c           
      @   dt                      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|                                r|                                D ]}|                                s|                    d          }|                                sBt          |d          5 }	t                              |	          |
                    t          d                            f           |dz  }ddd           n# 1 swxY w Y   |d	k    r|                    d
          }t          |d          5 }	t                              |	          }|D ]H}|d         
                             t          |d                   f           |dxx         dz  cc<   I	 ddd           n# 1 swxY w Y   |                    d          }t          |d          5 }	|	D ]/}
t          	                    |
          }fd |           0	 ddd           n# 1 swxY w Y   ||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   countobjsr   zr+r   rt   NrQ   rS   zattachments.jsonr  rL   r  zcomments.jsonc                     d                                       t          | d                   f           dxx         dz  cc<   | d         D ]} |           d S )Nr  r   r  rt   rM   )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 5 9 98E?CPWX\P]L^L^:_ ` ` ` -g 6 6 6! ; 6 6 65<Z5H !F !FM$6$6}$E$E$E$E!F !Fr"   attachmentscomments)setr   r   r;   r/   r]   is_filer_   r`   loadsr
  r   ru   ry   r^   ra   )r   ri   entityr  attachment_statsdumped_countdumped_objsproject_dir	objs_pathrh   rowobj_dirobj_data_fileattach_filer  attcomment_data_filecomment_datastatsr  r  r  s      `               @@@r    _get_dump_stats_by_entityz-CmfPluginConfluence._get_dump_stats_by_entity  sk   $ EE
 

 EE
 

 ee728<<VDDEE((00	 %	=i&& &! & &C#zz#HOOS$%8%8(5/$JKKK A%LL&& & & & & & & & & & & & & & &
  	=$,,.. = =~~''  ' 0 0 = =$++-- -.. &!#yy||HOOS$%8%8(5/$JKKK A%L& & & & & & & & & & & & & & & [((")"2"23E"F"FKk400 ;A&*iill#. ; ;C,V488(5/3sSZ|K\K\9]^^^,W555:5555;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; )0(8(8(I(I%/66 =!#$ = =C+/::c??LF F F F F F F F
 /.|<<<<== = = = = = = = = = = = = = = "
 
 [  #3E-  -E*sK   AC>>DDAG""G&	)G&	A&JJ	J	<3K<<L 	L 	c                    dd|gg dg}|r|                     |           t                              |          }|                    |          }t	                      }|                    |g d          }	|	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_
        ri   =)rf   z!=N)r-   )r   r   r   zparent.namer   r,   r   rt   Nr   CmfAttachment
CmfCommentr  )rW   r   get_model_by_namer  r  slistr   splitr   r   r   r/   r
  parent)r   ri   r  	filter_byr  filter_modelprocessed_countprocessed_objsr  rB   obj_id	obj_fieldr#  s                 r    _get_process_stats_by_entityz0CmfPluginConfluence._get_process_stats_by_entity  s     W%&&&
  	&NN9%%%))&11++W+55{{MMM  
 
  	+ 	+C25*FSZ%%d++A..$FI" ;S0677/33E::	((""CJOSX#>????<''""CJOV#<==== +""FI#67777""6**** %"
 
 r"   c                 f    |                     |          }||z
  }|sdndt          |          d}|S )u  
        Возвращает результат проверки сдампленных и обработанных объектов
        в виде статуса и множества необработанных объектов в виде кортежей

        Args:
            dump_objs (set): сдампленные объекты
            process_objs (set): обработанные объекты
        u   ОКu   НЕКОРРЕКТНО)rG   unprocessed)intersectionlist)r   	dump_objsprocess_objsr7  r6  results         r    _check_consistencyz&CmfPluginConfluence._check_consistency8  sL     !--l;;,.$/Mff5M,,
 
 r"   c                    |                      |dd          }|                     |dd          }d|d         |d         d}|                     |d         |d                   }|                    |           |                     |d	d
          }d|d         d         |d         d}|                     |d         d         |d                   }|                    |           |                     |dg d          }	d|d         d         |	d         d}
|                     |d         d         |	d                   }|
                    |           |||
gS )u$  
        Возвращает статистику по документам проекта, их вложениям и комментариям

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

        Returns:
            dict: данные статистики
        rS   rL   )r  r   r   r  )r  dumped	processedr  r'  r   u   Вложенияr  r(  )	log_levelr&  r   )r-  u   Комментарииr  )r$  r4  r<  update)r   ri   
dump_statsprocess_statspage_stats_datapage_resultattach_process_statsattachment_stats_dataattachment_resultcomment_process_statscomment_stats_datacomment_results               r    _get_project_page_statsz+CmfPluginConfluence._get_project_page_statsI  s    33 4 
 


 99 : 
 
 + )&w/
 

 --v&!
 
 	{+++#@@  A  
  
 ) /8-g6!
 !

 !33}%f- (
 
 	$$%6777 $ A A+++ !B !
 !
 / ,W5.w7
 

 00z"6*!&)
 
 	!!.111!68JKKr"   c                 h    g }|                      |          }|D ]}|                    |           |S )u   
        Возвращает отчет сдампленных и обработанных объектов

        Args:
            project (object): объект CmfProject
        )rL  rW   )r   ri   r#  rD  
stats_datas        r    project_statsz!CmfPluginConfluence.project_stats  sG      66w??) 	% 	%JLL$$$$r"   r   )r   )NN)(__name__
__module____qualname__modulesr
   r.   cmf_plugin_confluencer	   ui_meta_skipr8   	api_allowapi_methodsr!   r   r0   propertyr   r   r   r   r   r8  r   r   boolr   r   r   r   r   r   staticmethodr   r  r$  r4  r<  rL  rO  __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C 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

* 
* 
* 
* 
*+ + + + + h h \hT Y Y \YvM M M M^0 0 0 0d  ">L >L >L@      r"   r	   )r   urllib.parser   r   pathlibr   cmf.include/modules.confluence.fields.cmf_plugin_confluencerS  r
   r.   rT  r	   r   r"   r    <module>r`     s    + + + + + + - - - - - - - -           6 6 6 6O
 O
 O
 O
 O
',3I] O
 O
 O
 O
 O
r"   