
    <Yh                     D    d dl  d dlmZ  G d dej                        Zy)    )*)cmf_eval_bzpython_mixinc                   :     e Zd ZdZddZd Z fdZ fdZ xZS )CmfEvalBzpythonMixinTc                 8   t         j                  sy | j                  g d       | j                  r1t	        j
                  d |f| | j                  | j                  d|}|S t	        j
                  | j                  j                  |f| | j                  d|}|S )N)	eval_fileeval_file_path	eval_code)code_src_objr	   eval_unsafe)r   r   )
configBZPYTHON_ENABLEDload_fieldsr   cmfutilexec_bzpythonr	   r   r
   value)selfobjkwargsress       *./common/models/cmf_eval_bzpython_mixin.pyeval_bzpythonz"CmfEvalBzpythonMixin.eval_bzpython	   s    &&EF>>'' "#22 ,, C  
 ''$$ " ,,	
 C 
    c                    d}| j                   rw| j                  rt        j                  j	                  t        | j                              rOt        t        | j                        d      5 }|j                         }ddd       n| j                  j                  }|syd}t        j                  d|      rd}t        j                  d|      rd}|S # 1 sw Y   @xY w)u   
        Рассчитываем допустимое время жизни кеша, путем анализа кода bzPython
         rNz\bdate\(ip  z\bnow\(i,  )r   r	   ospathexistsstropenreadr
   r   research)r   bzpythonfjscache_timelifes       r   get_bzpython_jscache_timelifez2CmfEvalBzpythonMixin.get_bzpython_jscache_timelife    s     >>""rww~~c$:M:M6N'O#d112C8 (A vvxH( ( ~~++H99[(+*99Z*%( (s   ,CCc                 .    t         |          }|g dz   S )N)r
   r   r	   r   sl_owner_lock)supersave_preload_fields)r   preload_fields	__class__s     r   r,   z(CmfEvalBzpythonMixin.save_preload_fields;   s    46 lllr   c                    | j                   j                  s,| j                  j                  s| j                  j                  rt        j
                  j                          | j                  j                  r-t        j                  j                  d      st        dd       | j                  j                  s| j                  dg       | j                  rvt        | j                        }|j                  d      r|dd  }|j                  d	      r|d
d  }d|z   }t         j"                  j%                  |      st        d| dd       t'        | P  |i |S )NIBAdmins)
group_codeu   Только члены группы ИБ-админов могут измененять режим возможностей bzPythonT)abortr	   z/opt/eva-app/   /   u	   Файл u    не найден!)r
   
is_changedr   r	   modelsCmfAccessListcheck_admin_moder   gcurrent_userin_person_group	cmf_alert
is_definedr   r    
startswithr   r   r   r+   save)r   argsr   r	   filepathr.   s        r   r@   zCmfEvalBzpythonMixin.saveA   s(   >>$$(A(ATEXEXEcEc  113&&q~~/M/MYc/M/d  ^  fj  k ""--./0 !4!45N((9!/!4((-!/!3&7H77>>(+IhZ/BC4Pw|T,V,,r   )N)	__name__
__module____qualname__abstractr   r(   r,   r@   __classcell__)r.   s   @r   r   r      s!    H. 6- -r   r   N)cmf.includecommon.fieldsr   r    r   r   <module>rK      s      1O-2GG O-r   