4 from pkg_resources import resource_string |
4 from pkg_resources import resource_string |
5 except ImportError: |
5 except ImportError: |
6 resource_string = None |
6 resource_string = None |
7 |
7 |
8 from django.template import TemplateDoesNotExist |
8 from django.template import TemplateDoesNotExist |
|
9 from django.template.loader import BaseLoader |
9 from django.conf import settings |
10 from django.conf import settings |
10 |
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 |
11 def load_template_source(template_name, template_dirs=None): |
32 def load_template_source(template_name, template_dirs=None): |
12 """ |
33 import warnings |
13 Loads templates from Python eggs via pkg_resource.resource_string. |
34 warnings.warn( |
14 |
35 "'django.template.loaders.eggs.load_template_source' is deprecated; use 'django.template.loaders.eggs.Loader' instead.", |
15 For every installed app, it tries to get the resource (app, template_name). |
36 PendingDeprecationWarning |
16 """ |
37 ) |
17 if resource_string is not None: |
38 return _loader.load_template_source(template_name, template_dirs) |
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 |
39 load_template_source.is_usable = resource_string is not None |