
    bh                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)cmf_eval_bzpython_mixinc                   :     e Zd ZdZddZd Z fdZ fdZ xZS )CmfEvalBzpythonMixinTNc                     t           j        sd S |                     g d           | j        r"t	          j        d |f| | j        | j        d|}n%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    & 	FEEEFFF> 	' "#2 ,   CC '$ " ,	 
  C 
    c                    d}| j         r| j        rt          j                            t          | j                            rNt          t          | j                  d          5 }|                                }ddd           n# 1 swxY w Y   n| j        j	        }|sdS d}t                              d|          rd}t                              d|          rd}|S )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    > 	," (rw~~c$:M6N6N'O'O (#d122C88 (A vvxxH( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ~+H 	499[(++ 	+*99Z** 	&%s   $BB	B	c                 R    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466 l l lllr   c                    | j         j        s| j        j        s| j        j        rt          j                                         | j        j        r1t          j	        
                    d          st          dd           | j        j        s|                     dg           | j        rt          | j                  }|                    d          r
|dd          }|                    d	          r
|d
d          }d|z   }t           j                            |          st          d| dd            t'                      j        |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   sx   >$ 	4(A 	4TEXEc 	4 11333& 	kq~/M/MYc/M/d/d 	k  ^  fj  k  k  k  k "- 	1./000 	Q !455N((99 5!/!4((-- 4!/!3&7H7>>(++ QChCCC4PPPPuww|T,V,,,r   )N)	__name__
__module____qualname__abstractr   r(   r,   r@   __classcell__)r.   s   @r   r   r      sy        H   .     6    - - - - - - - - -r   r   N)cmf.includecommon.fieldsr   r    r   r   <module>rK      se        1 1 1 1 1 1O- O- O- O- O-2G O- O- O- O- O-r   