U
    r;d                     @   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   s^   t js
d S | dddg | jr>tjd |f| | jd|}ntj| jj|fd| i|}|S )N	eval_fileeval_file_path	eval_code)code_src_objr   r   )	ZconfigZBZPYTHON_ENABLEDZload_fieldsr   ZcmfutilZexec_bzpythonr   r   value)selfobjkwargsres r   *./common/models/cmf_eval_bzpython_mixin.pyeval_bzpython	   s    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rt| j}|drH|dd  }|dr^|dd  }d| }t	j
|std| ddd t j||S )	Nz/opt/eva-app/   /   u	   Файл u    не найден!T)abort)r   Z
is_changedr   r   ZmodelsZCmfAccessListZcheck_admin_moder   
startswithr   r   r   Z	cmf_alert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   