Ticket #6587: new_template_lib_loader.diff
| File new_template_lib_loader.diff, 2.8 kB (added by oyvind, 10 months ago) |
|---|
-
a/django/template/__init__.py
old new 59 59 from django.utils.translation import ugettext as _ 60 60 from django.utils.safestring import SafeData, EscapeData, mark_safe, mark_for_escaping 61 61 from django.utils.html import escape 62 62 from django.templatetags import get_library_names 63 63 __all__ = ('Template', 'Context', 'RequestContext', 'compile_string') 64 64 65 65 TOKEN_TEXT = 0 … … 910 910 return func 911 911 return dec 912 912 913 def get_library(module_name ):913 def get_library(module_name, full_path=False): 914 914 lib = libraries.get(module_name, None) 915 915 if not lib: 916 library_names = get_library_names() 916 917 try: 917 mod = __import__(module_name, {}, {}, ['']) 918 library_name = full_path and module_name or library_names[module_name] 919 mod = __import__(library_name, {}, {}, ['']) 918 920 except ImportError, e: 919 921 raise InvalidTemplateLibrary("Could not load template library from %s, %s" % (module_name, e)) 920 922 try: … … 925 927 return lib 926 928 927 929 def add_to_builtins(module_name): 928 builtins.append(get_library(module_name ))930 builtins.append(get_library(module_name, full_path=True)) 929 931 930 932 add_to_builtins('django.template.defaulttags') 931 933 add_to_builtins('django.template.defaultfilters') -
a/django/templatetags/__init__.py
old new 1 1 from django.conf import settings 2 import os 2 3 3 for a in settings.INSTALLED_APPS: 4 try: 5 __path__.extend(__import__(a + '.templatetags', {}, {}, ['']).__path__) 6 except ImportError: 7 pass 4 library_names = {} 5 6 def get_library_names(): 7 if not library_names: 8 for a in settings.INSTALLED_APPS: 9 try: 10 appname = a.find('.')!=-1 and a.split('.')[-1] or a 11 name = a + '.templatetags' 12 mod = __import__(name, {}, {}, ['']) 13 for root, dirs, files in os.walk(mod.__path__[0]): 14 for file in files: 15 if not file.endswith('.pyc') and not file.startswith('__init__'): 16 library_name = os.path.splitext(file)[0] 17 library_names[library_name] = name + '.' + library_name 18 library_names[appname + '.' + library_name] = name + '.' + library_name 19 except ImportError: 20 pass 21 library_names['i18n'] = 'django.templatetags.i18n' 22 library_names['cache'] = 'django.templatetags.cache' 23 return library_names
