blob: cb42fd5d3b8ad5f55ac71f754c2de55f9f29926e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
from jinja2 import loaders
def jinja_loader_from_django_loader(django_loader):
"""Attempts to make a conversion from the given Django loader to an
similarly-behaving Jinja loader.
:param django_loader: Django loader module string.
:return: The similarly-behaving Jinja loader, or None if a similar loader
could not be found.
"""
for substr, func in _JINJA_LOADER_BY_DJANGO_SUBSTR.iteritems():
if substr in django_loader:
return func()
return None
def _make_jinja_app_loader():
"""Makes an 'app loader' for Jinja which acts like
:mod:`django.template.loaders.app_directories`.
"""
from django.template.loaders.app_directories import app_template_dirs
return loaders.FileSystemLoader(app_template_dirs)
def _make_jinja_filesystem_loader():
"""Makes a 'filesystem loader' for Jinja which acts like
:mod:`django.template.loaders.filesystem`.
"""
from django.conf import settings
return loaders.FileSystemLoader(settings.TEMPLATE_DIRS)
# Determine loaders from Django's conf.
_JINJA_LOADER_BY_DJANGO_SUBSTR = { # {substr: callable, ...}
'app_directories': _make_jinja_app_loader,
'filesystem': _make_jinja_filesystem_loader,
}
|