web/lib/django/template/loaders/eggs.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
     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