Loading django/forms/widgets.py +7 −4 Original line number Diff line number Diff line Loading @@ -487,15 +487,18 @@ class TimeInput(Input): pass return super(TimeInput, self)._has_changed(self._format_value(initial), data) # Defined at module level so that CheckboxInput is picklable (#17976) def boolean_check(v): return not (v is False or v is None or v == '') class CheckboxInput(Widget): def __init__(self, attrs=None, check_test=None): super(CheckboxInput, self).__init__(attrs) # check_test is a callable that takes a value and returns True # if the checkbox should be checked for that value. if check_test is None: self.check_test = lambda v: not (v is False or v is None or v == '') else: self.check_test = check_test self.check_test = boolean_check if check_test is None else check_test def render(self, name, value, attrs=None): final_attrs = self.build_attrs(attrs, type='checkbox', name=name) Loading tests/regressiontests/forms/tests/fields.py +4 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ Other than that, the Field subclasses have class-specific options for __init__(). For example, CharField has a max_length option. """ import datetime import pickle import re import os import warnings Loading Loading @@ -690,6 +691,9 @@ class FieldsTests(SimpleTestCase): self.assertEqual(False, f.clean('false')) self.assertEqual(False, f.clean('FaLsE')) def test_boolean_picklable(self): self.assertIsInstance(pickle.loads(pickle.dumps(BooleanField())), BooleanField) # ChoiceField ################################################################# def test_choicefield_1(self): Loading Loading
django/forms/widgets.py +7 −4 Original line number Diff line number Diff line Loading @@ -487,15 +487,18 @@ class TimeInput(Input): pass return super(TimeInput, self)._has_changed(self._format_value(initial), data) # Defined at module level so that CheckboxInput is picklable (#17976) def boolean_check(v): return not (v is False or v is None or v == '') class CheckboxInput(Widget): def __init__(self, attrs=None, check_test=None): super(CheckboxInput, self).__init__(attrs) # check_test is a callable that takes a value and returns True # if the checkbox should be checked for that value. if check_test is None: self.check_test = lambda v: not (v is False or v is None or v == '') else: self.check_test = check_test self.check_test = boolean_check if check_test is None else check_test def render(self, name, value, attrs=None): final_attrs = self.build_attrs(attrs, type='checkbox', name=name) Loading
tests/regressiontests/forms/tests/fields.py +4 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ Other than that, the Field subclasses have class-specific options for __init__(). For example, CharField has a max_length option. """ import datetime import pickle import re import os import warnings Loading Loading @@ -690,6 +691,9 @@ class FieldsTests(SimpleTestCase): self.assertEqual(False, f.clean('false')) self.assertEqual(False, f.clean('FaLsE')) def test_boolean_picklable(self): self.assertIsInstance(pickle.loads(pickle.dumps(BooleanField())), BooleanField) # ChoiceField ################################################################# def test_choicefield_1(self): Loading