B
    Ef                 @   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   sD   ddddddddd	d
ddd}x |  D ]\}}| ||} q(W | 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   s.   ddddddddddddddd}| | dS )	Nr            )u   ОтложеноZLowestu   Самый низкийu   НизшийZLowu   Низкийu   СреднийZMediumZHighu   Высокийu   Высшийu   НаивысшийZHighestu   Критический)get)priorityr    r   r   r   _get_priority/   s    zJiraBaseImport._get_priorityNc                s  |rL|d rL|d d  ddd }|dkrdg }|d kr@|S x|D ]}|d|d i qFW |S |d	krg }|d kr||S x|D ]}|d|i qW |S |d
kr|d kr|S |dS |dkr|d kr|S yny| || j }W n2 tk
r } zt| dW d d }~X Y nX | j|ddd\}	}
|	s<td|	S  tk
r } z@|  jd7  _| jj	d|d  d| d| d| ddd d S d }~X Y nX n|dkrg }|d kr|S x|D ]}yxy| || j }W n2 tk
r } zt| dW d d }~X Y nX | j|ddd\}	}
|	s6td||	 W n` tk
r } z@|  jd7  _| jj	d|d  d| d| d| ddd W d d }~X Y nX qW |S |dkrg }|d kr|S t
|trx@|D ]}|d|d i qW nt
|tr|d|d i |S |dkrH fdd |d kr@g S  |S |S |dkr\| S |dkrtjj|dgd }x<|D ]4}d!d" |jj D }||}|d k	r~|S q~W | |S |S )#NZcustomZschema:r%   r$   )ZmultiselectZmulticheckboxesr   r   labels)ZselectZradiobuttonsidZ
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   Zchild)r(   extend)vresult)convert_cascader   r   r2      s    
z=JiraBaseImport._normalize_jira_value.<locals>.convert_cascadeZdoes_not_workr)   choices)r   r   c             S   s   i | ]\}}||qS r   r   )r   r   r0   r   r   r   r      s    z8JiraBaseImport._normalize_jira_value.<locals>.<dictcomp>)splitappendr(   Z_get_user_info_from_dumpZuser_key	ExceptionZ_process_personr
   r   Z	log_error
isinstancelistdictZmodelsZCmfCustFieldConfFieldr3   r   r   r*   )r   Zlocal_field_namer   Z	ext_fieldZcustom_field_typesZresr0   Z	user_infoexcZperson_Zfield_configsZfield_configr    r   )r2   r   _normalize_jira_valueC   s    



 


  











z$JiraBaseImport._normalize_jira_value)N)__name__
__module____qualname____doc__r   staticmethodr   r   r9   r   r!   r*   r<   r   r   r   r   r      s   r   N)typingr   Zcmf.includeZcmfr   r   r   r   r   r   <module>   s   