Rafał Pitoń 11 лет назад
Родитель
Сommit
14c3c32664
2 измененных файлов с 5 добавлено и 6 удалено
  1. 2 3
      misago/core/forms.py
  2. 3 3
      misago/core/tests/test_forms.py

+ 2 - 3
misago/core/forms.py

@@ -12,11 +12,10 @@ TEXT_BASED_FIELDS = (
 class YesNoSwitchBase(TypedChoiceField):
     def prepare_value(self, value):
         """normalize bools to binary 1/0 so field works on them too"""
-        return 1 if value else 0
+        return 1 if value in [True, 'True', 1, '1'] else 0
 
     def clean(self, value):
-        value = 1 if value else 0
-        return super(YesNoSwitchBase, self).clean(value)
+        return self.prepare_value(value)
 
 
 def YesNoSwitch(**kwargs):

+ 3 - 3
misago/core/tests/test_forms.py

@@ -31,14 +31,14 @@ class YesNoSwitchTests(TestCase):
         """YesNoSwitch returns valid values for valid input"""
         form = YesNoForm({'test_field': u'1'})
         form.full_clean()
-        self.assertTrue(form.cleaned_data['test_field'])
+        self.assertEqual(form.cleaned_data['test_field'], 1)
 
         form = YesNoForm({'test_field': u'0'})
         form.full_clean()
-        self.assertTrue(not form.cleaned_data['test_field'])
+        self.assertEqual(form.cleaned_data['test_field'], 0)
 
     def test_dontstripme_input_is_ignored(self):
         """YesNoSwitch returns valid values for invalid input"""
         form = YesNoForm({'test_field': u'221'})
         form.full_clean()
-        self.assertTrue(form.cleaned_data.get('test_field') is None)
+        self.assertFalse(form.cleaned_data.get('test_field'))