
    bh                     T    d dl Z d dlmZ d dlT d dlmZ  G d dej                  ZdS )    N)Decimal)*)	cmf_transc                   4    e Zd Zej        j        dgz   Zed& fd	            Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!g fdZ"d Z#d  Z$d! Z%d" Z&d# Z'e(dddd$d%            Z) xZ*S )'CmfTranstrans_ui_form_getNc                     |dv r'|sg }d }|r|                     dd           }|r|dd|gg} t                      j        |f|||d|S )N)status_from	status_toworkflow_idworkflow=)filtermodels_listobject_fields)getsuperfield_options_list)clsrelation_field_namer   r   r   kwargsr   	__class__s          ./common/models/cmf_trans.pyr   zCmfTrans.field_options_list   s    ">>> K E+//tDD B :sK"@A)uww)*=  NfZe  vC  N  N  GM  N  N  	N    c                     t                               |j                  }t                              |          }ddd|j        g|g}t          |                    |                    S )NANDidr   r   )cmfutilget_model_by_name
class_namejsonloadsr   boolr   )selfbql_strobjmodel
filter_bqls        r   _trans_ok_bqlzCmfTrans._trans_ok_bql   s[     ))#.99ZZ((
dC0*=
EIIZI00111r   c                     d}t           j                            ddd|j        gddt          j        j        gggd          }|rd}|j        d	v s|j        s|S | S )
NFr   r   r   wz_value_objINT)r   cache_inmemory)z1 =z5 >=z6 <=z7 INz9 LIKEz	11 REGEXP)modelsCmfTransFilterr   r   gcurrent_personwz_conditionr,   
isinstance	CmfPersonCmfPersonGrouprg_member_ofCmfRoleperson
CmfOrgUnitset
tree_nodesloadpopadd	cmf_alertr!   )
r%   r   r'   res
search_obj	value_objnodeschecked_nodesnode_nodes
             r   _trans_filter_ok_current_userz&CmfTrans._trans_filter_ok_current_user$   s    *..3	*#TA,<,?+@A #'	 / 
 

  	C"XXX`f`sXJ7Nr   c           	         t          ||j        j                                                  j        }|d}|j        j                            d          d         }|j        j        }|d}|dk    r|st          |           S ||k    S |dk    r|st          |          S ||k    S |dk    r||k    S |dk    r||k     S |dk    r||k    S |d	k    r||k    S |d
k    r||v S |dk    r||vS |dk    r||v S |dk    r||vS |dk    rn	 t          j	        |          }n6# t          j
        $ r$}t          d| d| d| d           Y d }~nd }~ww xY wt          |                    |                    S |dk    ro	 t          j	        |          }n6# t          j
        $ r$}t          d| d| d| d           Y d }~nd }~ww xY wt          |                    |                     S |dk    rt          |           S |dk    rt          |          S |dk    r ||j        j        k    o||j        j        k    S |dk    r!||j        j        k    o||j        j        k     S t          d| d           d S )N     r   !=><>=<=r-   NOT INLIKENOT LIKEREGEXP   Ошибка в условии uC   : некорректное регулярное выражение : Tabort
NOT REGEXPIS_NULLNOT_NULLBETWEENNOT_BETWEENz@DEV: FATAL _trans_field_compare_text unknown clean_wz_condition=)getattrwz_field_namevaluer=   r3   	partitionwz_value_textr$   recompileerrorr@   searchwz_start_valuewz_end_value)r%   
trans_metar'   obj_valclean_wz_conditionvalidator_valregexpes           r   _trans_field_compare_textz"CmfTrans._trans_field_compare_text\   s   #z7=>>CCEEK?G'4:DDSII!L"06 M$$  )==((m++4''  %G}}$m++3&&]**3&&]**4''m++4''m++4'' m++8++-//6)) !G++:-- %//8++mM228 m m m  `J  `  `  LY  `  `  ]^  `  `  hl  m  m  m  m  m  m  m  m  mmg..///<//mM228 m m m  `J  `  `  LY  `  `  ]^  `  `  hl  m  m  m  m  m  m  m  m  mmFMM'2233339,,G}}$$:--== 9,,j7==j'ZMdMjBjj=00:#<#BBowR\RiRoGoppmYkmmuyzzzzzzs0   D E)EE9F GF<<Gc                    t          ||j        j                  j        }|j        j                            d          d         }d }|dvrP|dS 	 t          |j        j                  }n1# t          $ r$ t          d| d|j        j         d           Y nw xY w|d	k    r||k    S |d
k    r||k    S |dk    r||k    S |dk    r||k     S |dk    r||k    S |dk    r||k    S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    r|d u S |dk    r|d uS |dk    r||k    o||k    S |dk    r||k    o||k     S t          d| d           d S )NrK   rL   )r[   r\   F!   Ошибка в Действии 4   : значние должно быть числом TrX   r   rM   rN   rO   rP   rQ   r-   rV   rW   uE    не поддерживается для цифровых полейrR   rS   rT   rU   rZ   r[   r\   r]   r^   zCDEV: FATAL _trans_field_compare_numeric unknown clean_wz_condition=)	r_   r`   ra   r3   rb   r   rc   
ValueErrorr@   )r%   rj   r'   rk   rl   vals         r   _trans_field_compare_numericz%CmfTrans._trans_field_compare_numeric   s<   #z7=>>D'4:DDSII!L%<<<u j6<==       Y
  Y  Y  yC  yQ  yW  Y  Y            
 $$c>!4''c>!3&&S= 3&&S= 4''c>!4''c>!4''  `
  `  `FX  `  `  `  hl  m  m  m  m  m  m8++  `
  `  `FX  `  `  `  hl  m  m  m  m  m  m6))  `
  `  `FX  `  `  `  hl  m  m  m  m  m  m:--  `
  `  `FX  `  `  `  hl  m  m  m  m  m  m8++  `
  `  `FX  `  `  `  hl  m  m  m  m  m  m<//  `
  `  `FX  `  `  `  hl  m  m  m  m  m  m9,,d?":--$&&9,,c>4gn4=00397c>::p\nppx|}}}}}}s   A* *+BBc                    t          ||j        j                  j        }t          |          }|j        j        sd}ng|j        j                                        dv rd}nD|j        j                                        dv rd}n!t          d| d|j        j         d           |j        j                            d          d	         }|d
k    r||k    S |dk    r||k    S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    r|d u S |dk    r|d uS |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S t          d| d           d S )NF0falseu   нет1trueu   даTrr   Q   : значние должно быть Boolean (0, 1, true, false, да, нет) rX   rK   rL   r   rM   rN   rV   rW   u<    не поддерживается для Boolean полейrO   rP   rQ   r-   rR   rS   rT   rU   rZ   r[   r\   r]   r^   zCDEV: FATAL _trans_field_compare_boolean unknown clean_wz_condition=)	r_   r`   ra   r$   rc   lowerr@   r3   rb   )r%   rj   r'   rk   obj_val_boolru   rl   s          r   _trans_field_compare_booleanz%CmfTrans._trans_field_compare_boolean   s   #z7=>>DG}}'- 		CC%+11337OOOCC%+11337LLLCC rJ  r  r  R\  Rj  Rp  r  r    (4:DDSII!L$$3&&4''3&&3&&  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d3&&  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d4''  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d4''  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d4''  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d8++  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d6))  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d:--  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d8++  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d<//  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d9,,d?":--$&9,,  W
  W  WFX  W  W  W  _c  d  d  d  d  d  d=00  W
  W  WFX  W  W  W  _c  d  d  d  d  d  dp\nppx|}}}}}}r   c                    t          ||j        j                                                  j        }|j                                        }t          d |D                       }t          d |D                       }|j        j                            d          d         }|dk    r||k    S |dk    r||k    S |dk    r||k    S |dk    r||k     S |d	k    r||k    S |d
k    r||k    S |dk    r||v S |dk    r||vS |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S |dk    rt          |           S |dk    rt          |          S |dk    rt          d| d| dd           d S |dk    rt          d| d| dd           d S t          d| d           d S )Nc                 &    g | ]}|j         j        S  r   ra   .0os     r   
<listcomp>z5CmfTrans._trans_field_compare_m2m.<locals>.<listcomp>  s    :::Qadj:::r   c                 &    g | ]}|j         j        S r   r   r   s     r   r   z5CmfTrans._trans_field_compare_m2m.<locals>.<listcomp>      <<<aqtz<<<r   rK   rL   r   rM   rN   rO   rP   rQ   r-   rR   rS   rV   rW   u8    не поддерживается для m2m полейTrX   rT   rU   rZ   r[   r\   r]   r^   z?DEV: FATAL _trans_field_compare_m2m unknown clean_wz_condition=)
r_   r`   ra   r=   r,   r;   r3   rb   r@   r$   )r%   rj   r'   rk   val_listobj_val_id_setval_list_id_setrl   s           r   _trans_field_compare_m2mz!CmfTrans._trans_field_compare_m2m  s   #z7=>>CCEEK*//11::':::;;<<8<<<=='4:DDSII!L$$!_444''!_443&&!O333&&!O334''!_444''!_444''!_448++%886))  S
  S  SFX  S  S  S  [_  `  `  `  `  `  `:--  S
  S  SFX  S  S  S  [_  `  `  `  `  `  `8++  S
  S  SFX  S  S  S  [_  `  `  `  `  `  `<//  S
  S  SFX  S  S  S  [_  `  `  `  `  `  `9,,G}}$$:--== 9,,  S
  S  SFX  S  S  S  [_  `  `  `  `  `  `=00  S
  S  SFX  S  S  S  [_  `  `  `  `  `  `lXjlltxyyyyyyr   c                    t          |j        j                                                  j        }j                                        t          d D                       }fd}j        j                            d          d         }|dk    r |             |d         k    S |dk    r |             |d         k    S |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S |dk    r|j	        j        |v S |dk    r|j	        j        |vS |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S |dk    rt          |           S |dk    rt          |          S |dk    rt          d	 d
| dd           d S |dk    rt          d	 d
| dd           d S t          d d| d           d S )Nc                 &    g | ]}|j         j        S r   r   r   s     r   r   z4CmfTrans._trans_field_compare_fk.<locals>.<listcomp>3  r   r   c                  `    t                    dk    rt          d  d d           d S d S )N   rV   :    должен быть только один объект TrX   )lenr@   )rj   r   s   r   __check_one_itemz:CmfTrans._trans_field_compare_fk.<locals>.__check_one_item5  sg    8}}q   Gj  G  G  }E  G  G            ! r   rK   rL   r   r   rM   rN   rV   rW   u7    не поддерживается для fk полейTrX   rO   rP   rQ   r-   rR   rS   rT   rU   rZ   r[   r\   r]   r^   z#DEV: FATAL _trans_field_compare_fk z unknown clean_wz_condition=)r_   r`   ra   r=   r,   r;   r3   rb   r@   r   r$   )r%   rj   r'   rk   r   _CmfTrans__check_one_itemrl   r   s    `     @r   _trans_field_compare_fkz CmfTrans._trans_field_compare_fk0  sf   #z7=>>CCEEK*//11<<8<<<==	  	  	  	  	  	  (4:DDSII!L$$hqk))4''hqk))3&&  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _3&&  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _4''  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _4''  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _4'':#668++z'?::6))  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _:--  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _8++  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _<//  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _9,,G}}$$:--== 9,,  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _=00  R
  R  RFX  R  R  R  Z^  _  _  _  _  _  _xJxxdvxx  AE  F  F  F  F  F  Fr   c                 D   |j         |j        k    rdS |j        sdS t          ||j        j                  }t          |t          j        j	                  r| 
                    ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r%t'          d| dt)          |           d           nyt          |t          j        j                  r%t'          d| dt)          |           d           n5t          |t          j        j                  r|                     ||          S t'          d| dt)          |           d           d S )NFz0DEV: FATAL _trans_field_compare NotImplemented: rK   TrX   uH   DEV: FATAL _trans_field_compare Неизвестный тип поля: )r!   cmf_model_namer3   r_   r`   ra   r4   cmffields
CmfM2MBaser   
CmfRelBaser   CmfStrrp   CmfIntrv   
CmfNumericCmfDateTimer@   typeCmfDateCmfBoolr   )r%   rj   r'   fields       r   _trans_field_comparezCmfTrans._trans_field_comparec  s   >Z6665& 	5Z5;<<eSZ233 	F00SAAAsz455 	F//
C@@@sz011 	F11*cBBBsz011 
	F44ZEEEsz455 	F44ZEEEsz566 	F^^^QUV[Q\Q\^^fjkkkkksz122 	F^^^QUV[Q\Q\^^fjkkkkksz122 	F44ZEEE 	r]brreijoepeprrz~r   c                    | j         d         }|j                                        sdS t          |t          j                  r|j        j        }nd}t          j        	                    |||dg          }|o
|j
        dk    S )Nr   T
resolution)r'   obj_version
obj_statusr   approved)r
   need_approver=   r4   r/   CmfDocumentcur_workflow_versiondoc_version
CmfApprover   r   )r%   r   r'   r
   r   aggreg_fulls         r   _trans_filter_approvedzCmfTrans._trans_filter_approved  s    &q)',,.. 	4cF.// 	2>KKK'++"L> , 
 

 C{5CCr   c                     | j         d         j                                        sdS t          j                            |ddg          }|o
|j        dk    S )Nr   Tr   )r'   is_cur_approver   rejected)r
   r   r=   r/   r   r   r   )r%   r   r'   r   s       r   _trans_filter_rejectedzCmfTrans._trans_filter_rejected  sZ    "/4466 	4'++DR^Q_+``C{5CCr   c                 .    |                      ||          S Nr   r%   r   r'   s      r   _trans_filter_ok_fieldzCmfTrans._trans_filter_ok_field  s    ((555r   c                     dS NFr   r   s      r   _trans_filter_ok_always_falsez&CmfTrans._trans_filter_ok_always_false  s    ur   c                 B    |                      |j        j        |          S r   )r*   bqlra   r   s      r   _trans_filter_ok_bqlzCmfTrans._trans_filter_ok_bql  s     !!&*"2C888r   c                     t           j        rj|                    |          }|                                }|r=t          j        s|t          _        n$t          t          j        |          t          _        |S dS r   )configBZPYTHON_ENABLEDeval_bzpythonget_bzpython_jscache_timelifer1   jscache_timelifemin)r%   r   r'   rA   r   s        r   _trans_filter_ok_evalzCmfTrans._trans_filter_ok_eval  sr    " 		&&s++C%CCEE S) S)9A&&),Q-?AQ)R)RA&Jur   c                 (    t          dd           d S )Nz,DEV: Not supported _trans_filter_ok_union_orTrX   r@   r   s      r   _trans_filter_ok_union_orz"CmfTrans._trans_filter_ok_union_or  s    @MMMMMMr   c                 (    t          dd           d S )Nz-DEV: Not supported _trans_filter_ok_union_andTrX   r   r   s      r   _trans_filter_ok_union_andz#CmfTrans._trans_filter_ok_union_and  s    ANNNNNNr   c                 .   t          t          dd           }dt          _        d}t          j                            | dgddgd          D ]}|j        s|j        j                            d          d         }|d	k    r| 	                    ||          }nh|d
k    r| 
                    ||          }nJ|dk    r|                     ||          }n,|dk    r|                     ||          }n|dk    r|                     ||          }n|dk    r^|j        j        r;|j        j        }|j        j        |_        |                     ||          }||_        n|                     ||          }n|dk    r|                     ||          }np|dk    r|                     ||          }nS|dk    r|                     ||          }n6|dk    r|                     ||          }nt-          d|j         d           |s|c S |t          _        |S )Ndisable_raise_lazyloadTordernor   r,   
transitionorderbyr   r.   rK   rL   current_userr   always_falseprev_statusr   evalunion_or	union_andr   r   z5DEV: FATAL trans_filter_ok unknown filter.logic_type=rX   )r_   r1   r   r/   r0   list
logic_typera   rb   rH   r   r   _trans_prev_statusr   status
is_changedoldr   r   r   r   r   r@   )r%   r'   prev_disable_raise_lazyloadrA   r   clean_logic_type
new_statuss          r   trans_filter_okzCmfTrans.trans_filter_ok  se   &-a1I4&P&P##' +00D9+_bdr^s@D 1 F F '	 '	F$ %06@@EEaH>1188EE!W,,11&#>>!^3388EE!]22--fc::!U**//<<!V++ :( B!$!1J!$CJ44VSAAC!+CJJ44VSAACC!Z//44VSAA![0055fcBB!Z//11&#>>!Z//11&#>>eRXRceemqrrrr 


#> 
r   c                 .    |                      ||          S r   r   r%   	validatorr'   s      r   _trans_validator_fieldzCmfTrans._trans_validator_field  s    ((C888r   c                    |j                                         }|sdS |j                                        j        }|si }|                    dd          }|                    dd          }|                    dd          }d}|j        j        rd}d}	|r|j        j        |vrd}	|r|	 S |	S |D ]}
ddd|
j        j        z   d	z   g}|sddd
|
j        j        z   d	z   g}|r2|s0t          j
                            dd|g|g          }|dk    rd}	 n+bt          j
                            dd|g|g          sd}	 n|r|	 S |	S )NTinclude_current_statusFreverse_rulemost_recent_status_only
audit_dataz
SIMILAR TOz%{"status":{[^}]*"z"%z%{"status":{[^}]*old":"parentr   r   r   )r,   r=   wz_prev_status_optionsra   r   r   r   r   r   r/   CmfAuditcount)r%   rj   r'   status_listr   r   r   r   
audit_donerA   r   status_filterr   s                r   r   zCmfTrans._trans_prev_status  s    -2244 	4!+!B!G!G!I!I!O% 	(%'"!7!;!;<TV[!\!\-11.%HH"8"<"<=VX]"^"^ 
:  	J" 	z~[00 wJ! 	 	F *<9Mfio9]^b9bcM) q!-|=VY_YbYh=hko=o p "8 --!3,%6-   A::CE 
 **sC(!3*     CE  	7N
r   c                 (    t          dd           dS )Nz4DEV: Not supported _trans_validator_trans_form_fieldTrX   r   r   s      r   !_trans_validator_trans_form_fieldz*CmfTrans._trans_validator_trans_form_field#  s    HPTUUUUtr   c                    |                      |j        j        |          }|sd|j        rt	          |j        d           |j                                         t	          d|j        j         d|j         d|j         d           |S )NTrX   u   Переход "u/   " запрещен UBQL-Валидатором     у объекта )	r*   r   ra   error_messager@   r   r=   namecode)r%   r   r'   rA   s       r   _trans_validator_bqlzCmfTrans._trans_validator_bql'  s      !4c:: 	n& ?)1>>>> %%'''  a)=)B  a  as|  tB  a  a  WZ  W_  a  a  im  n  n  n  n
r   c                 H    t           j        r|                    |          S dS r   r   r   r   r   s      r   _trans_validator_evalzCmfTrans._trans_validator_eval0  s&    " 	0**3///ur   c           
      v   t          t          dd           }dt          _        d}| j        r| j        n| }t          j                            |dgdgd          D ]}|j        s
|j        j        	                    d          d         }|dk    r| 
                    ||          }n|d	k    r|                     ||          }np|d
k    r|                     ||          }nS|dk    r|                     ||          }n6|dk    r|                     ||          }nt          d|j         d           |s n|t          _        |rd S |j        rt          |j        d           |j                                         t          d|j         d|j        j         d|j        j         d|j         d           d S )Nr   Tr   r   r   rK   rL   r   r   trans_form_fieldr   r   z;DEV: FATAL trans_validator_ok unknown validator.logic_type=rX   u7   Ошибка выполнения Валидатора u    для перехода r   rW   )r_   r1   r   do_validation_byr/   CmfTransValidr   r   ra   rb   r   r   r   r   r   r@   r   r   r=   r   r   )r%   r'   r   validr   r   r   s          r   trans_validator_okzCmfTrans.trans_validator_ok5  se   &-a1I4&P&P##' .2.CMT**
-22jS\R]gjfk  }A2  B  B 	 	I' (39CCCHHK7**33IsCC!]22//	3??!%777>>y#NN!U**11)SAA!V++229cBBnXaXlnnvz{{{{ #>  	F" 	;i-T::::!!###  EIN  E  Eu~  vJ  vO  E  E  dg  dr  dw  E  E  {~  {C  E  E  MQ  	R  	R  	R  	R  	R  	Rr   c                    d}|j         j                            d          d         }|dk    rt          ||j        j        g            dS |dk    r6|j                                        }t          ||j        j        |           dS |dv rgt          ||j        j                                                  }|j                                        }|D ]}||vr|                    |           d}|S |dv rgt          ||j        j                                                  }|j                                        }|D ]}||v r|	                    |           d}|S t          d	|j         d
| d           d S )NFrK   rL   clearT:=)addItemr?   )delItemdeluX   DEV: FATAL _trans_action_field_m2m неподдерживаемое действие в  wz_operate=rX   )
wz_operatera   rb   setattrr`   r,   r=   r_   appendremover@   r   )r%   actionr'   has_changesclean_wz_operateru   r   r   s           r   _trans_action_field_m2mz CmfTrans._trans_action_field_m2mW  s   !,2<<SAA!Dw&&C-3R8884%%%**,,CC-3S9994!333C!5!;<<AACCE*//11H ' 'e##LL%%%"&K!333C!5!;<<AACCE*//11H ' '%<<LL%%%"&K  ]qwq|  ]  ]  K[  ]  ]  ei  j  j  j  j  j  jr   c                 B   |j         j                            d          d         }|dk    rt          ||j        j        d            dS |dk    r|j                                        }t          |          dk    rt          d| d| d	           |st          d| d
| d	           t          ||j        j        |d                    dS |dk    rt          ||j        j                                                  }|j
        rdS |j                                        }t          |          dk    rt          d| d| d	           |st          d| d
| d	           t          ||j        j        |d                    dS |dk    rut          ||j        j                                                  }|j                                        }|D ]+}||j        k    rt          ||j        j        d             dS ,dS t          d|j         d| d	           d S )NrK   rL   r  Tr	  r   rr   r   rX   u8    не указан обьект для значения r   r?   Fr  uW   DEV: FATAL _trans_action_field_fk неподдерживаемое действие в r  )r  ra   rb   r  r`   r,   r=   r   r@   r_   is_not_nullr   )r%   r  r'   r  ru   r   r   s          r   _trans_action_field_fkzCmfTrans._trans_action_field_fkt  s   !,2<<SAA!Dw&&C-3T:::4%%%**,,C3xx!||z}          }}}x{}}        C-3SV<<<4&&C!5!;<<AACCE  u%**,,C3xx!||z}          }}}x{}}        C-3SV<<<4&&C!5!;<<AACCE*//11H    %+%%C!5!;TBBB44 & 5  \pvp{  \  \  JZ  \  \  dh  i  i  i  i  i  ir   c                    |j         j                            d          d         }|dk    rt          ||j        j        d            dS |dk    r"t          ||j        j        |j                   dS |dk    rTt          ||j        j                  }|j        j        }|sdS |j        dz   |z   }t          ||j        j        |           dS |dk    rmt          ||j        j                  }|j        j        }|sdS ||j        v r8|j                            |d	          }t          ||j        j        |           dS dS t          d
|j	         d| d           d S )NrK   rL   r  Tr	  r?   Fr  rJ   uY   DEV: FATAL _trans_action_field_text неподдерживаемое действие в r  rX   )
r  ra   rb   r  r`   rc   r_   replacer@   r   )r%   r  r'   r  r   ru   new_vals          r   _trans_action_field_textz!CmfTrans._trans_action_field_text  s   !,2<<SAA!Dw&&C-3T:::4%%C-3V5IJJJ4&&C!5!;<<E&,C ukC'#-GC-3W===4&&C!5!;<<E&,C uek!!+--c266V17AAAt5  ^rxr}  ^  ^  L\  ^  ^  fj  k  k  k  k  k  kr   c                 <  	 |j         j                            d          d         }t          ||j        j                  j        }|sd}|dk    rt          ||j        j        d            dS 	 t          |j        j                  }n1# t          $ r$ t          d| d|j        j         d           Y nw xY w|d	k    rt          ||j        j        |           dS |d
v r||z   	|rj	|vrf	}t          |          }t          t          	fd|                    }|r	|d         	n|d         	t          d|j        j         d| d	            t          ||j        j        	           dS |dv r||z
  	|rj	|vrf	}t          |          }t          t          	fd|                    }|r	|d         	n|d         	t          d|j        j         d| d	            t          ||j        j        	           dS t          d|j         d| d           d S )NrK   rL   r   r  Trr   rs   rX   r	  )incr?   c                     | k    S r   r   xr  s    r   <lambda>z6CmfTrans._trans_action_field_numeric.<locals>.<lambda>      AL r   u5   Действие пыталось выставить uC    в недопустимое значение для выбора: u<   . Выставили ближайшее доступное: )decr  c                     | k    S r   r   r   s    r   r"  z6CmfTrans._trans_action_field_numeric.<locals>.<lambda>  r#  r   u\   DEV: FATAL _trans_action_field_numeric неподдерживаемое действие в r  )r  ra   rb   r_   r`   r  r   rc   rt   r@   sortedr   r   r   )
r%   r  r'   choice_limitr  
prev_valueru   bad_valnew_val_tmpr  s
            @r   _trans_action_field_numericz$CmfTrans._trans_action_field_numeric  sY   !,2<<SAA!DS&"6"<==C
 	Jw&&C-3T:::4	&.455CC 	 	 	 MF  M  Mpv  qE  qK  M  M     	
 t##C-3S9994// 3&G A| ; ;!%l33"6*@*@*@*@,#O#OPP .)"oGG +1oG  @RXRfRl  @  @  ry  @  @  w~  @  @  A  A  AC-3W===4// 3&G A| ; ;!%l33"6*@*@*@*@,#O#OPP /)!nGG +2.G  @RXRfRl  @  @  ry  @  @  w~  @  @  A  A  AC-3W===4  au{  vA  a  a  O_  a  a  im  n  n  n  n  n  ns   .B +B65B6c                     |j         j                            d          d         }|j        j        sd}ng|j        j                                        dv rd}nD|j        j                                        dv rd}n!t          d| d|j        j         d	           |d
k    rt          ||j        j        d            dS |dk    rt          ||j        j        |           dS t          d|j         d| d	           d S )NrK   rL   Frx   r{   Trr   r~   rX   r  r	  u\   DEV: FATAL _trans_action_field_boolean неподдерживаемое действие в r  )	r  ra   rb   rc   r   r@   r  r`   r   )r%   r  r'   r  ru   s        r   _trans_action_field_booleanz$CmfTrans._trans_action_field_boolean  s~   !,2<<SAA!D#) 		CC!'--//3KKKCC!'--//3HHHCC jF  j  j  NT  Nb  Nh  j  j    w&&C-3T:::4%%C-3S9994  au{  vA  a  a  O_  a  a  im  n  n  n  n  n  nr   c                    |j         |j        k    rdS |j        sdS t          ||j        j                  }t          |t          j        j	                  r| 
                    ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r/|                     |||j                                                  S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r|                     ||          S t          |t          j        j                  r%t-          d| dt/          |           d           nyt          |t          j        j                  r%t-          d| dt/          |           d           n5t          |t          j        j                  r|                     ||          S t-          d| dt/          |           d           d S )NF)r(  zDEV: FATAL NotImplemented: rK   TrX   u3   DEV: FATAL Неизвестный тип поля: )r!   r   r  r_   r`   ra   r4   r   r   r   r  r   r  r   r  CmfChoiceIntr,  choiceskeysr   r   r   r@   r   r   r   r.  )r%   r  r'   r   s       r   _trans_action_fieldzCmfTrans._trans_action_field'  sR   >V2225  	5V1788eSZ233 	A//<<<sz455 	A..vs;;;sz011 	A00===sz677 	A33FCemN`N`NbNb3cccsz011 
	A33FC@@@sz455 	A33FC@@@sz566 	AIEIIDKKIIQUVVVVVsz122 	AIEIIDKKIIQUVVVVVsz122 	A33FC@@@]]]PTUZP[P[]]eijjjjjjr   c                 L    t           j        r|                    |           dS dS )NTFr   )r%   r  r'   s      r   _trans_action_evalzCmfTrans._trans_action_evalF  s-    
 " 	  %%%4ur   c                 ,    d}t          dd           |S )NFz(DEV: Not supported _trans_action_webhookTrX   r   )r%   r  r'   r  s       r   _trans_action_webhookzCmfTrans._trans_action_webhookQ  s!    <DIIIIr   c                    t          t          dd           }dt          _        d}t          j                            | dgdgd          D ]}|j        dk    r||                     ||          z  }'|j        dk    r||                     ||          z  }L|j        d	k    r|| 	                    ||          z  }q|j        syt          d
|j         d           |t          _        |S )Nr   TFr   r   r   r   r   webhookz7DEV: FATAL trans_run_actions unknown action.logic_type=rX   )r_   r1   r   r/   CmfTransActionr   r   r3  r5  r7  r@   )r%   r'   r   r  r  s        r   trans_run_actionszCmfTrans.trans_run_actionsV  s   &-a1I4&P&P##' +00D9+_b^ctx0yy 	u 	uF G++t77DDD"f,,t66vsCCC"i//t99&#FFF& ugTZTeggosttttt#> r   )obj_id
obj_fieldsuser_form_inputc                   
 t          j        j        |ddi|}|j        r| rt           j                            t          |j        j                            D ]*}d|v r$|d         D ]}||vr|                    |           +|	                    g d           t                              d| |          }t          t                     |j                                     ||j                  |_        |r|                                D ]\  
}	
fd|D             t#          |	t$                    r(d|	v r$t                              d|	d                   }	n/|	r-t#          |	t&                    rd|	d	         v rfd
|	D             }	t)          |
|	           t+          t           d          r't           j                            |||j                   |j        |j        _        |S )Nr.   Tr   )request_type_idr   activityzproject.ui_form_schemezproject.cust_field_conf_schemezproject.logic_prefixcmf_deletedis_dummysimpler   r   )ui_formc                 t    g | ]4}|                      d           |t           d           d         5S ).N)
startswithr   )r   fks     r   r   z.CmfTrans.trans_ui_form_get.<locals>.<listcomp>  sI    &e&e&eAq||_`\c\c\cOdOd&eqWWW'7&e&e&er   r   r   c                 V    g | ]%}t                               d |d                   &S )Tr   rD  )r   get_obj_by_id)r   irelation_fieldss     r   r   z.CmfTrans.trans_ui_form_get.<locals>.<listcomp>  s4    ooohiW22$1T7Sb2ccooor   CmfAutomationUiForm)r   cmf_ui_form)r/   r   r   rQ  	CmfUiFormget_ui_group_fieldsstrr   r  extendr   rM  varsr!   _build_ui_formui_form_jsonitemsr4   dictr   r  hasattrrP  ui_get_hook)r<  r=  r>  argsr   	trans_obj	gr_fields
field_namer'   vrK  rO  s             @@r   r   zCmfTrans.trans_ui_form_getj  s:    O'MdMfMM	  	BV 	B $-AA#iF[F^B_B_`` : :	y((&/&9 : :
%Z77&--j999 C C C D D D ''tz'RRC#F||CN;JJ3XaXmJnnC 	'*0022 ' 'CAa 'f&e&e&e&e&e&eO!!T** ptqyy#11!D'Ra1bb pz!T22 ptqt||oooomnoooCA&&&&v455 u*66sy^g^s6ttt141AI!.r   )NNN)+__name__
__module____qualname__r   r   api_methodsclassmethodr   r*   rH   rp   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r,  r.  r3  r5  r7  r;  staticmethodr   __classcell__)r   s   @r   r   r      s       $04
 
K 	N 	N 	N 	N 	N [	N2 2 26 6 6p?{ ?{ ?{B1~ 1~ 1~f2~ 2~ 2~h*z *z *zX1F 1F 1Ff@ @ @:D D D"D D D6 6 6  9 9 9
  N N NO O O. . .b9 9 96 6 6p      
 R  R  RDj j j:+i +i +iZk k kr EG 4n 4n 4n 4nln n n.k k k>	 	 	  
  ( (,t & & & & \& & & & &r   r   )rd   decimalr   cmf.includecommon.fieldsr   r   r   r   r   <module>rl     s    				           # # # # # #J J J J Jy! J J J J Jr   