Ticket #12772: django-12772.patch

File django-12772.patch, 2.6 KB (added by Patryk Zawadzki, 14 years ago)

Working patch

  • django/template/__init__.py

     
    981981    Verifies that the library contains a 'register' attribute, and
    982982    returns that attribute as the representation of the library
    983983    """
    984     app_path, taglib = taglib_module.rsplit('.',1)
    985     app_module = import_module(app_path)
    986984    try:
    987985        mod = import_module(taglib_module)
    988986    except ImportError, e:
    989987        # If the ImportError is because the taglib submodule does not exist, that's not
    990988        # an error that should be raised. If the submodule exists and raised an ImportError
    991989        # on the attempt to load it, that we want to raise.
    992         if not module_has_submodule(app_module, taglib):
    993             return None
    994         else:
    995             raise InvalidTemplateLibrary("ImportError raised loading %s: %s" % (taglib_module, e))
     990        if '.' in taglib_module:
     991            app_path, taglib = taglib_module.rsplit('.',1)
     992            app_module = import_module(app_path)
     993            if module_has_submodule(app_module, taglib):
     994                raise InvalidTemplateLibrary("ImportError raised loading %s: %s" % (taglib_module, e))
     995        return None
    996996    try:
    997997        return mod.register
    998998    except AttributeError:
     
    10321032    """
    10331033    lib = libraries.get(library_name, None)
    10341034    if not lib:
    1035         templatetags_modules = get_templatetags_modules()
    10361035        tried_modules = []
    1037         for module in templatetags_modules:
    1038             taglib_module = '%s.%s' % (module, library_name)
    1039             tried_modules.append(taglib_module)
    1040             lib = import_library(taglib_module)
    1041             if lib:
    1042                 libraries[library_name] = lib
    1043                 break
     1036        # first try the fully qualified module path
     1037        taglib_module = library_name
     1038        tried_modules.append(taglib_module)
     1039        lib = import_library(taglib_module)
     1040        if lib:
     1041            libraries[library_name] = lib
     1042        else: # then search inside installed apps
     1043            templatetags_modules = get_templatetags_modules()
     1044            for module in templatetags_modules:
     1045                taglib_module = '%s.%s' % (module, library_name)
     1046                tried_modules.append(taglib_module)
     1047                lib = import_library(taglib_module)
     1048                if lib:
     1049                    libraries[library_name] = lib
     1050                    break
    10441051        if not lib:
    10451052            raise InvalidTemplateLibrary("Template library %s not found, tried %s" % (library_name, ','.join(tried_modules)))
    10461053    return lib
Back to Top