django-dbtemplates/dbtemplates/utils/template.py

38 lines
1.1 KiB
Python
Raw Normal View History

2025-06-11 04:17:05 +00:00
from django.template import Template, TemplateDoesNotExist, TemplateSyntaxError
def get_loaders():
from django.template.loader import _engine_list
2025-06-11 04:17:05 +00:00
loaders = []
for engine in _engine_list():
loaders.extend(engine.engine.template_loaders)
return loaders
2015-04-28 09:16:06 +00:00
def get_template_source(name):
source = None
not_found = []
2015-04-28 09:16:06 +00:00
for loader in get_loaders():
2025-06-11 04:17:05 +00:00
if loader.__module__.startswith("dbtemplates."):
2015-04-28 09:16:06 +00:00
# Don't give a damn about dbtemplates' own loader.
continue
for origin in loader.get_template_sources(name):
try:
source = loader.get_contents(origin)
except (NotImplementedError, TemplateDoesNotExist) as exc:
if exc.args[0] not in not_found:
not_found.append(exc.args[0])
continue
else:
2015-04-28 09:16:06 +00:00
return source
raise TemplateDoesNotExist(name, chain=not_found)
def check_template_syntax(template):
try:
Template(template.content)
except TemplateSyntaxError as e:
return (False, e)
return (True, None)