[Python-modules-commits] [django-classy-tags] 01/06: Import django-classy-tags_0.7.2.orig.tar.gz
Michael Fladischer
fladi at moszumanska.debian.org
Wed Mar 2 17:46:44 UTC 2016
This is an automated email from the git hooks/post-receive script.
fladi pushed a commit to branch master
in repository django-classy-tags.
commit e48f21fa6306e61da1654f9e2d6914fc11146bc5
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date: Wed Mar 2 18:26:38 2016 +0100
Import django-classy-tags_0.7.2.orig.tar.gz
---
classytags/__init__.py | 2 +-
classytags/tests.py | 81 ++++++++++++++++++++++++++++++++++++++++++++------
classytags/utils.py | 21 ++++++++++---
docs/changes.rst | 7 +++++
4 files changed, 97 insertions(+), 14 deletions(-)
diff --git a/classytags/__init__.py b/classytags/__init__.py
index f0788a8..fb9b668 100644
--- a/classytags/__init__.py
+++ b/classytags/__init__.py
@@ -1 +1 @@
-__version__ = '0.7.1'
+__version__ = '0.7.2'
diff --git a/classytags/tests.py b/classytags/tests.py
index 4a8bcd2..294074f 100644
--- a/classytags/tests.py
+++ b/classytags/tests.py
@@ -10,6 +10,8 @@ from unittest import TestCase
import django
from django import template
from django.core.exceptions import ImproperlyConfigured
+from django.template import Context, RequestContext
+from django.test import RequestFactory
from classytags import arguments
from classytags import core
@@ -23,7 +25,6 @@ from classytags.blocks import VariableBlockName
from classytags.compat import compat_next
from classytags.test.context_managers import SettingsOverride
from classytags.test.context_managers import TemplateTags
-from django.template import Context
DJANGO_1_4_OR_HIGHER = (
LooseVersion(django.get_version()) >= LooseVersion('1.4')
@@ -1231,7 +1232,7 @@ class MultiBreakpointTests(TestCase):
dummy_context = {}
self.assertEqual(kwargs['first'].resolve(dummy_context), 'firstval')
self.assertEqual(kwargs['second'].resolve(dummy_context), None)
-
+
def test_optional_both(self):
options = core.Options(
arguments.Argument('first'),
@@ -1247,7 +1248,7 @@ class MultiBreakpointTests(TestCase):
dummy_context = {}
self.assertEqual(kwargs['first'].resolve(dummy_context), 'firstval')
self.assertEqual(kwargs['second'].resolve(dummy_context), 'secondval')
-
+
def test_partial_breakpoints(self):
options = core.Options(
arguments.Argument('first'),
@@ -1261,7 +1262,7 @@ class MultiBreakpointTests(TestCase):
exceptions.TrailingBreakpoint,
options.parse, dummy_parser, dummy_tokens
)
-
+
def test_partial_breakpoints_second(self):
options = core.Options(
arguments.Argument('first'),
@@ -1275,7 +1276,7 @@ class MultiBreakpointTests(TestCase):
exceptions.BreakpointExpected,
options.parse, dummy_parser, dummy_tokens
)
-
+
def test_partial_breakpoints_both(self):
options = core.Options(
arguments.Argument('first'),
@@ -1290,7 +1291,7 @@ class MultiBreakpointTests(TestCase):
exceptions.BreakpointExpected,
options.parse, dummy_parser, dummy_tokens
)
-
+
def test_partial_breakpoints_second_both(self):
options = core.Options(
arguments.Argument('first'),
@@ -1381,9 +1382,9 @@ class MultiBreakpointTests(TestCase):
}
if DJANGO_1_5_OR_HIGHER:
expected.update({
- 'None': None,
- 'True': True,
- 'False': False,
+ 'None': None,
+ 'True': True,
+ 'False': False,
})
self.assertEqual(flat, expected)
context.flatten = None
@@ -1391,3 +1392,65 @@ class MultiBreakpointTests(TestCase):
self.assertEqual(flat, expected)
flat = utils.flatten_context({'foo': 'test', 'bar': 'baz'})
self.assertEqual(flat, {'foo': 'test', 'bar': 'baz'})
+
+ def test_flatten_requestcontext(self):
+ factory = RequestFactory()
+ request = factory.get('/')
+ expected = {
+ 'foo': 'test',
+ 'request': 'bar',
+ 'bar': 'baz',
+ }
+ if DJANGO_1_5_OR_HIGHER:
+ expected.update({
+ 'None': None,
+ 'True': True,
+ 'False': False,
+ })
+
+ checked_keys = expected.keys()
+
+ # Adding a requestcontext to a plain context
+ context = Context({'foo': 'bar'})
+ context.push()
+ context.update({'bar': 'baz'})
+ context.push()
+ rcontext = RequestContext(request, {})
+ rcontext.update({'request': 'bar'})
+ context.update(rcontext)
+ context.push()
+ context.update({'foo': 'test'})
+ flat = utils.flatten_context(context)
+ self.assertEqual(
+ expected, dict(filter(lambda item: item[0] in checked_keys, flat.items()))
+ )
+
+ # Adding a plain context to a requestcontext
+ context = RequestContext(request, {})
+ context.update({'request': 'bar'})
+ normal_context = Context({'foo': 'bar'})
+ context.push()
+ context.update({'bar': 'baz'})
+ context.push()
+ context.update(normal_context)
+ context.push()
+ context.update({'foo': 'test'})
+ flat = utils.flatten_context(context)
+ self.assertEqual(
+ expected, dict(filter(lambda item: item[0] in checked_keys, flat.items()))
+ )
+
+ # Adding a requestcontext to a requestcontext
+ context = RequestContext(request, {})
+ context.update({'request': 'bar'})
+ rcontext = RequestContext(request, {'foo': 'bar'})
+ context.push()
+ context.update({'bar': 'baz'})
+ context.push()
+ context.update(rcontext)
+ context.push()
+ context.update({'foo': 'test'})
+ flat = utils.flatten_context(context)
+ self.assertEqual(
+ expected, dict(filter(lambda item: item[0] in checked_keys, flat.items()))
+ )
diff --git a/classytags/utils.py b/classytags/utils.py
index d38a1c9..6b2a444 100644
--- a/classytags/utils.py
+++ b/classytags/utils.py
@@ -1,9 +1,16 @@
import re
from copy import copy
+from distutils.version import LooseVersion
from classytags.compat import compat_basestring
+from django import get_version
+from django.template import Context, RequestContext
from django.template.context import BaseContext
+DJANGO_1_9_OR_HIGHER = (
+ LooseVersion(get_version()) >= LooseVersion('1.9')
+)
+
class NULL:
"""
@@ -86,11 +93,17 @@ def mixin(parent, child, attrs=None):
def flatten_context(context):
- if callable(getattr(context, 'flatten', None)):
- return context.flatten()
- elif isinstance(context, BaseContext):
+ def do_flatten(context):
flat = {}
for d in context.dicts:
- flat.update(d)
+ if isinstance(d, (Context, RequestContext)):
+ flat.update(do_flatten(d))
+ else:
+ flat.update(d)
return flat
+
+ if callable(getattr(context, 'flatten', None)) and DJANGO_1_9_OR_HIGHER:
+ return context.flatten()
+ elif isinstance(context, BaseContext):
+ return do_flatten(context)
return context
diff --git a/docs/changes.rst b/docs/changes.rst
index 698dd1d..b58d0fd 100644
--- a/docs/changes.rst
+++ b/docs/changes.rst
@@ -4,6 +4,13 @@ Changelog
*****
+0.7.2
+*****
+
+* Fixed regression introduced in 0.7.1 breaking Django 1.9 and higher.
+
+
+*****
0.7.1
*****
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/django-classy-tags.git
More information about the Python-modules-commits
mailing list