|
0
|
1 |
# Wrapper for loading templates from eggs via pkg_resources.resource_string. |
|
|
2 |
|
|
|
3 |
try: |
|
|
4 |
from pkg_resources import resource_string |
|
|
5 |
except ImportError: |
|
|
6 |
resource_string = None |
|
|
7 |
|
|
|
8 |
from django.template import TemplateDoesNotExist |
|
|
9 |
from django.conf import settings |
|
|
10 |
|
|
|
11 |
def load_template_source(template_name, template_dirs=None): |
|
|
12 |
""" |
|
|
13 |
Loads templates from Python eggs via pkg_resource.resource_string. |
|
|
14 |
|
|
|
15 |
For every installed app, it tries to get the resource (app, template_name). |
|
|
16 |
""" |
|
|
17 |
if resource_string is not None: |
|
|
18 |
pkg_name = 'templates/' + template_name |
|
|
19 |
for app in settings.INSTALLED_APPS: |
|
|
20 |
try: |
|
|
21 |
return (resource_string(app, pkg_name).decode(settings.FILE_CHARSET), 'egg:%s:%s' % (app, pkg_name)) |
|
|
22 |
except: |
|
|
23 |
pass |
|
|
24 |
raise TemplateDoesNotExist, template_name |
|
|
25 |
load_template_source.is_usable = resource_string is not None |