Ticket #16787: 16787.4.diff
File 16787.4.diff, 6.0 KB (added by , 13 years ago) |
---|
-
django/template/base.py
=== modified file 'django/template/base.py'
1012 1012 return func 1013 1013 return dec 1014 1014 1015 def is_library_missing(name): 1016 """Check if library that failed to load cannot be found under any 1017 templatetags directory or does exist but fails to import. 1018 1019 Non-existing condition is checked recursively for each subpackage in cases 1020 like <appdir>/templatetags/subpackage/package/module.py. 1021 """ 1022 # Don't bother to check if '.' is in name since any name will be prefixed 1023 # with some template root. 1024 path, module = name.rsplit('.', 1) 1025 try: 1026 package = import_module(path) 1027 return not module_has_submodule(package, module) 1028 except ImportError: 1029 return is_library_missing(path) 1030 1015 1031 def import_library(taglib_module): 1016 1032 """Load a template tag library module. 1017 1033 1018 1034 Verifies that the library contains a 'register' attribute, and 1019 1035 returns that attribute as the representation of the library 1020 1036 """ 1021 app_path, taglib = taglib_module.rsplit('.',1)1022 app_module = import_module(app_path)1023 1037 try: 1024 1038 mod = import_module(taglib_module) 1025 1039 except ImportError, e: 1026 1040 # If the ImportError is because the taglib submodule does not exist, that's not 1027 1041 # an error that should be raised. If the submodule exists and raised an ImportError 1028 1042 # on the attempt to load it, that we want to raise. 1029 if not module_has_submodule(app_module, taglib):1043 if is_library_missing(taglib_module): 1030 1044 return None 1031 1045 else: 1032 1046 raise InvalidTemplateLibrary("ImportError raised loading %s: %s" % (taglib_module, e)) -
docs/ref/templates/builtins.txt
=== modified file 'docs/ref/templates/builtins.txt'
692 692 Load a custom template tag set. 693 693 694 694 For example, the following template would load all the tags and filters 695 registered in ``somelibrary`` and ``otherlibrary``:: 695 registered in ``somelibrary`` and ``otherlibrary`` located in package 696 ``package``:: 696 697 697 {% load somelibrary otherlibrary %}698 {% load somelibrary package.otherlibrary %} 698 699 699 700 .. versionchanged:: 1.3 700 701 -
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'
1188 1188 'inheritance41': ("{% extends 'inheritance36' %}{% block opt %}new{{ block.super }}{% endblock %}", {'numbers': '123'}, '_new1_new2_new3_'), 1189 1189 1190 1190 ### LOADING TAG LIBRARIES ################################################# 1191 'load01': ("{% load testtags subpackage.echo %}{% echo test %} {% echo2 \"test\" %}", {}, "test test"), 1192 'load02': ("{% load subpackage.echo %}{% echo2 \"test\" %}", {}, "test"), 1191 1193 1192 1194 # {% load %} tag, importing individual tags 1193 'load1': ("{% load echo from testtags %}{% echo this that theother %}", {}, 'this that theother'), 1194 'load2': ("{% load echo other_echo from testtags %}{% echo this that theother %} {% other_echo and another thing %}", {}, 'this that theother and another thing'), 1195 'load3': ("{% load echo upper from testtags %}{% echo this that theother %} {{ statement|upper }}", {'statement': 'not shouting'}, 'this that theother NOT SHOUTING'), 1195 'load03': ("{% load echo from testtags %}{% echo this that theother %}", {}, 'this that theother'), 1196 'load04': ("{% load echo other_echo from testtags %}{% echo this that theother %} {% other_echo and another thing %}", {}, 'this that theother and another thing'), 1197 'load05': ("{% load echo upper from testtags %}{% echo this that theother %} {{ statement|upper }}", {'statement': 'not shouting'}, 'this that theother NOT SHOUTING'), 1198 'load06': ("{% load echo2 from subpackage.echo %}{% echo2 \"test\" %}", {}, "test"), 1196 1199 1197 1200 # {% load %} tag errors 1198 'load4': ("{% load echo other_echo bad_tag from testtags %}", {}, template.TemplateSyntaxError), 1199 'load5': ("{% load echo other_echo bad_tag from %}", {}, template.TemplateSyntaxError), 1200 'load6': ("{% load from testtags %}", {}, template.TemplateSyntaxError), 1201 'load7': ("{% load echo from bad_library %}", {}, template.TemplateSyntaxError), 1201 'load07': ("{% load echo other_echo bad_tag from testtags %}", {}, template.TemplateSyntaxError), 1202 'load08': ("{% load echo other_echo bad_tag from %}", {}, template.TemplateSyntaxError), 1203 'load09': ("{% load from testtags %}", {}, template.TemplateSyntaxError), 1204 'load10': ("{% load echo from bad_library %}", {}, template.TemplateSyntaxError), 1205 'load11': ("{% load subpackage.echo_invalid %}", {}, template.TemplateSyntaxError), 1206 'load12': ("{% load subpackage.missing %}", {}, template.TemplateSyntaxError), 1202 1207 1203 1208 ### I18N ################################################################## 1204 1209