U
    Yh                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_eval_bzpython_mixinc                       s>   e Zd ZdZdddZdd Z f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_ENABLED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   t   }|dddddg S )Nr   r   r   r	   Zsl_owner_lock)supersave_preload_fields)r   Zpreload_fields	__class__r   r   r    ;   s    
z(CmfEvalBzpythonMixin.save_preload_fieldsc                    s   | j js| jjs| jjr"tj  | jjrDtj	j
ddsDtddd | jjsX| dg | jrt| j}|dr~|dd  }|d	r|d
d  }d| }tj|std| ddd t j||S )NZIBAdmins)Z
group_codeu   Только члены группы ИБ-админов могут измененять режим возможностей bzPythonT)abortr   z/opt/eva-app/   /   u	   Файл u    не найден!)r   Z
is_changedr   r   ZmodelsZCmfAccessListZcheck_admin_moder	   gZcurrent_userZin_person_groupZ	cmf_alertZ
is_definedr
   r   
startswithr   r   r   r   save)r   argsr   r   filepathr!   r   r   r)   A   s     



zCmfEvalBzpythonMixin.save)N)	__name__
__module____qualname__Zabstractr   r   r    r)   __classcell__r   r   r!   r   r      s
   
r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   