web/lib/django/template/loaders/eggs.py
changeset 38 77b6da96e6f1
equal deleted inserted replaced
37:8d941af65caf 38:77b6da96e6f1
       
     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