
    ]h                         d dl Z d dlZd dlmZ d dlT d dlmZ ddlmZ ddl	m	Z	 ddl
m
Z
 dd	lmZ  G d
 de          Z G d d          ZdS )    N)fields)*)JiraBaseImport   )
exceptions)jqlLexer)	jqlParser)
jqlVisitorc            	       4    e Zd Zi ddej        j        ddgddddej        j        ddddej        j        ddd	d	ej        j        d
dddd
iddd
iddej        j	        d
dddej        j
        ddgddddej        j        ddgdddej        j        ddddej        j        ddddej        j        ddgdddej        j        dddd
g ddddej        j        ddgddddd
iddej        j        ddgdg dd i d!dd
id"dd
id#d$ej        j        dd%gddd&dd
id'dd
id(dd
id)d
d*gdd+d,ej        j        ddgddd-d.ej        j        ddgddd/dd
id0d0ej        j        ddd1d1ej        j        d2gg d3dd4d5dd
id6d
d7gdd8d8ej        j        ddd9dd
id:dd
ii d;dd
id<d<ej        j        ddgddd=d=ej        j        dd>gdd?d?ej        j        ddgddd@d@ej        j        ddgdddAdAej        j        dddBdBej        j        dddCdd
idDdDej        j        ddEgddFdFej        j        ddGgddHdd
idIdd
idJdKej        j        dddLdd
idMdd
idNdd
idOdd
iZ fdPZdQ Z dR Z!dS Z"dTe#j$        fdUZ%dTe#j&        fdVZ'dTe#j(        fdWZ)dTe#j*        fdXZ+dTe#j,        fdYZ-dTe#j.        fdZZ/dTe#j0        fd[Z1dTe#j2        fd\Z3dTe#j4        fd]Z5dTe#j6        fd^Z7dTe#j8        fd_Z9dTe#j:        fd`Z;dTe#j<        fdaZ=dTe#j>        fdbZ?dTe#j@        fdcZAdTe#jB        fddZCdTe#jD        fdeZEdTe#jF        fdfZGdTe#jH        fdgZIdTe#jJ        fdhZKdTe#jL        fdiZMdTe#jN        fdjZOdTe#jP        fdkZQdTe#jR        fdlZSdTe#jT        fdmZUdTe#jV        fdnZWdTe#jX        fdoZYdTe#jZ        fdpZ[dTe#j\        fdqZ]dTe#j^        fdrZ_dTe#j`        fdsZadTe#jb        fdtZcdTe#jd        fduZedTe#jf        fdvZg xZhS )wJQLaffectedversionext_idnameT)r   	cmf_field	search_by	supported	approvals)r   r   r   assigneeattachmentsFcategoryr   zchange-gating-typecomment	componentcreatedcreateddate)r   r   r   aliasescreatordescriptiondueduedateenvironmentfilter)requestsavedfiltersearchrequest)r   r   
fixversionhierarchylevelissuekeycode)idissuekey)r   r   r   r   r   	issueLinkissueLinkTypelabelstagsalias
lastViewedlevelorganizationsoriginalEstimatetimeoriginalestimateparentparent_taskz	epic linkz"epic link"parentprojectpriorityproject
CmfProject)r   task_code_prefixr(   r   )r   r   modelsr   r   projecttyperemainingestimatetimeestimatereporterzrequest-channel-typezrequest-last-activity-timezrequest type
resolutionresolvedresolutiondatesprintstatussummarytext	timespenttype	issuetypeupdatedupdateddatevotervoteswatcher
spectatorsworklogAuthorworklogCommentworklogDate	workRatioc                 |    t                                                       |j        | _        || _        || _        d S N)super__init__
cmf_importsource_hash
api_import)selfr\   r[   	__class__s      ./modules/jira/jql/parser.pyrY   zJQL.__init__"  s6    $/&$    c                     | j                                       }|s8t          t          fd| j                                                   d           }|S )Nc                 4    |                      dg           v S )Nr   )get)fr   s    r_   <lambda>z JQL._get_field.<locals>.<lambda>-  s    daeeIr&:&:: r`   )field_mappingrc   nextr!   values)r]   r   fields    ` r_   
_get_fieldzJQL._get_field(  sg    "&&t,, 	::::&--//   E r`   c                     |j         j         }|j        j        }|j                                                             ||          S rW   )startstopgetInputStreamgetText)r]   ctxrl   rm   s       r_   	_get_textzJQL._get_text4  s8    	x}y''))11%>>>r`   c                    d }	 | j                             |          }| j                             |dd          \  }}|r|j        }n7t	          d| d          # t          $ r}t	          | d          d }~ww xY w|S )NF)createupdateu   Пользователь 'u%   ' не найден в системеuG   . Возможно пользователь был удален в Jira)r\   _get_user_info_from_dump_process_personr(   	Exception)r]   user_key	user_code	user_infouser_excs          r_   _get_user_codezJQL._get_user_code9  s    			n@@JJI o55iV[5\\GD! n I		 lX l l lmmm  	m 	m 	mskkklll	m s   A 
A<%A77A<rp   c                    d}g }|                                 r'|                     |                                           nd }|                                r'|                     |                                          nd }|r&||d         z  }|                    |d                    |r)|d|d         z   z  }|                    |d                    ||fS )N ubql2bql )jqlWherevisit
jqlOrderByappend)r]   rp   r   r   whereorder_bys         r_   visitJqlQueryzJQL.visitJqlQueryI  s    .1llnnF

3<<>>***$36>>3C3CM4::cnn../// 	%U7^#EJJuU|$$$ 	(S8G,,,EJJx'''czr`   c                    g }|                                 D ].}|                     |          }|r|                    |           /|s|                                 S d                    d |D                       }t          |          dk    r|d         d         }nJt          |          dk    r#dg}|                    d |D                        n|                                 }||dS )	Nz OR c                     g | ]
}|d          S r    .0clauses     r_   
<listcomp>z(JQL.visitJqlOrClause.<locals>.<listcomp>c  s    CCCVG_CCCr`   r   r   r   ORc                     g | ]
}|d          S r   r   r   s     r_   r   z(JQL.visitJqlOrClause.<locals>.<listcomp>h      <<<&u<<<r`   r   r   )jqlAndClauser   r   defaultResultjoinlenextend)r]   rp   clausesc
and_clauser   r   s          r_   visitJqlOrClausezJQL.visitJqlOrClauseY  s   !!## 	+ 	+AAJ +z*** 	(%%'''CC7CCCDDw<<1!*U#CC\\A&CJJ<<G<<<====$$&&Cs+++r`   c                    g }|                                 D ].}|                     |          }|r|                    |           /|s|                                 S d                    d |D                       }t          |          dk    r|d         d         }nJt          |          dk    r#dg}|                    d |D                        n|                                 }||dS )	Nz AND c                     g | ]
}|d          S r   r   r   s     r_   r   z)JQL.visitJqlAndClause.<locals>.<listcomp>x  s    DDD&fWoDDDr`   r   r   r   ANDc                     g | ]
}|d          S r   r   r   s     r_   r   z)JQL.visitJqlAndClause.<locals>.<listcomp>}  r   r`   r   )jqlNotClauser   r   r   r   r   r   )r]   rp   r   r   
not_clauser   r   s          r_   visitJqlAndClausezJQL.visitJqlAndClausen  s   !!## 	+ 	+AAJ +z*** 	(%%'''DDGDDDEEw<<1!*U#CC\\A'CJJ<<G<<<====$$&&Cs+++r`   c                    |                                 r(|                     |                                           }nw|                                r(|                     |                                          }n;|                                r'|                     |                                          }|s|                                 S |j        r|j        j         d|d          n|d         |d         d}|S )Nr   r   r   r   )r   r   jqlSubClausejqlTerminalClauser   is_notrH   )r]   rp   r   results       r_   visitJqlNotClausezJQL.visitJqlNotClause  s     	9ZZ 0 0 2 233FF 	9ZZ 0 0 2 233FF""$$ 	9ZZ 5 5 7 788F 	(%%''' @Cz^
;;&/;;;vV]%=
 
 r`   c                     |                      |                                          }|s|                                 S d|d          d|d         d}|S )N(r   )r   r   )r   jqlOrClauser   )r]   rp   	or_clauser   s       r_   visitJqlSubClausezJQL.visitJqlSubClause  sg    JJs0011	 	(%%''' /7+...U#
 

 r`   c                    	 |                      |                                          }|d         }|j        }t          |t          j                  }|                      |                                          }|d         d         }|d         d         }|                                                    d          }	t          |	t          j
                  }
t          |	t          j                  }t          |	t          j                  }|
rBt          |t          j                  r||dg}|dk    rd||||gg}n|r
|dk    rd	nd
}|||g}nwt          |t          j                  rZ|dv r(|r%g }|                                D ]\  }}|dk    rD|r!|                    ||dk    rd	nd
d g           .|                    ||dk    rdndd g           O|dk    r|                    | d||g           q|dk    rG|D ]D\  }}|dk    r |                    |r| dn|d|g           +|                    |||gg           Et#          |          dk    r
|d         }nbt#          |          dk    r|                    d|dk    rdnd           n/|dk    r|r| dn|||g}n|dk    rdnd}|s| dn|||gg}n|d         dk    r<ddd|                    dd          gdd|                    dd          gd||gd||gg}n|dv r|rg }|                                D ]J\  }}|dk    r!|                    ||dk    rdndd g           ,|dk    r|                    |||g           Kt#          |          dk    r	|d         }n7t#          |          dk    r|                    d|dk    rdnd           n|||g}|d          d|d          |d}|S # t(          $ rW}| j        j                            d|                     |           d | d!           |                                 cY d }~S d }~ww xY w)"Nr   r   operatorvaluer   r   =r   z
NOT EXISTSEXISTS)INNOT INemptyr   !=rh   z.code	functions	membersOf	MEMBER_OFr   r   r   r   rH   r)   %r(   r   r   r   u   Условие '&   ' удалено из запроса. .)r   jqlField
class_name
issubclassr   
CmfM2MBasejqlTerminalClauseRhsgetChild
isinstancer	   JqlEmptyContextJqlListContextJqlFunctionContextCmfStr
CmfRelBaseitemsr   r   insertreplacerw   rZ   loggerwarningrq   r   )r]   rp   ri   r   
field_nameis_m2m_field   terminal_сlausebql_operator	bql_valueoperandis_empty_operandis_list_operandis_function_operand
bql_result
value_typerh   function_namer   r   r}   s                       r_   visitJqlTerminalClausezJQL.visitJqlTerminalClause  s   o	(JJs||~~..Ek*I"-J%i1BCCL#zz#*B*B*D*DEE+E2:>L(/8I..0099!<<G)'93LMM()2JKKO",Wi6R"S"S TGi77 G",lB!?J#s** &'yA&
 $ Y7Cs7J7J||PX",lI!FJJIv'899 GG#3333!#J.7oo.?.? [ [*
F%00+ # * 1 1$.4@D4H4HLLh$(3" !# !# !# !# !+ 1 1$.+74+?+?CCT$(3" !# !# !# !#
 (833&--*/C/C/C\SY.Z[[[[';668> [ [ 4u#0K#?#?$.$5$5@L(\:(<(<(<(<R\(3(-7& %' %' %' %' %/$5$5z<RWQX6Y$Z$Z$Z$Z:!++%/]

Z1,,"))!\T5I5ITTuUUU![000<L:,,,,*$!"JJ ,83+>+>44HL4GW:,,,,Z$""JJ
 v&((3	 1 1#r : :;S)"3"3C"<"<=\95\95

  #3333!#J.7oo.?.? R R*
F%00&-- *'3t';'; $/    
 (833&--z<.PQQQ:!++%/]

Z1,,"))!\T5I5ITTuUUU",lI!FJ "&MGG,<W,EGG! F
 M 	( 	( 	(O"**d4>>##6#6dd^addd   %%''''''''		(s   OO 
P>'AP93P>9P>c                     |                      |                                          }|                      |                    d                    }| d|d          ||d         dd}|S Nr   r   r   r   r   r   r   )r   jqlEqualsOperatorr   r]   rp   r   r   r   s        r_   visitJqlEqualsClausezJQL.visitJqlEqualsClause  sx    ::c335566

3<<??++ !335>33$u 
 
 r`   c                    |                      |                                          }|                      |                    d                    }t          |                    d          t          j                  }|r|d         dk    rdnd|d<   |d          d|d          |d         |r|d         nd|d          dd	d
}|S )Nr   r   ILIKEr   r   r   r   r   r   r   )r   jqlLikeOperatorr   r   r	   r   )r]   rp   r   r   is_empty_valuer   s         r_   visitJqlLikeClausezJQL.visitJqlLikeClause   s    ::c113344

3<<??++#CLLOOY5NOO 	J%-e_%?%?ccTHUO !)<<E'N<<$UO)7Pu=Pu=P=P=P 
 
 r`   c                     |                      |                                          }|                      |                    d                    }| d|d          ||d         dd}|S r   )r   jqlComparisonOperatorr   r   s        r_   visitJqlComparisonClausezJQL.visitJqlComparisonClause2  sx    ::c7799::

3<<??++ !335>33$u 
 
 r`   c                    |                      |                                          }|                      |                    d                    }| d|d          ||d         dd}t          |                    d          t          j                  rf|                      |                                                                          dk    r)|dk    rt          j	        d	| d
          d|d         d<   |S )Nr   r   r   r   r   r   r   r   uV   Функция 'membersOf' не поддерживается с оператором ''r   r   )
r   jqlInOperatorr   r   r	   r   jqlFunctionjqlFunctionNamer   ClauseErrorr   s        r_   visitJqlInClausezJQL.visitJqlInClause@  s   ::c//1122

3<<??++ !335>33$u 
 
 cll1ooy'CDD 	8zz#//++;;==>>+MMx''$0|qy|||   -8uj)r`   c                     |                      |                                          }|                      |                                          }|d          d|d          |d         |d         dd}|S )Nr   r   r   r   r   )r   jqlIsOperatorjqlEmpty)r]   rp   r   r   r   s        r_   visitJqlIsClausezJQL.visitJqlIsClauseV  s    ::c//1122

3<<>>** !)<<E'N<<$UOu 
 
 r`   c                     |                      |                                          }t          j        d| d          Nu   Оператор '#   ' не поддерживается)r   jqlWasOperatorr   r   r]   rp   r   s      r_   visitJqlWasClausezJQL.visitJqlWasClaused  s<    ::c002233$%g(%g%g%ghhhr`   c                     |                      |                                          }t          j        d| d          r   )r   jqlWasInOperatorr   r   r   s      r_   visitJqlWasInClausezJQL.visitJqlWasInClauseh  s<    ::c224455$%g(%g%g%ghhhr`   c                     |                      |                                          }t          j        d| d          r   )r   jqlChangedOperatorr   r   r   s      r_   visitJqlChangedClausezJQL.visitJqlChangedClausel  s<    ::c446677$%g(%g%g%ghhhr`   c                 *    |                                 S rW   ro   r]   rp   s     r_   visitJqlEqualsOperatorzJQL.visitJqlEqualsOperatorp      {{}}r`   c                     ddd}|                                 |                    |                                           d}|S )Nr   z	NOT ILIKE)~z!~r   )ro   rc   )r]   rp   operator_mappingr   s       r_   visitJqlLikeOperatorzJQL.visitJqlLikeOperators  sN    
 

 [[]]#''66
 
 r`   c                 *    |                                 S rW   r  r  s     r_   visitJqlComparisonOperatorzJQL.visitJqlComparisonOperator~  r
  r`   c                 2    |                                 rdndS )Nr   r   NOTr  s     r_   visitJqlInOperatorzJQL.visitJqlInOperator  s    7799.xx$.r`   c                 h    |                                 rdnd|                                 rdndd}|S )NzIS NOTISr   r   r   r  r]   rp   r   s      r_   visitJqlIsOperatorzJQL.visitJqlIsOperator  s=    !$4XX7799-44#
 
 r`   c                 2    |                                 rdndS )NzWAS NOTWASr  r  s     r_   visitJqlWasOperatorzJQL.visitJqlWasOperator  s    GGII0yy50r`   c                 2    |                                 rdndS )Nz
WAS NOT INzWAS INr  r  s     r_   visitJqlWasInOperatorzJQL.visitJqlWasInOperator  s    "wwyy6||h6r`   c                 *    |                                 S rW   r  r  s     r_   visitJqlChangedOperatorzJQL.visitJqlChangedOperator  r
  r`   c                    |                                 r|                     |                                                               dd                              dd          }|                     |                                          }|r"|d         st          j        d| d          nt          j        	                    dd| gd	d
g          }|rBt          |j                  t          t          j        t          |j                            d}nt          j        d| d          |                                ri|                     |                                          }t          |j                  t          t          j        t          |j                            d}nt          j        d| d          |d         }|	                    dg           }|s1t!          |d          r!|j        r|                    |j                   |s1t!          |d          r!|j        r|                    |j                   ||d<   |S )Nr   r   "r   
   Поле 'r   captionr   r   field_custom_typer!   r   )r   r   !   Неизвестное поле 'r   r=   model)	jqlStringr   r   rj   lowerr   
FieldErrorr=   CmfCustFieldrc   strr   getattrCmfTaskUnknownFieldErrorjqlCustomFieldhasattrr'  r   r   )r]   rp   string_fieldri   custom_fieldr   field_modelss          r_   visitJqlNonNumberFieldzJQL.visitJqlNonNumberField  s`   ==?? 	d::cmmoo66>>sBGGOOPSUWXXLOOL$6$6$8$899E l[) p$/0n\0n0n0nooop  &266%w<0AB"$78  7       l #L$5 6 6%,V^SAR=S=S%T%T EE
 %67j[g7j7j7jkkk!! 	d::c&8&8&:&:;;LL-..$V^S9J5K5KLL EE
 ./bS_/b/b/bccc+&	yy2.. 	1G!<!< 	1 	1	000 	2H!=!= 	2)BR 	2	 0111&hr`   c                    |                                 }| j         d| }d| d| j                                         }t          j                            ddd|gdd|ggddg	          }|st          j        d
| d| d          |S )N::cf_r|   r   r   r   r   r$  r%  +   Пользовательское поле '' (   ) не найдено)	POSNUMBERr[   r)  r=   r+  rc   r   CustomFieldError)r]   rp   field_idfield_ext_idr   r3  s         r_   visitJqlCustomFieldzJQL.visitJqlCustomField  s    ==??*88h88@8@@d&6&<&<&>&>@@
*..*-7L1
 /0 / 
 
  	-ljllXlll   r`   c                 *    |                                 S rW   r  r  s     r_   visitJqlStringzJQL.visitJqlString  r
  r`   c                     dd d}|S )NEMPTYr   r   r  s      r_   visitJqlEmptyzJQL.visitJqlEmpty  s    
 
 r`   c           	         d }|                                                     dd                              dd          }	 |j        j        }t          |t          j                  r(|                     |                                          }ngt          |t          j                  rM|j        j        }t          |t          j                  r'|                     |                                          }n'# t          $ r}t          d| d|           d }~ww xY w|d         }|j        }	|                    dg           }
|                    d          }d }	 |	d	k    rt          j        |          }d| d|d
}n|	dk    rlt          j                            dd|gg dg          }|s+t          j                            ddd| dgg dg          }|rt#          |j                  }nut'          |t(          j        t(          j        t(          j        f          r7t1          j        d|          r|d| d
}|d         dk    rd| |d<   n|}nd|
v r|                     |          }n|
r|rdg}|
D ]}|D ]l}|dk    rK|	dv r| j         d| }n|	dv r| j         d | }n| j         d!| }|                    ddd"| d"g           S|                    |d| g           mt:                              |                              |          }|r	|j        } nn>|j         r5|j!        d#v r,|rt:          "                    |dd$%          }n|}d| d|d
}n|}|st          d&          n*# t          $ r}t          d'| d(|	 d|           d }~ww xY wtG          |          tH          urd| dn|d)         tG          |          tH          urt#          |          n|d         d
}|S )*Nr   r   r!  u2   Невозможно найти значение 'z'. r   r=   r   r9   r   
logic_typer   r   )r   r   Nr!   r0   LIKEz%"z"%z^-?[0-9]+(w|d|h|m?)( +)?$now()r   -znow()+r   	CmfPersonr   r   )affected_versionsfix_versionsz
::version:rF   z%::r7  r   	CmfChoice    )seplengthu;   Возможно объект не импортированuO   Не найдено подходящей замены для значения 'u   ' в поле 'r   )%ro   r   	parentCtxr   r	   JqlTerminalClauseContextr   r   r   rw   
ValueErrorr   rc   r   _get_priorityr=   CmfLogicTyper,  r(   r   r   CmfDateTimeCmfDateCmfTimerematchr~   r[   r   cmfutilget_model_by_namesgetcustomwidgettranslit_striprJ   dict)r]   rp   	new_valuecurrent_valuer6   ri   list_parentr}   r   r   r4  r   objpriority_keyrG  filter_field_modelsearch_fieldr   
choice_keyr   s                        r_   visitJqlValuezJQL.visitJqlValue  s<   	--c266>>sBGG		k],F&)"DEE ?

6??#4#455FI$<== ?$.8k9+MNN ? JJ{';';'='=>>E 	k 	k 	kiR_iidgiijjj	k +&	)
yy2..IIk**	L	Z''-;MJJ1111' 		 |++#044-8... 5  
 " !'!4!8!8$f.D=.D.D.DE222  "9 " "J  5 #JO 4 4II(:FNFN'[\\ -*88-HH .!.6}66! !I %Q'3..+CM+C+C	%( -II,, //>>		 !*) !*&#/  K(1 
X 
X'833)-RRR,0,<)W)W)W)W!+!9!9,0,<)P)P)P)P,0,<)O)O)O)O#NNHg}6}}}+MNNNN#NNL'mCU+VWWWW!33K@@EEWEUUC $'H	 ! *i&6;&G&G  /!(!7!7%! "8 " "JJ "/J1111& 		
 *	 _ ]^^^_ 	 	 	5bo 5 5 *5 5/25 5  	 *.i)D)D%%%%%)T[J\%))__D%@%@3y>>>iPUFV
 
 s2    B5C6 6
D DDHM8 8
NNNc                    |                      |                                          }|dk    r|                                dd}n|dk    rd|                      |                                          }|rdd                    |           dn|                                 d |D             d}n6|d	k    r|                                d
d}nt          j        d| d          |S )NcurrentUser__G_CURRENT_USERr   r   z
membersOf(, r   c                 b    g | ],}|                     d d                               dd          -S )r   r   r!  )r   )r   args     r_   r   z(JQL.visitJqlFunction.<locals>.<listcomp>N  s6    WWW#C,,44S"==WWWr`   nowrJ     Функция 'r   )r   r   ro   jqlArgumentListr   r   r   FunctionError)r]   rp   r   r   argument_lists        r_   visitJqlFunctionzJQL.visitJqlFunctionB  s   

3#6#6#8#899M))) FF k)) JJs':':'<'<==MERlAdii&>&>AAAAX\XjXjXlXlWWWWW FF e## FF
 *+pm+p+p+pqqqr`   c                 *    |                                 S rW   r  r  s     r_   visitJqlFunctionNamezJQL.visitJqlFunctionNameZ  r
  r`   c                     g }|                                 D ].}|                     |          }|r|                    |           /|S rW   )jqlArgumentr   r   )r]   rp   argsargumentrs  s        r_   visitJqlArgumentListzJQL.visitJqlArgumentList]  sQ    )) 	! 	!H**X&&C !C   r`   c                 v   |                      |j                            d                    }g }i }|                                D ]}	 |                    d          }|                      |          }|s1|                    |d                    t          |t          j                  rd|d<   nt          |t          j                  r2|	                    dg           }|                    |d                    nt          |t          j
                  r|                      |                                          }	|dk    r!|	dk    rt          j        d	|	 d
| d          |	                    dg           }
|
                    |	|d         f           U# t          $ rC}| j        j                            d|                     |           d|            Y d }~d }~ww xY w|s&t'          d|                     |           d          dd                    d |D                        d|d}|S )Nr   r   Tr   rh   r   r   r   ru  u=   ' не поддерживается с оператором 'r   r   u   Операнд 'u$   ' удален из условия. u   Для операндов 'u   ' не найдены варианты для замены, возможно объекты еще не импортированыr   rq  c                     g | ]}|S r   r   )r   r   s     r_   r   z$JQL.visitJqlList.<locals>.<listcomp>  s    #J#J#JG#J#J#Jr`   r   r   )r   rS  r   
jqlOperandr   r   r	   r   JqlValueContext
setdefaultr   r   r   r   rw   rZ   r   r   rq   rU  r   )r]   rp   r   ubql2_operandsbql_operandsjql_operandr   operand_valuerh   r   r   r}   r   s                r_   visitJqlListzJQL.visitJqlListf  s   ::cm44Q7788>>++ 	 	K%..q11 $

7 3 3$ %%mG&<===gy'@AA L,0L)))BCC 
L)44XrBBFMM-"67777)EFF L$(JJw/F/F/H/H$I$IM8++0L0L(4 G}  G  G  |D  G  G  G   !- 7 7R H HI$$m]55I%JKKK   &..mt~~k'B'Bmmhkmm       
  	ZdnnS.A.A Z Z Z   O#J#J>#J#J#JKKNNN
 

 s   
,F7D"F
G(%8G##G(c                 *    |                                 S rW   r  r  s     r_   visitJqlArgumentzJQL.visitJqlArgument  r
  r`   c                    g }|                                 D ])}|                     |          }|r |j        |           *|s|                                 S dd                    d |D                        ddd |D             gd}|S )Nz	ORDER BY rq  c                     g | ]
}|d          S r   r   r   ri   s     r_   r   z'JQL.visitJqlOrderBy.<locals>.<listcomp>  s    +O+O+OuE'N+O+O+Or`   r   r   c                     g | ]
}|d          S r   r   r  s     r_   r   z'JQL.visitJqlOrderBy.<locals>.<listcomp>  s    %G%G%GueEl%G%G%Gr`   r   )jqlSearchSortr   r   r   r   )r]   rp   r   r   r   s        r_   visitJqlOrderByzJQL.visitJqlOrderBy  s    ""$$ 	& 	&AZZ]]F &f%%% 	(%%''' S+O+O+O+O+O!P!PRR%G%G%G%G%GH
 

 r`   c                    	 |                      |                                          }|d         }|d         }|j        r| d|j        j         n||j        r|j        j        dk    r
d|j         n|j        d}|S # t
          $ rV}| j        j                            d| 	                    |           d|            | 
                                cY d }~S d }~ww xY w)	Nr   r   r   DESCrK  r   u%   Условие сортировки 'r   )r   r   orderrH   r   rw   rZ   r   r   rq   r   )r]   rp   ri   r   r   r   r}   s          r_   visitJqlSearchSortzJQL.visitJqlSearchSort  s   	(JJs||~~..EvJk*I >AYVJ99999J58Yu39>U[C[C[19/111ajau F
 M 	( 	( 	(O"**xs8K8Kxxsvxx   %%''''''''		(s   A;A> >
CACCC)i__name__
__module____qualname__r=   r.  rM  approvers_forresponsibler   comments
componentscmf_created_at
cmf_authorrH   deadlinerN  r(   r/   r7   r9   r:   	cmf_ownerrB   status_closed_atlistsrF   r   rG  cmf_modified_atrQ   rf   rY   rj   rq   r~   r	   JqlQueryContextr   JqlOrClauseContextr   JqlAndClauseContextr   JqlNotClauseContextr   JqlSubClauseContextr   rT  r   JqlEqualsClauseContextr   JqlLikeClauseContextr   JqlComparisonClauseContextr   JqlInClauseContextr   JqlIsClauseContextr   JqlWasClauseContextr   JqlWasInClauseContextr  JqlChangedClauseContextr  JqlEqualsOperatorContextr	  JqlLikeOperatorContextr  JqlComparisonOperatorContextr  JqlInOperatorContextr  JqlIsOperatorContextr  JqlWasOperatorContextr  JqlWasInOperatorContextr  JqlChangedOperatorContextr  JqlNonNumberFieldContextr5  JqlCustomFieldContextr@  JqlStringContextrB  r   rE  r  rm  r   ry  JqlFunctionNameContextr{  JqlArgumentListContextr  r   r  JqlArgumentContextr  JqlOrderByContextr  JqlSearchSortContextr  __classcell__)r^   s   @r_   r   r      sY       O%9"F+	
 
O 	5
 
O 	3
 
O* 	!3
 
+O6 	
7O< 	
=OD 	0
 
EOP 	2"F+	
 
QO^ 	6%	
 
_Ol 	2
 
mOx 	!,
 
yOD 	0!{	
 
EOR 	!,
 
SO\ 	  
 
]On 	 4"F+	
 
oOz 	
{OB 	,"F+  

 

CO OX 	
YO^ 	
_Of 	, '*	
 
gOr 	
sOx 	
yO~ 	
OD 	./
 
EON 	!3"F+	
 
OOZ 	!3"F+	
 
[Of 	
gOn 	0
 
oOz 	/#nGGG
 
{OL 	
MOT 	&'
 
UO^ 	1
 
_Oh 	!
iOn 	%'
oO O Ot 	
uO| 	 2"F+	
 
}OJ 	8()	
 
KOX 	-"F+	
 
YOf 	."F+	
 
gOt 	,
 
uO@ 	,
 
AOL 	
MOT 	2#}	
 
UOb 	7%	
 
cOn 	
oOt 	
uO| 	 2
 
}OF 	
GOL 	
MOR 	
SOX 	
YO OMb% % % % %
 
 
? ? ?
   !:     ,I$@ , , , ,*,Y%B , , , ,*Y%B    "
Y%B 
 
 
 
p()*L p( p( p( p(d	(H    i&D    $I,P    I$@    ,I$@    iY%B i i i iiy'F i i i ii)J i i i i)*L    		(H 	 	 	 	i.T    /i&D / / / /i&D    1i&E 1 1 1 17	(I 7 7 7 7)*M    %)*L % % % %Ny'F    ()"<    !:    g!: g g g gRI$@    0	(H    	(H    ,	 8 , , , ,\I$@    9#>    $(i&D ( ( ( ( ( ( ( (r`   r   c                   ,    e Zd Zd Zd ZddedefdZdS )JQLNormalizerc                     || _         d S rW   )_api_import)r]   r\   s     r_   rY   zJQLNormalizer.__init__  s    %r`   c                    t          j        |          }t          |          }t          j        |          }t	          |          }|                                }t          | j        |          }|                    |          }	|	S )Nr\   r[   )	antlr4InputStreamr   CommonTokenStreamr	   jqlQueryr   r  r   )
r]   jqlr[   input_streamlexerstreamparsertreevisitorr   s
             r_   get_modifiedzJQLNormalizer.get_modified  s    )#..&&)%006""  '#
 
 
 t$$r`   Nr   r[   c                 6   |pd}t          | j        |          }g }|D ]x}|                    d          r|                    dd          }|                    d          \  }}| d| }| d|                                 }	t          j                            dd	d
|	gdd
|gg          }
|
r|	                    |	           | j        j
        j                            d|	 d| d           |                    |                                          }|rT|d         r"|	                    |d         j                   &| j        j
        j                            d| d           P| j        j
        j                            d| d           z|S )Nr   r  customfield_customfieldcfr|   r7  r   r   r   r   rH  r9  r:  r;  r   r   r"  r   r&  r   )r   r  
startswithr   splitr)  r=   r+  r_  r   rZ   r   r   rj   r   )r]   r   r[   r  supported_fieldsri   r|   r>  r?  r   r3  mapped_fields               r_   convert_fieldszJQLNormalizer.convert_fields  s   !(S'#
 
 

  !	 !	E//  mT::#kk#..8"-;;;; %==(9(9(;(;==
%277*5!7L9  8       $++J7777$/6>>tjttU]ttt     #~~ekkmm<< 
#K0 (//[0I0TUUUU(3:BBSSSS    $/6>>DEDDD     r`   rW   )r  r  r  rY   r  listr,  r  r   r`   r_   r  r    sY        & & &  +  + T +  +  +  +  +  +  + r`   r  )r[  r  cmfr   cmf.includemodules.jira.base_importr   r   r   r   r	   r
   r   r  r   r`   r_   <module>r     s    				            3 3 3 3 3 3                         " " " " " "i( i( i( i( i(* i( i( i(X>  >  >  >  >  >  >  >  >  > r`   