Skip to content

Commit 4f7c4c8

Browse files
committed
Merge pull request #60 from eventsage/master
Issue #59: MultipleField._is_select returns false if data is None
2 parents d716cb7 + 131980f commit 4f7c4c8

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

flask_mongoengine/wtf/fields.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def process_formdata(self, valuelist):
107107
self.data = None
108108

109109
def _is_selected(self, item):
110-
return item in self.data
110+
return item in self.data if self.data else False
111111

112112

113113
class ModelSelectField(QuerySetSelectField):

tests/test_forms.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,34 @@ class DogOwner(db.Document):
264264
self.assertTrue(choices[0].checked)
265265
self.assertTrue(choices[1].checked)
266266

267+
def test_modelselectfield_multiple_initalvalue_None(self):
268+
with self.app.test_request_context('/'):
269+
db = self.db
270+
271+
class Dog(db.Document):
272+
name = db.StringField()
273+
274+
class DogOwner(db.Document):
275+
dogs = db.ListField(db.ReferenceField(Dog))
276+
277+
DogOwnerForm = model_form(DogOwner)
278+
279+
dogs = [Dog(name="fido"), Dog(name="rex")]
280+
for dog in dogs:
281+
dog.save()
282+
283+
form = DogOwnerForm(dogs=None)
284+
self.assertTrue(form.validate())
285+
286+
self.assertEqual(wtforms.widgets.Select, type(form.dogs.widget))
287+
self.assertEqual(True, form.dogs.widget.multiple)
288+
289+
# Validate if both dogs are selected
290+
choices = list(form.dogs)
291+
self.assertEqual(len(choices), 2)
292+
self.assertFalse(choices[0].checked)
293+
self.assertFalse(choices[1].checked)
294+
267295
def test_passwordfield(self):
268296
with self.app.test_request_context('/'):
269297
db = self.db

0 commit comments

Comments
 (0)