From cd0ceaa102c1e12b016432db4d180bee7906131f Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 31 Jan 2015 16:05:16 +0100 Subject: Fixed #24252 -- Forced lazy __str__ to utf-8 on Python 2 Thanks Stanislas Guerra for the report and Tomas Ehrlich for the review. --- django/utils/functional.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'django') diff --git a/django/utils/functional.py b/django/utils/functional.py index 9e4df4b2f7..4c085d9c6d 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -95,6 +95,7 @@ def lazy(func, *resultclasses): cls.__str__ = cls.__text_cast else: cls.__unicode__ = cls.__text_cast + cls.__str__ = cls.__bytes_cast_encoded elif cls._delegate_bytes: if six.PY3: cls.__bytes__ = cls.__bytes_cast @@ -117,6 +118,9 @@ def lazy(func, *resultclasses): def __bytes_cast(self): return bytes(func(*self.__args, **self.__kw)) + def __bytes_cast_encoded(self): + return func(*self.__args, **self.__kw).encode('utf-8') + def __cast(self): if self._delegate_bytes: return self.__bytes_cast() -- cgit v1.3