U
    ug                     @   s2   d dl mZ d dlT d dlmZ G dd dZdS )    )List)*)fieldsc                   @   s^   e Zd ZdZdd Zedd Zeee edddZ	ed	d
 Z
edd ZdddZdS )JiraBaseImportuE   Базовый класс загрузки объектов из jirac                 C   s0   ddl m} || _| | jjd | _d| _d S )Nr   )	CmfImportZimport_settingsF)Zcommon.models.cmf_importr   
cmf_import_normalize_settingsZjson_settingssettings
has_errors)selfr   r    r   ./modules/jira/base_import.py__init__   s    zJiraBaseImport.__init__c                 C   s8   t d| }|r|  n| }d| d| d| dS )Nz(?<=\().+(?=\))z<li>z <a href="/desk?obj=Task:z">z	</a></li>)researchgrouplower)titlekeyZ	link_typer   r   r   _get_link_for_description   s    z(JiraBaseImport._get_link_for_description)r	   returnc                 C   s   dd | D S )Nc                 S   s   i | ]}|d  |qS )namer   ).0sr   r   r   
<dictcomp>   s      z6JiraBaseImport._normalize_settings.<locals>.<dictcomp>r   )r	   r   r   r   r      s    z"JiraBaseImport._normalize_settingsc                 C   s@   ddddddddd	d
ddd}|  D ]\}}| ||} q&| S )NZjanZfebZmarZaprZmayZjunZjulZaugsepoctZnovZdec)u   янвu   февu   марu   апрu   майu   июнu   июлu   авгu   сенu   октu   нояu   дек)itemsreplace)valuemappingZmonth_ruZmonth_enr   r   r   _translate_month   s     zJiraBaseImport._translate_monthc                 C   sF   ddddddddddddddddddddddd	d	d
d
d
d}| | S )Nr                  )ZTrivialu   ТривиальныйZMinoru   Незначительныйu   ОтложеноZLowestu   Самый низкийu   Низшийu   МинимальныйZLowu   Низкийu   СреднийZMediumu   ОбычныйZHighu   Высокийu   Высшийu   НаивысшийZHighestZMajoru   СерьезныйZCriticalu   Критичныйu   КритическийZBlockeru   Блокерu   Блокирующий)get)priorityr    r   r   r   _get_priority/   s:    zJiraBaseImport._get_priorityNc                    s  |r`|d r`|d d  ddd }|dkr`g }|d kr@|S |D ]}|d|d i qD|S |d	krg }|d krx|S |D ]}|d|i q||S |d
kr|d kr|S d }|drtj|d ddd}|S |dkr|d kr|S zpz| || j }W n2 tk
r, }	 zt|	 dW 5 d }	~	X Y nX | j|ddd\}
}|
sPtd|
W S  tk
r }	 zF|  j	d7  _	| j
jd|d  d| d| d|	 ddd W Y d S d }	~	X Y nX n|dkrg }|d kr|S |D ]}zxz| || j }W n2 tk
r, }	 zt|	 dW 5 d }	~	X Y nX | j|ddd\}
}|
sPtd||
 W n` tk
r }	 z@|  j	d7  _	| j
jd|d  d| d| d|	 ddd W 5 d }	~	X Y nX q|S |dkr0g }|d kr|S t|tr|D ]}|d|d i qnt|tr,|d|d i |S |dkr\ fdd |d krTg S  |S |S |dkrp| S |d krtjjd!d"| jggd#}tjjdd$|gd%d"|ggd&gd'}|D ]8}d(d) |jj D }||}|d k	r|  S q| |p d*S |S )+NZcustomZschema:r&   r%   )ZmultiselectZmulticheckboxesr   r   labels)ZselectZradiobuttons-    )r   lengthZ
userpickeruH   . Возможно пользователь был удален в Jira.F)Zcreateupdateu=   Пользователь не найден в системе.u0   Не удалось присвоить полю z (u   ) значение z. zERR-0038Z	CmfPerson)Zobj_typeZmultiuserpicker)ZmultigrouppickerZgrouppickerZcascadingselectc                    s.   d| d ig}|  dr*| | d  |S )Nr   r   child)r+   extend)vresultconvert_cascader   r   r9      s    
z=JiraBaseImport._normalize_jira_value.<locals>.convert_cascadeZdoes_not_workr,   Zcache_schemesIN)filter=parentchoices)r;   r   c                 S   s   i | ]\}}||qS r   r   )r   r   r6   r   r   r   r      s      z8JiraBaseImport._normalize_jira_value.<locals>.<dictcomp>r   )splitappendr+   ZcmfutilZtranslit_stripZ_get_user_info_from_dumpZuser_key	ExceptionZ_process_personr
   r   Z	log_error
isinstancelistdictZmodelsZCmfCustFieldConfZcust_field_conf_schemeZCmfCustFieldConfFieldr>   r   r   r-   )r   Zlocal_field_namer   Z	ext_fieldZcustom_field_typesresr6   Z	value_keyZ	user_infoexcZperson_Zcust_field_confsZfield_configsZfield_configr    r   r8   r   _normalize_jira_valueP   s    

 

 







z$JiraBaseImport._normalize_jira_value)N)__name__
__module____qualname____doc__r   staticmethodr   r   rD   r   r!   r-   rH   r   r   r   r   r      s   


 r   N)typingr   Zcmf.includeZcmfr   r   r   r   r   r   <module>   s   