X-Git-Url: https://git.mdrn.pl/django-ssify.git/blobdiff_plain/3d2c8ba4dfb4774daff367dae1656099eb2b562c..196df9e8170262c31790260d4e280b9981b557d1:/ssify/templatetags/ssify.py diff --git a/ssify/templatetags/ssify.py b/ssify/templatetags/ssify.py index f538fe6..06be39e 100644 --- a/ssify/templatetags/ssify.py +++ b/ssify/templatetags/ssify.py @@ -1,16 +1,29 @@ # -*- coding: utf-8 -*- -# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# This file is part of django-ssify, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See README.md for more information. # -from __future__ import absolute_import +from __future__ import absolute_import, unicode_literals from django.conf import settings from django.core.urlresolvers import NoReverseMatch, reverse, resolve -from django.middleware.csrf import get_token, rotate_token, _sanitize_token +from django.middleware.csrf import get_token, _sanitize_token from django import template from django.utils.translation import get_language from ssify.decorators import ssi_variable from ssify.variables import SsiVariable +try: + from django.middleware.csrf import rotate_token +except ImportError: + from django.middleware.csrf import _get_new_csrf_key + + # Missing in Django 1.4 + def rotate_token(request): + request.META.update({ + "CSRF_COOKIE_USED": True, + "CSRF_COOKIE": _get_new_csrf_key(), + + }) + register = template.Library() @@ -66,10 +79,10 @@ def ssi_include(context, name_, **kwargs): @ssi_variable(register, vary=('Cookie',)) def get_csrf_token(request): """ - As CsrfViewMiddleware.process_view is never for a cached response, - and we still need to provide a request-specific CSRF token as - request-info ssi variable, we must make sure here that the - CSRF token is in request.META['CSRF_COOKIE']. + CsrfViewMiddleware.process_view is never called for cached + responses, and we still need to provide a CSRF token as an + ssi variable, we must make sure here that the CSRF token + is in request.META['CSRF_COOKIE']. """ token = get_token(request)