summaryrefslogtreecommitdiff
path: root/src/zope/pagetemplate/engine.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/zope/pagetemplate/engine.py')
-rw-r--r--src/zope/pagetemplate/engine.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/zope/pagetemplate/engine.py b/src/zope/pagetemplate/engine.py
index f3687d7..cea32d7 100644
--- a/src/zope/pagetemplate/engine.py
+++ b/src/zope/pagetemplate/engine.py
@@ -33,7 +33,7 @@ try:
from zope.untrustedpython import rcompile
from zope.untrustedpython.builtins import SafeBuiltins
HAVE_UNTRUSTED = True
-except ImportError:
+except ImportError: # pragma: no cover
HAVE_UNTRUSTED = False
# PyPy doesn't support assigning to '__builtins__', even when
@@ -41,7 +41,7 @@ except ImportError:
# so don't try to use it. It won't work.
if HAVE_UNTRUSTED:
import platform
- if platform.python_implementation() == 'PyPy':
+ if platform.python_implementation() == 'PyPy': # pragma: no cover
HAVE_UNTRUSTED = False
del rcompile
del SafeBuiltins
@@ -118,10 +118,15 @@ class ZopePythonExpr(PythonExpr):
def _compile(self, text, filename):
return rcompile.compile(text, filename, 'eval')
+def _get_iinterpreter():
+ from zope.app.interpreter.interfaces import IInterpreter
+ return IInterpreter # pragma: no cover
class ZopeContextBase(Context):
"""Base class for both trusted and untrusted evaluation contexts."""
+ request = None
+
def translate(self, msgid, domain=None, mapping=None, default=None):
return translate(msgid, domain, mapping,
context=self.request, default=default)
@@ -131,24 +136,24 @@ class ZopeContextBase(Context):
def evaluateCode(self, lang, code):
if not self.evaluateInlineCode:
raise InlineCodeError(
- _('Inline Code Evaluation is deactivated, which means that '
- 'you cannot have inline code snippets in your Page '
- 'Template. Activate Inline Code Evaluation and try again.'))
+ _('Inline Code Evaluation is deactivated, which means that '
+ 'you cannot have inline code snippets in your Page '
+ 'Template. Activate Inline Code Evaluation and try again.'))
# TODO This is only needed when self.evaluateInlineCode is true,
# so should only be needed for zope.app.pythonpage.
- from zope.app.interpreter.interfaces import IInterpreter
+ IInterpreter = _get_iinterpreter()
interpreter = component.queryUtility(IInterpreter, lang)
if interpreter is None:
error = _('No interpreter named "${lang_name}" was found.',
mapping={'lang_name': lang})
raise InlineCodeError(error)
- globals = self.vars.copy()
- result = interpreter.evaluateRawCode(code, globals)
+ globs = self.vars.copy()
+ result = interpreter.evaluateRawCode(code, globs)
# Add possibly new global variables.
old_names = self.vars.keys()
- for name, value in globals.items():
+ for name, value in globs.items():
if name not in old_names:
self.setGlobal(name, value)
return result
@@ -466,7 +471,7 @@ class TraversableModuleImporter(SimpleModuleImporter):
def traverse(self, name, further_path):
try:
return self[name]
- except KeyError:
+ except ImportError:
raise TraversalError(self, name)