Ticket #582: template_eggs-2.patch

File template_eggs-2.patch, 2.6 KB (added by sune.kirkeby@…, 9 years ago)

TEMPLATE_SOURCE_LOADERS moved into global_settings

  • django/core/template_eggs.py

     
     1"""Wrapper for loading templates from eggs via pkg_resources.resource_string."""
     2
     3try:
     4    from pkg_resources import resource_string
     5except ImportError:
     6    # python2.3 compatibility hack
     7    def resource_string(*args):
     8        raise AssertionError, 'pkg_resource required for template_eggs'
     9
     10from django.conf.settings import INSTALLED_APPS, TEMPLATE_FILE_EXTENSION
     11from django.core.template import TemplateDoesNotExist
     12
     13def load_template_source(name, dirs=None):
     14    """I load templates from Python eggs via pkg_resource.resource_string.
     15
     16    For every install app I try to get the resource (app, name)."""
     17
     18    pkg_name = 'templates/' + name + TEMPLATE_FILE_EXTENSION
     19
     20    for app in INSTALLED_APPS:
     21        try:
     22            return resource_string(app, pkg_name)
     23        except:
     24            pass
     25
     26    raise TemplateDoesNotExist, name
  • django/core/template_loader.py

     
    11"Wrapper for loading templates from storage of some sort (e.g. files or db)"
    22import template
    3 from template_file import load_template_source
     3from django.conf.settings import TEMPLATE_SOURCE_LOADERS
    44
     5def load_template_source(name, dirs=None):
     6    for loader in TEMPLATE_SOURCE_LOADERS:
     7        try:
     8            return loader(name, dirs)
     9        except:
     10            pass
     11    raise template.TemplateDoesNotExist, name
     12
    513class ExtendsError(Exception):
    614    pass
    715
  • django/conf/global_settings.py

     
    5858# Extension on all templates.
    5959TEMPLATE_FILE_EXTENSION = '.html'
    6060
     61# Callables which know how to import template sources from various
     62# sources; the expected interface is callable(name, [dirs]), where dirs
     63# is a list of directories to search instead of TEMPLATE_DIRS.
     64import template_file
     65import template_eggs
     66TEMPLATE_SOURCE_LOADERS = [
     67    template_file.load_template_source,
     68    template_eggs.load_template_source,
     69]
     70del template_file
     71del template_eggs
     72
    6173# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
    6274# trailing slash.
    6375# Examples: "http://foo.com/media/", "/media/".
Back to Top