From e492ab8e7eb5fc2c1d4a50669aeaa3d6163dc5f3 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Fri, 6 Sep 2013 10:28:28 -0500 Subject: [PATCH] Fixed #18719 -- Made force_bytes more consistent with force_text. --- django/utils/encoding.py | 2 +- tests/utils_tests/test_encoding.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/django/utils/encoding.py b/django/utils/encoding.py index d31c27fe80..470005bb46 100644 --- a/django/utils/encoding.py +++ b/django/utils/encoding.py @@ -122,7 +122,7 @@ def force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'): return s else: return s.decode('utf-8', errors).encode(encoding, errors) - if strings_only and (s is None or isinstance(s, int)): + if strings_only and is_protected_type(s): return s if isinstance(s, Promise): return six.text_type(s).encode(encoding, errors) diff --git a/tests/utils_tests/test_encoding.py b/tests/utils_tests/test_encoding.py index 72c35adec6..5730eca6d5 100644 --- a/tests/utils_tests/test_encoding.py +++ b/tests/utils_tests/test_encoding.py @@ -2,11 +2,13 @@ from __future__ import unicode_literals import unittest +import datetime from django.utils.encoding import force_bytes, filepath_to_uri class TestEncodingUtils(unittest.TestCase): + def test_force_bytes_exception(self): """ Test that force_bytes knows how to convert to bytes an exception @@ -17,6 +19,10 @@ class TestEncodingUtils(unittest.TestCase): result = force_bytes(exc) self.assertEqual(result, error_msg.encode('utf-8')) + def test_force_bytes_strings_only(self): + today = datetime.date.today() + self.assertEqual(force_bytes(today, strings_only=True), today) + def test_filepath_to_uri(self): self.assertEqual(filepath_to_uri('upload\\чубака.mp4'), 'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4')