Ticket #582: template_eggs-4.patch
File template_eggs-4.patch, 3.1 KB (added by , 19 years ago) |
---|
-
django/core/template_eggs.py
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 # python2.3 compatibility hack 7 def resource_string(*args): 8 raise AssertionError, 'pkg_resource required for template_eggs' 9 10 from django.conf.settings import INSTALLED_APPS, TEMPLATE_FILE_EXTENSION 11 from django.core.template import TemplateDoesNotExist 12 13 def 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
1 1 "Wrapper for loading templates from storage of some sort (e.g. files or db)" 2 2 import template 3 from template_file import load_template_source4 3 4 from django.conf.settings import TEMPLATE_SOURCE_LOADERS 5 from django.core import exceptions 6 7 template_source_loaders = [] 8 for path in TEMPLATE_SOURCE_LOADERS: 9 i = path.rfind('.') 10 module, attr = path[:i], path[i+1:] 11 try: 12 mod = __import__(module, globals(), locals(), [attr]) 13 except ImportError, e: 14 raise exceptions.ImproperlyConfigured, 'Error importing template_source_loader %s: "%s"' % (module, e) 15 try: 16 template_source_loaders.append(getattr(mod, attr)) 17 except AttributeError: 18 raise exceptions.ImproperlyConfigured, 'Module "%s" does not define a "%s" callable template_source_loader' % (module, attr) 19 20 def load_template_source(name, dirs=None): 21 for loader in template_source_loaders: 22 try: 23 return loader(name, dirs) 24 except template.TemplateDoesNotExist: 25 pass 26 raise template.TemplateDoesNotExist, name 27 5 28 class ExtendsError(Exception): 6 29 pass 7 30 -
django/conf/global_settings.py
60 60 # Extension on all templates. 61 61 TEMPLATE_FILE_EXTENSION = '.html' 62 62 63 # Callables which know how to import template sources from various 64 # sources; the expected interface is callable(name, [dirs]), where dirs 65 # is a list of directories to search instead of TEMPLATE_DIRS. 66 TEMPLATE_SOURCE_LOADERS = ( 67 'django.core.template_file.load_template_source', 68 'django.core.template_eggs.load_template_source', 69 ) 70 63 71 # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a 64 72 # trailing slash. 65 73 # Examples: "http://foo.com/media/", "/media/".