Skip to content

Commit

Permalink
Updated templates exclusion method
Browse files Browse the repository at this point in the history
  • Loading branch information
GaretJax committed Mar 11, 2012
1 parent 95b5268 commit f936deb
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions coffin/template/loaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,49 @@
from django.template import TemplateDoesNotExist
from coffin.template.loader import get_template
from django.conf import settings
import re

django_template_source_loaders = None

class Loader(BaseLoader):
"""
A template loader to be used
A template loader to be used
"""
is_usable = True


def __init__(self, *args, **kwargs):
super(Loader, self).__init__(*args, **kwargs)

self._disabled = set()
self._enabled = set()

self._disabled_templates = set(getattr(settings, 'JINJA2_DISABLED_TEMPLATES', []))

def is_enabled(self, template_name):
if template_name in self._disabled:
return False
elif template_name in self._enabled:
return True
else:
# Check and update cache
for pattern in self._disabled_templates:
if re.match(pattern, template_name) is not None:
self._disabled.add(template_name)
return False
else:
self._enabled.add(template_name)
return True

def load_template(self, template_name, template_dirs=None):
try:
if template_name.split('/', 1)[0] in settings.JINJA2_DISABLED_APPS:
return get_django_template(template_name, template_dirs)
except IndexError, AttributeError:
pass

try:
template = get_template(template_name)
except TemplateNotFound:
raise TemplateDoesNotExist(template_name)
return template, template.filename
if self.is_enabled(template_name):
try:
template = get_template(template_name)
except TemplateNotFound:
raise TemplateDoesNotExist(template_name)
return template, template.filename
else:
return get_django_template(template_name, template_dirs)


def get_django_template(name, dirs=None):
global django_template_source_loaders
Expand All @@ -34,7 +56,7 @@ def get_django_template(name, dirs=None):
if loader is not None:
loaders.append(loader)
django_template_source_loaders = tuple(loaders)

for loader in django_template_source_loaders:
try:
source, display_name = loader(name, dirs)
Expand Down Expand Up @@ -77,4 +99,4 @@ def _make_jinja_filesystem_loader():
_JINJA_LOADER_BY_DJANGO_SUBSTR = { # {substr: callable, ...}
'app_directories': _make_jinja_app_loader,
'filesystem': _make_jinja_filesystem_loader,
}
}

0 comments on commit f936deb

Please sign in to comment.