[1.8.x] Fixed #24252 -- Forced lazy __str__ to utf-8 on Python 2
Thanks Stanislas Guerra for the report and Tomas Ehrlich for
the review.
Backport of cd0ceaa102
from master.
This commit is contained in:
parent
d88c24f436
commit
ea3e40c278
|
@ -120,6 +120,7 @@ def lazy(func, *resultclasses):
|
||||||
cls.__str__ = cls.__text_cast
|
cls.__str__ = cls.__text_cast
|
||||||
else:
|
else:
|
||||||
cls.__unicode__ = cls.__text_cast
|
cls.__unicode__ = cls.__text_cast
|
||||||
|
cls.__str__ = cls.__bytes_cast_encoded
|
||||||
elif cls._delegate_bytes:
|
elif cls._delegate_bytes:
|
||||||
if six.PY3:
|
if six.PY3:
|
||||||
cls.__bytes__ = cls.__bytes_cast
|
cls.__bytes__ = cls.__bytes_cast
|
||||||
|
@ -142,6 +143,9 @@ def lazy(func, *resultclasses):
|
||||||
def __bytes_cast(self):
|
def __bytes_cast(self):
|
||||||
return bytes(func(*self.__args, **self.__kw))
|
return bytes(func(*self.__args, **self.__kw))
|
||||||
|
|
||||||
|
def __bytes_cast_encoded(self):
|
||||||
|
return func(*self.__args, **self.__kw).encode('utf-8')
|
||||||
|
|
||||||
def __cast(self):
|
def __cast(self):
|
||||||
if self._delegate_bytes:
|
if self._delegate_bytes:
|
||||||
return self.__bytes_cast()
|
return self.__bytes_cast()
|
||||||
|
|
|
@ -318,6 +318,17 @@ class ReverseLazyTest(TestCase):
|
||||||
response = self.client.get('/login_required_view/')
|
response = self.client.get('/login_required_view/')
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_inserting_reverse_lazy_into_string(self):
|
||||||
|
self.assertEqual(
|
||||||
|
'Some URL: %s' % reverse_lazy('some-login-page'),
|
||||||
|
'Some URL: /login/'
|
||||||
|
)
|
||||||
|
if six.PY2:
|
||||||
|
self.assertEqual(
|
||||||
|
b'Some URL: %s' % reverse_lazy('some-login-page'),
|
||||||
|
'Some URL: /login/'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ReverseLazySettingsTest(AdminScriptTestCase):
|
class ReverseLazySettingsTest(AdminScriptTestCase):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue