
    *.+h                     @    d dl mZ d dlT d dlmZ  G d d          ZdS )    )List)*)fieldsc                       e Zd ZdZd Zed             Zedee         defd            Z	ed             Z
ed             Zdd
Zd	S )JiraBaseImportuE   Базовый класс загрузки объектов из jirac                     ddl m} || _        |                     | j        j        d                   | _        d| _        d S )Nr   )	CmfImportimport_settingsF)common.models.cmf_importr	   
cmf_import_normalize_settingsjson_settingssettings
has_errors)selfr   r	   s      ./modules/jira/base_import.py__init__zJiraBaseImport.__init__   sF    666666%/001NO`1abb    c                     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key	link_types      r   _get_link_for_descriptionz(JiraBaseImport._get_link_for_description   s\    II0%88	1:EIOO%%++---	OiOO#OOOOOOr   r   returnc                     d | D             S )Nc                      i | ]}|d          |S )name ).0ss     r   
<dictcomp>z6JiraBaseImport._normalize_settings.<locals>.<dictcomp>   s    ///&	1///r   r"   )r   s    r   r   z"JiraBaseImport._normalize_settings   s    //h////r   c                     ddddddddd	d
ddd}|                                 D ]\  }}|                     ||          } | S )Njanfebmaraprmayjunjulaugsepoctnovdec)u   янвu   февu   марu   апрu   майu   июнu   июлu   авгu   сенu   октu   нояu   дек)itemsreplace)valuemappingmonth_rumonth_ens       r   _translate_monthzJiraBaseImport._translate_month   sl     
 
 #*--// 	6 	6HhMM(H55EEr   c                     i 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ddddddddddddddddd
}|                     |           S )NTrivialu   ТривиальныйMinoru   Незначительныйu   ОтложеноLowestu   Самый низкийu   Низшийu   МинимальныйLowu   Низкийu   Среднийr   Mediumu   ОбычныйHigh   u   Высокийu   Высший            )
u   НаивысшийHighestMajoru   СерьезныйCriticalu   Критичныйu   КритическийBlockeru   Блокерu   Блокирующий)get)priorityr6   s     r   _get_priorityzJiraBaseImport._get_priority/   s   
r
$b
 R
 +B	

 
 b
 &r
 B
 %b
 2
 B
 a
 a
 a
 A
  a!
" A#
$ #$"#"#&'&'7
 
 
: {{8$$$r   Nc                    |r&|d         r|d         d                              dd          d         }|dv r*g }||S |D ]}|                    d|d         i            |S |d	k    r$g }||S |D ]}|                    d|i           |S |d
v r@||S d }|                    d          r#t                              |d         dd          }|S |dk    r||S 	 	 |                     || j                           }n$# t          $ r}	t          |	 d          d }	~	ww xY w|                     |dd          \  }
}|
st          d          |
S # t          $ rJ}	| xj	        dz  c_	        | j
                            d|d          d| d| d|	 dd           Y d }	~	d S d }	~	ww xY w|dk    rg }||S |D ]}	 	 |                     || j                           }n$# t          $ r}	t          |	 d          d }	~	ww xY w|                     |dd          \  }
}|
st          d          |                    |
           # t          $ rI}	| xj	        dz  c_	        | j
                            d|d          d| d| d|	 dd           Y d }	~	d }	~	ww xY w|S |dv rrg }||S t          |t                    r#|D ]}|                    d|d         i            n2t          |t                    r|                    d|d         i           |S |dk    rfd|g S  |          S |S |dk    r| S |dk    rt          j                            d d!| j        gg"          }t          j                            dd#|gd$d!|ggd%g&          }|D ]E}d' |j        j                                        D             }|                    |          }||c S F|                     |          pd(S |S ))Ncustomschema:rE   rB   )multiselectmulticheckboxesr!   r5   labels)selectradiobuttons-    )r/   length
userpickeruH   . Возможно пользователь был удален в Jira.F)createupdateu=   Пользователь не найден в системе.u0   Не удалось присвоить полю z (u   ) значение z. zERR-0038	CmfPerson)obj_typemultiuserpicker)multigrouppickergrouppickercascadingselectc                     d| d         ig}|                      d          r$|                     | d                              |S )Nr!   r5   child)rN   extend)vresultconvert_cascades     r   rk   z=JiraBaseImport._normalize_jira_value.<locals>.convert_cascade   sL    %qz23FuuW~~ Cooaj&A&ABBB!Mr   does_not_workrO   cache_schemesIN)filter=parentchoices)ro   r   c                     i | ]\  }}||	S r"   r"   )r#   r   ri   s      r   r%   z8JiraBaseImport._normalize_jira_value.<locals>.<dictcomp>   s    SSSfc11cSSSr   r   )splitappendrN   cmfutiltranslit_strip_get_user_info_from_dumpuser_key	Exception_process_personr   r   	log_error
isinstancelistdictmodelsCmfCustFieldConfcust_field_conf_schemeCmfCustFieldConfFieldrr   r5   r3   rP   )r   local_field_namer5   	ext_fieldcustom_field_typesresri   	value_key	user_infoexcperson_cust_field_confsfield_configsfield_configr6   rk   s                   @r   _normalize_jira_valuez$JiraBaseImport._normalize_jira_valueP   s    Y	8, Y	!*8!4X!>!D!DS!!L!LR!P!%GGG=J 5 5AJJ'
34444
#x//=J , ,AJJ{++++
#'AAA= L 	99W%%  ' 6 6g! !7 ! !I
 ! #|33= L z$($A$A%BV$W$W		$ z z z'3(x(x(xyyyz $ 4 4YuUZ 4 [ [IFA! i'(ghhh!M       OOq(OOO-- T9U[K\  T  T`p  T  T  FK  T  T  OR  T  T"!, .   
  44444  $'888=J  A~(,(E(EaFV(W(WII( ~ ~ ~"+s,|,|,|"}"}}~$($8$85Y^$8$_$_	% m"+,k"l"ll

6****$   1,11 TyY_O`  T  Tdt  T  T  JK  T  T  OR  T  T&%0 2         
#'JJJ=JeT** 8" 8 8

FAfI#677778t,, 8JJf6777
#'888" " " " "
 =I&u---L..9z))%6;;'0K/LM  <     #8==S"23t%56 "{ >  M !.  SS0D0J0P0P0R0RSSSkk%((?JJJ #%%e,,11sm    C? >E ?
D 	DD  0E 
F%?F  F%: GI
G<%G77G<<AI
J?JJ)N)__name__
__module____qualname____doc__r   staticmethodr   r   r   r   r9   rP   r   r"   r   r   r   r      s        OO      P P \P
 0d4j 0T 0 0 0 \0   \& % % \%@o o o o o or   r   N)typingr   cmf.includecmfr   r   r"   r   r   <module>r      sq                   w w w w w w w w w wr   