U
    Įwh%                     @   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   sD   ddl m} ddlm} | j}||| W  5 Q R  S Q R X d S )Nr   JiraAPIImportJiraCSVImport)modules.jira.api_importr   modules.jira.csv_importr   r   tmplt_import_settingsr   
cmf_importr   r   r   r   r   r   r      s    z#CmfPluginJira.tmplt_import_settingsc              
   C   sV   ddl m} ddlm} |jdkrJ| j}||| W  5 Q R  S Q R X || S )Nr   r   r   Zapi)r   r   r   r   typer   previewr   r   r   r   r"   !   s    
 zCmfPluginJira.previewc              
   C   sJ   ddl m} ddlm} d|_| j}||| W  5 Q R  S Q R X d 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_entity0   s    

zCmfPluginJira.process_entityc                  C   s   g } | S )uR   Собственный магазин при выборе импорта из Jirar   )resr   r   r   calc_models_settings:   s    	z"CmfPluginJira.calc_models_settings)cmf_import_idc             
   O   s   ddl m} g }z`g }| jL}| D ]<}|d |d |d d}|drX|d |d< || q&W 5 Q R X 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+   r   projectZproject_dataer    r   r   r   r   J   s(    

zCmfPluginJira.get_all_projectsc              
   O   s4   | j $}tdd | D W  5 Q R  S Q R X dS )uE   
        Проверяем подключение к апи
        c                 S   s   g | ]}|qS r   r   r2   r   r   r   r5   i   s     z&CmfPluginJira.test.<locals>.<listcomp>N)r   boolr6   )r   r>   r?   r   r   r   r   r   d   s    zCmfPluginJira.testc              
   C   s8   ddl m} | j}||| W  5 Q R  S Q R X d S Nr   r   )r   r   r   download_datar   r    r   r   r   r   r   rD   k   s    zCmfPluginJira.download_datac              
   C   s8   ddl m} | j}||| W  5 Q R  S Q R X d S rC   )r   r   r   download_filesrE   r   r   r   rF   p   s    zCmfPluginJira.download_filesc              
   C   s6  ddl m} ddlm} dd l}d}t  t  tj	j
| ddgd}||jj|}	|jjj d| }
tjj
dd	d
|
 dgddgd}|std|
 |j|	_g }|	j }|	j }|jd|	j  |j }t|	jD ]L}|	jj|	jd| |||dd}|| |  |	jjd|  qd}|	j|||tj dD ]*}|	j! rj q|d7 }|"| qT|D ]}|"d q|	jjd |D ]}|#  q|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   zplugin.plugin.source_hashr0   z::Zext_idZLIKEz%::z::%cust_field_conf_schemeimport_raw_json)filterr1   u)   Не найден проект с ext_id u@   Грузим задачи в несколько потоков: _process_issue_thread)issue_queueissue_queue_errorsr@   )targetr#   r?   u.   Параллельный обработчик )Zonly_processing   ZDONEu&   Ждем обработки задачu*   ------------------------ скорость u    задач в секундуu?   Закончили обработку задач, ошибок )&r   r   Zcmf.apprG   datetimeZcmfutilZdisable_aclZdisable_notifyr<   r=   r7   r	   r   source_hashZ
CmfProjectZCmfErrorrH   ZqueueZQueuer'   infoZthreading_max_forksZnowrange	threadingThreadrK   r8   startr    Zget_project_tasksZconfigZIMPORT_ONLY_NEW_OR_UPDATEDZ	is_cancelZputjoinZtotal_secondsempty)r-   Z
project_idrV   limitr   rG   rP   errorsr    Z
api_importZproject_ext_idr@   Zissue_processrL   rM   siprocZcntZissueZdiffZ
has_errorsr   r   r   process_issue_forku   st    


	


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 )NrI   r
   CmfTaskZbrowser/   )r   rI   
class_nameospathrW   r	   r   r   supercalc_ext_hrefr   r4   	__class__r   r   rd      s    zCmfPluginJira.calc_ext_hrefc                    s2   | dg |jdkr&|jr&|jd S t |S )NrI   r_   Z
issue_path)r   r`   rI   rc   calc_dump_pathre   rf   r   r   rh      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   rD   rF   r^   rd   rh   __classcell__r   r   rf   r   r      s,   
	


Br   )
r   Zcmf.includeZ#modules.jira.fields.cmf_plugin_jirarl   Zmodules.jira.apir   r   r1   rm   r   r   r   r   r   <module>   s   