summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2010-10-27 16:01:09 -0400
committerChris McDonough <chrism@plope.com>2010-10-27 16:01:09 -0400
commite42a0f17560dccc7c3ebbafcdbbeff5f865bd721 (patch)
tree5f32358524004aa652464518e76889fe36416152
parent36cdc64fc85c5649034e3458d538d6e8f4e68c57 (diff)
parentff336d0251829d4f8adabdba110a06575678bccc (diff)
downloadpyramid-e42a0f17560dccc7c3ebbafcdbbeff5f865bd721.tar.gz
pyramid-e42a0f17560dccc7c3ebbafcdbbeff5f865bd721.tar.bz2
pyramid-e42a0f17560dccc7c3ebbafcdbbeff5f865bd721.zip
i have no idea what i'm committing
-rw-r--r--pyramid/mako_templating.py69
1 files changed, 36 insertions, 33 deletions
diff --git a/pyramid/mako_templating.py b/pyramid/mako_templating.py
index 6e8814021..a681f7f72 100644
--- a/pyramid/mako_templating.py
+++ b/pyramid/mako_templating.py
@@ -12,42 +12,45 @@ from pyramid.settings import get_settings
from pyramid.resource import resolve_resource_spec
from pyramid.resource import abspath_from_resource_spec
+from mako.lookup import TemplateLookup
+from mako import exceptions, util
+
class IMakoLookup(Interface):
pass
-def renderer_factory(path):
- from mako.lookup import TemplateLookup
- from mako import exceptions
- class PkgResourceTemplateLookup(TemplateLookup):
- def adjust_uri(self, uri, relativeto):
- # Don't adjust pkg resource spec names
- if ':' in uri:
- return uri
- return TemplateLookup.adjust_uri(self, uri, relativeto)
-
- def get_template(self, uri):
- if ':' not in uri:
- return TemplateLookup.get_template(self, uri)
- try:
- if self.filesystem_checks:
- return self._check(uri, self._collection[uri])
- else:
- return self._collection[uri]
- except KeyError:
- pname, path = resolve_resource_spec(uri)
- srcfile = abspath_from_resource_spec(path, pname)
+
+class PkgResourceTemplateLookup(TemplateLookup):
+ def adjust_uri(self, uri, relativeto):
+ # Don't adjust pkg resource spec names
+ if ':' in uri:
+ return uri
+ return TemplateLookup.adjust_uri(self, uri, relativeto)
+
+ def get_template(self, uri):
+ if ':' not in uri:
+ return TemplateLookup.get_template(self, uri)
+ try:
+ if self.filesystem_checks:
+ return self._check(uri, self._collection[uri])
+ else:
+ return self._collection[uri]
+ except KeyError:
+ pname, path = resolve_resource_spec(uri)
+ srcfile = abspath_from_resource_spec(path, pname)
+ if os.path.isfile(srcfile):
+ return self._load(srcfile, uri)
+
+ u = re.sub(r'^\/+', '', path)
+ for dir in self.directories:
+ srcfile = posixpath.normpath(posixpath.join(dir, u))
if os.path.isfile(srcfile):
return self._load(srcfile, uri)
-
- u = re.sub(r'^\/+', '', path)
- for dir in self.directories:
- srcfile = posixpath.normpath(posixpath.join(dir, u))
- if os.path.isfile(srcfile):
- return self._load(srcfile, uri)
- else:
- raise exceptions.TopLevelLookupException(
- "Cant locate template for uri %r" % uri)
-
+ else:
+ raise exceptions.TopLevelLookupException(
+ "Cant locate template for uri %r" % uri)
+
+
+def renderer_factory(path):
registry = get_current_registry()
lookup = registry.queryUtility(IMakoLookup)
if lookup is None:
@@ -60,7 +63,7 @@ def renderer_factory(path):
raise ConfigurationError(
'Mako template used without a lookup path')
directories = directories.splitlines()
- directories = [ abspath_from_resource_spec(d) for d in directories ]
+ directories = [ abspath_from_resource_spec(d) for d in directories ]
lookup = PkgResourceTemplateLookup(directories=directories,
module_directory=module_directory,
input_encoding=input_encoding,
@@ -68,6 +71,7 @@ def renderer_factory(path):
registry.registerUtility(lookup, IMakoLookup)
return MakoLookupTemplateRenderer(path, lookup)
+
class MakoLookupTemplateRenderer(object):
implements(ITemplateRenderer)
def __init__(self, path, lookup):
@@ -97,4 +101,3 @@ class MakoLookupTemplateRenderer(object):
template = template.get_def(def_name)
result = template.render_unicode(**system)
return result
-