U
    %h                      @   sD   d dl m Z  d dlT d dlZd dlmZ G dd dejjjj	Z	dS )    )cached_property)*N)JiraApic                       s   e Zd Zejjjjjd ZdZ	ejjjjj
ddg Z
edd Zdd Zd	d
 Zdd Zdd Zedd ZedddZdd Zdd Zdd Zedd Z fddZ fddZ  ZS ) CmfPluginJira)jiraNtestget_all_projectsc              	   C   sb   | j s\| dddddddg t| jjj| jjj| jj | jj	 | jj
j| jjjd| _ | j S )	Npluginplugin.ext_urlzplugin.ext_loginzplugin.ext_tokenzplugin.ext_passwordzplugin.cloudzplugin.verify_ssl)urlusernametokenpassword
verify_sslcloud)_CmfPluginJira__jiraload_fieldsr   r	   ext_urlvalueZ	ext_loginZ	ext_tokenZdecryptZext_passwordr   r   )self r   (./modules/jira/models/cmf_plugin_jira.pyr      s      
 
 zCmfPluginJira.jirac                 C   s(   ddl m} ddlm} || j| S )Nr   JiraAPIImportJiraCSVImport)modules.jira.api_importr   modules.jira.csv_importr   r   tmplt_import_settingsr   
cmf_importr   r   r   r   r   r      s    z#CmfPluginJira.tmplt_import_settingsc                 C   s>   ddl m} ddlm} |jdkr2|| j| S || S )Nr   r   r   Zapi)r   r   r   r   typer   previewr   r   r   r   r"       s
    
zCmfPluginJira.previewc                 C   s.   ddl m} ddlm} d|_|| j| S )Nr   r   r   u#   Импорт данных из Jira)r   r   r   r   namer   process_importr   r   r   r   r$   '   s    zCmfPluginJira.process_importc                 C   sL   ddl m} || j|}t||r4t||}|  n|jd| d d S )Nr   r   u   Метод 'u   ' не существует)r   r   r   hasattrgetattrloggererror)r   r    Zprocess_methodr   Zjira_importmethodr   r   r   process_entity-   s    

zCmfPluginJira.process_entityc                  C   s   g } | S )uR   Собственный магазин при выборе импорта из Jirar   )resr   r   r   calc_models_settings7   s    	z"CmfPluginJira.calc_models_settings)cmf_import_idc          
   
   O   s   ddl m} g }zPg }| j D ]<}|d |d |d d}|drR|d |d< || q W n` tk
r } zBt| t	j
j|dd	gd
}	dd || j|	 D }|s W 5 d }~X Y nX |S )Nr   r   idkeyr#   )r.   r/   r#   Z	isPrivater   zplugin.plugin.*r.   fieldsc                 S   s   g | ]}|qS r   r   .0objr   r   r   
<listcomp>[   s     z2CmfPluginJira.get_all_projects.<locals>.<listcomp>)r   r   r   get_projectsgetappend	Exceptiongdebugmodels	CmfImportZ_get_projects)
r   r-   argskwargsr   r+   ZprojectZproject_dataer    r   r   r   r   G   s&    

zCmfPluginJira.get_all_projectsc                 O   s   t dd | j D S )uE   
        Проверяем подключение к апи
        c                 S   s   g | ]}|qS r   r   r2   r   r   r   r5   d   s     z&CmfPluginJira.test.<locals>.<listcomp>)boolr   r6   )r   r>   r?   r   r   r   r   `   s    zCmfPluginJira.testc                 C   s   ddl m} || j| S Nr   r   )r   r   r   download_datar   r    r   r   r   r   rC   f   s    zCmfPluginJira.download_datac                 C   s   ddl m} || j| S rB   )r   r   r   download_filesrD   r   r   r   rE   j   s    zCmfPluginJira.download_filesc              
   C   s  ddl m} ddlm} dd l}d}t  t  tj	j
| ddgd}||jj|}	g }
|	j }|	j }|jd|	j  |j }t|	jD ]J}|	jj|	jd| ||d	d
}|
| |  |	jjd|  qd}|	|||D ](}|	j r q&|d7 }|| q|
D ]}|d q*|	jjd |
D ]}|  qN|j | }|	jjd||   d d}| s||
 7 }q|	jjd|  ||7 }W 5 Q R X W 5 Q R X |S )Nr   r   )cmf_contextr   r	   r0   u@   Грузим задачи в несколько потоков: _process_issue_thread)issue_queueissue_queue_errors)targetr#   r?   u.   Параллельный обработчик    ZDONEu&   Ждем обработки задачu*   ------------------------ скорость u    задач в секундуu?   Закончили обработку задач, ошибок ) r   r   Zcmf.apprF   datetimeZcmfutilZdisable_aclZdisable_notifyr<   r=   r7   r	   r   ZqueueZQueuer'   infoZthreading_max_forksZnowrange	threadingThreadrG   r8   startr    Zget_project_tasksZ	is_cancelZputjoinZtotal_secondsempty)r-   Z
project_idrQ   limitr   rF   rL   errorsr    Z
api_importZissue_processrH   rI   siprocZcntZissueZdiffZ
has_errorsr   r   r   process_issue_forkn   sL    




z CmfPluginJira.process_issue_forkc                    sF   | ddg |jr:|jdkr:tj| jjjd|jd S t	 
|S )Nimport_raw_jsonr
   CmfTaskZbrowser/   )r   rZ   
class_nameospathrR   r	   r   r   supercalc_ext_hrefr   r4   	__class__r   r   r`      s    zCmfPluginJira.calc_ext_hrefc                    s2   | dg |jdkr&|jr&|jd S t |S )NrZ   r[   Z
issue_path)r   r\   rZ   r_   calc_dump_pathra   rb   r   r   rd      s    
zCmfPluginJira.calc_dump_path)__name__
__module____qualname__modulesr   r1   cmf_plugin_jirar   Zui_meta_skipr   Zapi_methodspropertyr   r"   r$   r*   staticmethodr,   strr   r   rC   rE   rY   r`   rd   __classcell__r   r   rb   r   r      s,   
	


)r   )
r   Zcmf.includeZ#modules.jira.fields.cmf_plugin_jirarh   Zmodules.jira.apir   r   r1   ri   r   r   r   r   r   <module>   s   