U
    tdf                     @   s8   d dl m Z  d dlT d dlZG dd dejjjjZdS )    )cached_property)*Nc                       s   e Zd Zejjjjjd Zdd Z	ddddd fdd
Z
d	d
 fdd
Zedd Zdd ZedddZedddZedddZedddZedddZedddZdd  Zd!d" Z  ZS )#CmfPluginConfluence)
confluencec              	   K   s6   t jf | j| j| j|||d|}|  || _dS )u#    Дает доступ из вне )nametypetokenext_url	ext_login	ext_tokenN)models	CmfPlugincode
class_nameidsaveplugin)selfr	   r
   r   kwargsr    r   4./modules/confluence/models/cmf_plugin_confluence.py_init_secret
   s      z CmfPluginConfluence._init_secretr   N)depthr	   r
   r   c                   s*   | j r| ||| t j|d|i|S )Nr   )Zis_newr   superr   )r   r   r	   r
   r   argsr   	__class__r   r   r      s    zCmfPluginConfluence.saveF)forcec                   s>   t jjdd| jgddddgd}|  t j|d|i|S )Nr   z==r	   r
   r   )filterfieldsr   )r   r   getr   deleter   )r   r   r   r   r   r   r   r   r!      s
    
zCmfPluginConfluence.deletec              	   C   s`   ddl m} | ddddddd	g || jjj| jjj| jj | jj	 | jj
j| jjjd
S )Nr   )ConfluenceApir   zplugin.ext_urlzplugin.ext_loginzplugin.ext_tokenzplugin.verify_sslzplugin.cloudzplugin.ext_password)ZurlZloginZpasswordr   
verify_sslcloud)Zmodules.confluence.apir"   Zload_fieldsr   r	   valuer
   Zext_passwordZdecryptr   r#   r$   )r   r"   r   r   r   r      s     


zCmfPluginConfluence.confluencec                 O   s<  g }zbdd | j |dD }dd | j j|dddD }|rd| dd	d
dd|iid}|| W n tk
r6 } zt| tjj	|dddgd}	|	
 d}
|
 r$t|
|dZ}t|}|d D ]@}|
|d|d}| rt|}|t| W 5 Q R X qW 5 Q R X n W 5 d }~X Y nX |S )Nc                 S   s   g | ]}|qS r   r   .0objr   r   r   
<listcomp>+   s     z7CmfPluginConfluence.get_space_pages.<locals>.<listcomp>children.pagec                 S   s   g | ]}|qS r   r   r&   r   r   r   r)   -   s     r   Zarchived)statusZ_archived_pagesarchiveu!   Архивные страницыZpageresults)r   r   titleZchildrenr   plugin.*plugin.plugin.*r   r   projects	info.jsonZ
root_pages	documents)r   Zget_root_pages_from_spaceZ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,   Zarchived_pagese
cmf_importdump_dirfZprojectZroot_page_idZdoc_filef2r   r   r   get_space_pages(   s2    




(z#CmfPluginConfluence.get_space_pages)rA   c           
      O   s   g }zdd | j  D }W n tk
r } zzt| tjj|dddgd}| 	d}|
 rt|D ]0}t|	|d}	|t|	 W 5 Q R X qnn W 5 d }~X Y nX |S )	Nc                 S   s   g | ]}|qS r   r   r&   r   r   r   r)   I   s     z6CmfPluginConfluence.get_all_spaces.<locals>.<listcomp>r   r/   r0   r1   r2   r3   )r   get_all_spacesr6   r7   r8   r   r9   r    r:   r;   r<   oslistdirr=   r5   r>   r?   )
r   rA   r   r   rB   rC   rD   rE   r@   rF   r   r   r   rI   F   s    
z"CmfPluginConfluence.get_all_spacesc                 O   s   z| j j|ddW S  tk
r } zt| tjj|dddgd}| 	d}|
 rt|D ]R}|	|d|}	|	
 rdt|		d	$}
t|
W  5 Q R     W Y S Q R X qdn td
W 5 d }~X Y nX d S )Nr*   )expandr   r/   r0   r1   r2   r4   r3   u,   Документ не попал в дамп)r   get_page_by_idr6   r7   r8   r   r9   r    r:   r;   r<   rJ   rK   r=   r>   r?   )r   Zpage_idrA   r   r   rC   rD   rE   r@   Zdoc_dirrF   r   r   r   rM   W   s    
,z"CmfPluginConfluence.get_page_by_id)returnc                 C   s   ddl m} || j| S )u   
        Инициализация настроек
        :param models.CmfImport cmf_import: Объект импорта.
        r   ConfluenceAPIImport)modules.confluence.api_importrP   r   calc_import_settingsr   rD   rP   r   r   r   rR   i   s    z(CmfPluginConfluence.calc_import_settingsc                 C   s   ddl m} || j| S )u   
        Предварительный просмотр данных
        :param models.CmfImport cmf_import: Объект импорта.
        r   rO   )rQ   rP   r   previewrS   r   r   r   rT   q   s    zCmfPluginConfluence.previewc                 C   s"   ddl m} d|_|| j| S )ux   
        Процесс импорта
        :param models.CmfImport cmf_import: Объект импорта.
        r   rO   u)   Импорт данных из Confluence)rQ   rP   r   r   process_importrS   r   r   r   rU   y   s    z"CmfPluginConfluence.process_importc                 C   s   g S )Nr   )r   r   r   r   calc_models_settings   s    z(CmfPluginConfluence.calc_models_settingsc                 C   s   ddl m} || j| S Nr   rO   )rQ   rP   r   download_datarS   r   r   r   rX      s    z!CmfPluginConfluence.download_datac                 C   s   ddl m} || j| S rW   )rQ   rP   r   download_filesrS   r   r   r   rY      s    z"CmfPluginConfluence.download_files)__name__
__module____qualname__modulesr   r   cmf_plugin_confluencer   Zui_meta_skipr   r   r!   r   rH   strrI   rM   listrR   rT   boolrU   rV   rX   rY   __classcell__r   r   r   r   r      s   
	r   )r   Zcmf.includeZ/modules.confluence.fields.cmf_plugin_confluencer]   r   r   r^   r   r   r   r   r   <module>   s   