[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
|
||||
else:
|
||||
cls.__unicode__ = cls.__text_cast
|
||||
cls.__str__ = cls.__bytes_cast_encoded
|
||||
elif cls._delegate_bytes:
|
||||
if six.PY3:
|
||||
cls.__bytes__ = cls.__bytes_cast
|
||||
|
@ -142,6 +143,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()
|
||||
|
|
|
@ -318,6 +318,17 @@ class ReverseLazyTest(TestCase):
|
|||
response = self.client.get('/login_required_view/')
|
||||
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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue