Ticket #16787: 16787.2.diff

File 16787.2.diff, 4.0 KB (added by Ivan Sagalaev, 13 years ago)

Patch with all new included.

  • django/template/base.py

    === modified file 'django/template/base.py'
     
    10121012            return func
    10131013        return dec
    10141014
     1015def is_library_missing(name):
     1016    """Check if library that failed to load cannot be found under a template
     1017    root or does exist but failes to import.
     1018
     1019    Non-existing condition is checked recursively for each subpackage in cases
     1020    like <temlpate_root>/subpacke/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
    10151031def import_library(taglib_module):
    10161032    """Load a template tag library module.
    10171033
    10181034    Verifies that the library contains a 'register' attribute, and
    10191035    returns that attribute as the representation of the library
    10201036    """
    1021     app_path, taglib = taglib_module.rsplit('.',1)
    1022     app_module = import_module(app_path)
    10231037    try:
    10241038        mod = import_module(taglib_module)
    10251039    except ImportError, e:
    10261040        # If the ImportError is because the taglib submodule does not exist, that's not
    10271041        # an error that should be raised. If the submodule exists and raised an ImportError
    10281042        # 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):
    10301044            return None
    10311045        else:
    10321046            raise InvalidTemplateLibrary("ImportError raised loading %s: %s" % (taglib_module, e))
  • docs/ref/templates/builtins.txt

    === modified file 'docs/ref/templates/builtins.txt'
     
    692692Load a custom template tag set.
    693693
    694694For example, the following template would load all the tags and filters
    695 registered in ``somelibrary`` and ``otherlibrary``::
     695registered in ``somelibrary`` and ``otherlibrary`` located in package
     696``package``::
    696697
    697     {% load somelibrary otherlibrary %}
     698    {% load somelibrary package.otherlibrary %}
    698699
    699700.. versionchanged:: 1.3
    700701
  • 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'
     
     1from django import template
     2
     3register = template.Library()
     4
     5@register.simple_tag
     6def echo(arg):
     7    return arg
  • tests/regressiontests/templates/templatetags/subpackage/echo_invalid.py

    === added file 'tests/regressiontests/templates/templatetags/subpackage/echo_invalid.py'
     
     1import nonexistent.module
  • tests/regressiontests/templates/tests.py

    === modified file 'tests/regressiontests/templates/tests.py'
     
    12001200            'load6': ("{% load from testtags %}", {}, template.TemplateSyntaxError),
    12011201            'load7': ("{% load echo from bad_library %}", {}, template.TemplateSyntaxError),
    12021202
     1203            # {% load %} tag, libraries in hierarchies
     1204            'load8': ("{% load subpackage.echo %}{% echo \"test\" %}", {}, "test"),
     1205            'load9': ("{% load subpackage.echo_invalid %}", {}, template.TemplateSyntaxError),
     1206            'load10': ("{% load subpackage.missing %}", {}, template.TemplateSyntaxError),
     1207
    12031208            ### I18N ##################################################################
    12041209
    12051210            # {% spaceless %} tag
Back to Top