equal
deleted
inserted
replaced
|
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.template.loader import BaseLoader |
|
10 from django.conf import settings |
|
11 |
|
12 class Loader(BaseLoader): |
|
13 is_usable = resource_string is not None |
|
14 |
|
15 def load_template_source(self, template_name, template_dirs=None): |
|
16 """ |
|
17 Loads templates from Python eggs via pkg_resource.resource_string. |
|
18 |
|
19 For every installed app, it tries to get the resource (app, template_name). |
|
20 """ |
|
21 if resource_string is not None: |
|
22 pkg_name = 'templates/' + template_name |
|
23 for app in settings.INSTALLED_APPS: |
|
24 try: |
|
25 return (resource_string(app, pkg_name).decode(settings.FILE_CHARSET), 'egg:%s:%s' % (app, pkg_name)) |
|
26 except: |
|
27 pass |
|
28 raise TemplateDoesNotExist(template_name) |
|
29 |
|
30 _loader = Loader() |
|
31 |
|
32 def load_template_source(template_name, template_dirs=None): |
|
33 import warnings |
|
34 warnings.warn( |
|
35 "'django.template.loaders.eggs.load_template_source' is deprecated; use 'django.template.loaders.eggs.Loader' instead.", |
|
36 PendingDeprecationWarning |
|
37 ) |
|
38 return _loader.load_template_source(template_name, template_dirs) |
|
39 load_template_source.is_usable = resource_string is not None |