X-Git-Url: https://git.mdrn.pl/django-ssify.git/blobdiff_plain/b923cbd42d5cacdc10a9b0f1db12fbcbe6b1ac07..49bb850ee3f5c4fbd32643c6019b8e1c8ccf619a:/ssify/variables.py diff --git a/ssify/variables.py b/ssify/variables.py index 46a787b..5e220ad 100644 --- a/ssify/variables.py +++ b/ssify/variables.py @@ -11,7 +11,22 @@ at request time to the prerendered templates. """ from __future__ import unicode_literals from hashlib import md5 -from django import template +from django.template import Node + +try: + # Django < 1.9 + from django.template.base import get_library +except: + from importlib import import_module + from django.template.backends.django import get_installed_libraries + + def get_library(taglib): + if not hasattr(get_library, 'libraries'): + get_library.libraries = get_installed_libraries() + if isinstance(get_library.libraries[taglib], str): + get_library.libraries[taglib] = import_module(get_library.libraries[taglib]).register + return get_library.libraries[taglib] + from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.functional import Promise from django.utils.safestring import mark_safe @@ -72,7 +87,7 @@ class SsiVariable(object): def get_value(self, request): """Computes the real value of the variable, using the request.""" taglib, tagname = self.tagpath.rsplit('.', 1) - return template.get_library(taglib).tags[tagname].get_value( + return get_library(taglib).tags[tagname].get_value( request, *self.args, **self.kwargs) def __str__(self): @@ -117,7 +132,7 @@ def ssi_expect(var, type_): return type_(var) -class SsiVariableNode(template.Node): +class SsiVariableNode(Node): """ Node for the SsiVariable tags. """ def __init__(self, tagpath, args, kwargs, patch_response=None, asvar=None): self.tagpath = tagpath