Loading django/utils/translation/__init__.py +7 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ def lazy_number(func, resultclass, number=None, **kwargs): kwargs['number'] = number proxy = lazy(func, resultclass)(**kwargs) else: original_kwargs = kwargs.copy() class NumberAwareString(resultclass): def __mod__(self, rhs): if isinstance(rhs, dict) and number: Loading @@ -127,9 +129,14 @@ def lazy_number(func, resultclass, number=None, **kwargs): return translated proxy = lazy(lambda **kwargs: NumberAwareString(), NumberAwareString)(**kwargs) proxy.__reduce__ = lambda: (_lazy_number_unpickle, (func, resultclass, number, original_kwargs)) return proxy def _lazy_number_unpickle(func, resultclass, number, kwargs): return lazy_number(func, resultclass, number=number, **kwargs) def ngettext_lazy(singular, plural, number=None): return lazy_number(ngettext, str, singular=singular, plural=plural, number=number) Loading docs/releases/1.8.10.txt +3 −0 Original line number Diff line number Diff line Loading @@ -14,3 +14,6 @@ Bugfixes * Added system checks for query name clashes of hidden relationships (:ticket:`26162`). * Made ``forms.FileField`` and ``utils.translation.lazy_number()`` picklable (:ticket:`26212`). tests/forms_tests/tests/test_fields.py +3 −0 Original line number Diff line number Diff line Loading @@ -788,6 +788,9 @@ class FieldsTests(SimpleTestCase): # with here) self.assertTrue(f.has_changed('resume.txt', {'filename': 'resume.txt', 'content': 'My resume'})) def test_file_picklable(self): self.assertIsInstance(pickle.loads(pickle.dumps(FileField())), FileField) # ImageField ################################################################## @skipIf(Image is None, "Pillow is required to test ImageField") Loading tests/i18n/tests.py +8 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,14 @@ class TranslationTests(TestCase): ) self.assertEqual(result % {'name': 'Joe', 'num': 4}, "Joe has 4 good results") def test_ungettext_lazy_pickle(self): s1 = ungettext_lazy('%d good result', '%d good results') self.assertEqual(s1 % 1, '1 good result') self.assertEqual(s1 % 8, '8 good results') s2 = pickle.loads(pickle.dumps(s1)) self.assertEqual(s2 % 1, '1 good result') self.assertEqual(s2 % 8, '8 good results') @override_settings(LOCALE_PATHS=extended_locale_paths) def test_pgettext(self): trans_real._active = local() Loading Loading
django/utils/translation/__init__.py +7 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ def lazy_number(func, resultclass, number=None, **kwargs): kwargs['number'] = number proxy = lazy(func, resultclass)(**kwargs) else: original_kwargs = kwargs.copy() class NumberAwareString(resultclass): def __mod__(self, rhs): if isinstance(rhs, dict) and number: Loading @@ -127,9 +129,14 @@ def lazy_number(func, resultclass, number=None, **kwargs): return translated proxy = lazy(lambda **kwargs: NumberAwareString(), NumberAwareString)(**kwargs) proxy.__reduce__ = lambda: (_lazy_number_unpickle, (func, resultclass, number, original_kwargs)) return proxy def _lazy_number_unpickle(func, resultclass, number, kwargs): return lazy_number(func, resultclass, number=number, **kwargs) def ngettext_lazy(singular, plural, number=None): return lazy_number(ngettext, str, singular=singular, plural=plural, number=number) Loading
docs/releases/1.8.10.txt +3 −0 Original line number Diff line number Diff line Loading @@ -14,3 +14,6 @@ Bugfixes * Added system checks for query name clashes of hidden relationships (:ticket:`26162`). * Made ``forms.FileField`` and ``utils.translation.lazy_number()`` picklable (:ticket:`26212`).
tests/forms_tests/tests/test_fields.py +3 −0 Original line number Diff line number Diff line Loading @@ -788,6 +788,9 @@ class FieldsTests(SimpleTestCase): # with here) self.assertTrue(f.has_changed('resume.txt', {'filename': 'resume.txt', 'content': 'My resume'})) def test_file_picklable(self): self.assertIsInstance(pickle.loads(pickle.dumps(FileField())), FileField) # ImageField ################################################################## @skipIf(Image is None, "Pillow is required to test ImageField") Loading
tests/i18n/tests.py +8 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,14 @@ class TranslationTests(TestCase): ) self.assertEqual(result % {'name': 'Joe', 'num': 4}, "Joe has 4 good results") def test_ungettext_lazy_pickle(self): s1 = ungettext_lazy('%d good result', '%d good results') self.assertEqual(s1 % 1, '1 good result') self.assertEqual(s1 % 8, '8 good results') s2 = pickle.loads(pickle.dumps(s1)) self.assertEqual(s2 % 1, '1 good result') self.assertEqual(s2 % 8, '8 good results') @override_settings(LOCALE_PATHS=extended_locale_paths) def test_pgettext(self): trans_real._active = local() Loading