diff options
| author | vinay karanam <vinayinvicible@users.noreply.github.com> | 2017-05-23 07:28:38 +0530 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-05-22 21:58:38 -0400 |
| commit | d1d08d86baef05db5b37c266ed9142f1c57e6322 (patch) | |
| tree | 11ead375d41838df0f83f3a97843ea72cad5d9a8 | |
| parent | 65dfe579d08361e04b7b3c1895b10f84b69d5c59 (diff) | |
[1.11.x] Fixed #28230 -- Allowed DjangoJsonEncoder to serialize CallableBool.
| -rw-r--r-- | django/core/serializers/json.py | 3 | ||||
| -rw-r--r-- | docs/releases/1.11.2.txt | 3 | ||||
| -rw-r--r-- | tests/serializers/test_json.py | 5 |
3 files changed, 11 insertions, 0 deletions
diff --git a/django/core/serializers/json.py b/django/core/serializers/json.py index 9da8993ee6..a475858205 100644 --- a/django/core/serializers/json.py +++ b/django/core/serializers/json.py @@ -16,6 +16,7 @@ from django.core.serializers.python import ( Deserializer as PythonDeserializer, Serializer as PythonSerializer, ) from django.utils import six +from django.utils.deprecation import CallableBool from django.utils.duration import duration_iso_string from django.utils.functional import Promise from django.utils.timezone import is_aware @@ -117,5 +118,7 @@ class DjangoJSONEncoder(json.JSONEncoder): return str(o) elif isinstance(o, Promise): return six.text_type(o) + elif isinstance(o, CallableBool): + return bool(o) else: return super(DjangoJSONEncoder, self).default(o) diff --git a/docs/releases/1.11.2.txt b/docs/releases/1.11.2.txt index a15d4272ec..e1cd939fa0 100644 --- a/docs/releases/1.11.2.txt +++ b/docs/releases/1.11.2.txt @@ -29,3 +29,6 @@ Bugfixes * Fixed a regression where ``Model._state.adding`` wasn't set correctly on multi-table inheritance parent models after saving a child model (:ticket:`28210`). + +* Allowed ``DjangoJSONEncoder`` to serialize + ``django.utils.deprecation.CallableBool`` (:ticket:`28230`). diff --git a/tests/serializers/test_json.py b/tests/serializers/test_json.py index b191ce6644..391523ae33 100644 --- a/tests/serializers/test_json.py +++ b/tests/serializers/test_json.py @@ -12,6 +12,7 @@ from django.core.serializers.json import DjangoJSONEncoder from django.db import models from django.test import SimpleTestCase, TestCase, TransactionTestCase from django.test.utils import isolate_apps +from django.utils.deprecation import CallableFalse, CallableTrue from django.utils.translation import override, ugettext_lazy from .models import Score @@ -315,3 +316,7 @@ class DjangoJSONEncoderTests(SimpleTestCase): json.dumps({'duration': duration}, cls=DjangoJSONEncoder), '{"duration": "P0DT00H00M00S"}' ) + + def test_callable_bool(self): + self.assertEqual(json.dumps(CallableTrue, cls=DjangoJSONEncoder), 'true') + self.assertEqual(json.dumps(CallableFalse, cls=DjangoJSONEncoder), 'false') |
