Ticket #16787: 16787.5.diff
File 16787.5.diff, 5.9 KB (added by , 13 years ago) |
---|
-
django/template/base.py
=== modified file 'django/template/base.py'
1190 1190 return func 1191 1191 return dec 1192 1192 1193 def is_library_missing(name): 1194 """Check if library that failed to load cannot be found under any 1195 templatetags directory or does exist but fails to import. 1196 1197 Non-existing condition is checked recursively for each subpackage in cases 1198 like <appdir>/templatetags/subpackage/package/module.py. 1199 """ 1200 # Don't bother to check if '.' is in name since any name will be prefixed 1201 # with some template root. 1202 path, module = name.rsplit('.', 1) 1203 try: 1204 package = import_module(path) 1205 return not module_has_submodule(package, module) 1206 except ImportError: 1207 return is_library_missing(path) 1208 1193 1209 def import_library(taglib_module): 1194 1210 """ 1195 1211 Load a template tag library module. … … 1197 1213 Verifies that the library contains a 'register' attribute, and 1198 1214 returns that attribute as the representation of the library 1199 1215 """ 1200 app_path, taglib = taglib_module.rsplit('.', 1)1201 app_module = import_module(app_path)1202 1216 try: 1203 1217 mod = import_module(taglib_module) 1204 1218 except ImportError, e: … … 1206 1220 # that's not an error that should be raised. If the submodule exists 1207 1221 # and raised an ImportError on the attempt to load it, that we want 1208 1222 # to raise. 1209 if not module_has_submodule(app_module, taglib):1223 if is_library_missing(taglib_module): 1210 1224 return None 1211 1225 else: 1212 1226 raise InvalidTemplateLibrary("ImportError raised loading %s: %s" % -
docs/ref/templates/builtins.txt
=== modified file 'docs/ref/templates/builtins.txt'
698 698 Loads a custom template tag set. 699 699 700 700 For example, the following template would load all the tags and filters 701 registered in ``somelibrary`` and ``otherlibrary``:: 701 registered in ``somelibrary`` and ``otherlibrary`` located in package 702 ``package``:: 702 703 703 {% load somelibrary otherlibrary %}704 {% load somelibrary package.otherlibrary %} 704 705 705 706 .. versionchanged:: 1.3 706 707 -
tests/regressiontests/templates/templatetags/subpackage/echo.py
=== added directory 'tests/regressiontests/templates/templatetags/subpackage' === added file 'tests/regressiontests/templates/templatetags/subpackage/__init__.py' === added file 'tests/regressiontests/templates/templatetags/subpackage/echo.py'
1 from django import template 2 3 register = template.Library() 4 5 @register.simple_tag 6 def echo2(arg): 7 return arg -
tests/regressiontests/templates/templatetags/subpackage/echo_invalid.py
=== added file 'tests/regressiontests/templates/templatetags/subpackage/echo_invalid.py'
1 import nonexistent.module -
tests/regressiontests/templates/tests.py
=== modified file 'tests/regressiontests/templates/tests.py'
1191 1191 'inheritance41': ("{% extends 'inheritance36' %}{% block opt %}new{{ block.super }}{% endblock %}", {'numbers': '123'}, '_new1_new2_new3_'), 1192 1192 1193 1193 ### LOADING TAG LIBRARIES ################################################# 1194 'load01': ("{% load testtags subpackage.echo %}{% echo test %} {% echo2 \"test\" %}", {}, "test test"), 1195 'load02': ("{% load subpackage.echo %}{% echo2 \"test\" %}", {}, "test"), 1194 1196 1195 1197 # {% load %} tag, importing individual tags 1196 'load1': ("{% load echo from testtags %}{% echo this that theother %}", {}, 'this that theother'), 1197 'load2': ("{% load echo other_echo from testtags %}{% echo this that theother %} {% other_echo and another thing %}", {}, 'this that theother and another thing'), 1198 'load3': ("{% load echo upper from testtags %}{% echo this that theother %} {{ statement|upper }}", {'statement': 'not shouting'}, 'this that theother NOT SHOUTING'), 1198 'load03': ("{% load echo from testtags %}{% echo this that theother %}", {}, 'this that theother'), 1199 'load04': ("{% load echo other_echo from testtags %}{% echo this that theother %} {% other_echo and another thing %}", {}, 'this that theother and another thing'), 1200 'load05': ("{% load echo upper from testtags %}{% echo this that theother %} {{ statement|upper }}", {'statement': 'not shouting'}, 'this that theother NOT SHOUTING'), 1201 'load06': ("{% load echo2 from subpackage.echo %}{% echo2 \"test\" %}", {}, "test"), 1199 1202 1200 1203 # {% load %} tag errors 1201 'load4': ("{% load echo other_echo bad_tag from testtags %}", {}, template.TemplateSyntaxError), 1202 'load5': ("{% load echo other_echo bad_tag from %}", {}, template.TemplateSyntaxError), 1203 'load6': ("{% load from testtags %}", {}, template.TemplateSyntaxError), 1204 'load7': ("{% load echo from bad_library %}", {}, template.TemplateSyntaxError), 1204 'load07': ("{% load echo other_echo bad_tag from testtags %}", {}, template.TemplateSyntaxError), 1205 'load08': ("{% load echo other_echo bad_tag from %}", {}, template.TemplateSyntaxError), 1206 'load09': ("{% load from testtags %}", {}, template.TemplateSyntaxError), 1207 'load10': ("{% load echo from bad_library %}", {}, template.TemplateSyntaxError), 1208 'load11': ("{% load subpackage.echo_invalid %}", {}, template.TemplateSyntaxError), 1209 'load12': ("{% load subpackage.missing %}", {}, template.TemplateSyntaxError), 1205 1210 1206 1211 ### I18N ################################################################## 1207 1212