U
    Įwh                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_eval_bzpython_mixinc                       s2   e Zd ZdZd	ddZdd Z fddZ  ZS )
CmfEvalBzpythonMixinTNc                 K   sf   t js
d S | dddg | jrBt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	   )
ZconfigZBZPYTHON_ENABLEDZload_fieldsr   ZcmfutilZexec_bzpythonr   r	   r   value)selfobjkwargsres r   *./common/models/cmf_eval_bzpython_mixin.pyeval_bzpython	   s0    	z"CmfEvalBzpythonMixin.eval_bzpythonc              	   C   s   d}| j rH| jrPtjt| jrPtt| jd}| }W 5 Q R X n| jj	}|sXdS d}t
d|rld}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   ZbzpythonfZjscache_timelifer   r   r   get_bzpython_jscache_timelife    s    	z2CmfEvalBzpythonMixin.get_bzpython_jscache_timelifec                    s   | j js| jjs| jjr"tj  | jjrDtj	j
ddsDtddd | jrt| j}|drj|dd  }|dr|d	d  }d| }tj|std
| ddd t j||S )NZIBAdmins)Z
group_codeu   Только члены группы ИБ-админов могут измененять режим возможностей bzPythonT)abortz/opt/eva-app/   /   u	   Файл u    не найден!)r   Z
is_changedr   r   ZmodelsZCmfAccessListZcheck_admin_moder	   gZcurrent_userZin_person_groupZ	cmf_alertr   
startswithr   r   r   supersave)r   argsr   r   filepath	__class__r   r   r%   ;   s    



zCmfEvalBzpythonMixin.save)N)__name__
__module____qualname__Zabstractr   r   r%   __classcell__r   r   r(   r   r      s   
r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   