Skip to content

Commit 7eabdda

Browse files
committed
Restrict passing arguments to model fields, related #379
1 parent 9aa164a commit 7eabdda

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

flask_mongoengine/wtf/db_fields.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,16 @@ class WtfFieldMixin:
5353
number of field parameters, and settings on behalf
5454
of document model form generator for WTForm.
5555
56-
:param args: arguments silently bypassed to normal mongoengine fields
5756
:param validators: wtf model form field validators.
5857
:param filters: wtf model form field filters.
5958
:param kwargs: keyword arguments silently bypassed to normal mongoengine fields
6059
"""
6160

62-
def __init__(self, *args, validators=None, filters=None, **kwargs):
61+
def __init__(self, *, validators=None, filters=None, **kwargs):
6362
self.validators = self._ensure_callable_or_list(validators, "validators")
6463
self.filters = self._ensure_callable_or_list(filters, "filters")
6564

66-
super().__init__(*args, **kwargs)
65+
super().__init__(**kwargs)
6766

6867
def _ensure_callable_or_list(self, field, msg_flag):
6968
"""

tests/test_forms.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def test_list_choices_coerce(app, db):
4747
CHOICES = ((1, "blue"), (2, "red"))
4848

4949
class MyChoices(db.Document):
50-
pill = db.ListField(db.IntField(choices=CHOICES))
50+
pill = db.ListField(field=db.IntField(choices=CHOICES))
5151

5252
MyChoicesForm = model_form(MyChoices)
5353
form = MyChoicesForm(MultiDict({"pill": "1"}))
@@ -88,7 +88,7 @@ class BlogPost(db.Document):
8888
meta = {"allow_inheritance": True}
8989
title = db.StringField(required=True, max_length=200)
9090
posted = db.DateTimeField(default=datetime.datetime.now)
91-
tags = db.ListField(db.StringField())
91+
tags = db.ListField(field=db.StringField())
9292

9393
class TextPost(BlogPost):
9494
email = db.EmailField(required=False)
@@ -189,7 +189,7 @@ def test_model_form_only(app, db):
189189
class BlogPost(db.Document):
190190
title = db.StringField(required=True, max_length=200)
191191
posted = db.DateTimeField(default=datetime.datetime.now)
192-
tags = db.ListField(db.StringField())
192+
tags = db.ListField(field=db.StringField())
193193

194194
BlogPost.drop_collection()
195195

@@ -215,7 +215,7 @@ def large_objects(cls, queryset):
215215
return queryset(breed__in=["german sheppard", "wolfhound"])
216216

217217
class DogOwner(db.Document):
218-
dog = db.ReferenceField(Dog)
218+
dog = db.ReferenceField(document_type=Dog)
219219

220220
big_dogs = [Dog(breed="german sheppard"), Dog(breed="wolfhound")]
221221
dogs = [Dog(breed="poodle")] + big_dogs
@@ -238,7 +238,7 @@ class Dog(db.Document):
238238
name = db.StringField()
239239

240240
class DogOwner(db.Document):
241-
dog = db.ReferenceField(Dog)
241+
dog = db.ReferenceField(document_type=Dog)
242242

243243
DogOwnerForm = model_form(DogOwner, field_args={"dog": {"allow_blank": True}})
244244

@@ -276,7 +276,7 @@ class Dog(db.Document):
276276
name = db.StringField()
277277

278278
class DogOwner(db.Document):
279-
dogs = db.ListField(db.ReferenceField(Dog))
279+
dogs = db.ListField(field=db.ReferenceField(document_type=Dog))
280280

281281
DogOwnerForm = model_form(DogOwner, field_args={"dogs": {"allow_blank": True}})
282282

@@ -317,7 +317,7 @@ class Dog(db.Document):
317317
name = db.StringField()
318318

319319
class DogOwner(db.Document):
320-
dogs = db.ListField(db.ReferenceField(Dog))
320+
dogs = db.ListField(field=db.ReferenceField(document_type=Dog))
321321

322322
DogOwnerForm = model_form(DogOwner)
323323

@@ -402,7 +402,7 @@ def test_sub_field_args(app, db):
402402
with app.test_request_context("/"):
403403

404404
class TestModel(db.Document):
405-
lst = db.ListField(db.StringField())
405+
lst = db.ListField(field=db.StringField())
406406

407407
field_args = {
408408
"lst": {
@@ -438,7 +438,7 @@ def __unicode__(self):
438438
return self.name
439439

440440
class DogOwner(db.Document):
441-
dogs = db.ListField(db.ReferenceField(Dog))
441+
dogs = db.ListField(field=db.ReferenceField(document_type=Dog))
442442

443443
DogOwnerForm = model_form(DogOwner)
444444

@@ -508,8 +508,8 @@ class Content(db.EmbeddedDocument):
508508

509509
class Post(db.Document):
510510
title = db.StringField(max_length=120, required=True)
511-
tags = db.ListField(db.StringField(max_length=30))
512-
content = db.EmbeddedDocumentField("Content")
511+
tags = db.ListField(field=db.StringField(max_length=30))
512+
content = db.EmbeddedDocumentField(document_type="Content")
513513

514514
PostForm = model_form(Post)
515515
form = PostForm()
@@ -524,7 +524,7 @@ class FoodItem(db.Document):
524524

525525
class FoodStore(db.Document):
526526
title = db.StringField(max_length=120, required=True)
527-
food_items = db.ListField(db.ReferenceField(FoodItem))
527+
food_items = db.ListField(field=db.ReferenceField(document_type=FoodItem))
528528

529529
def food_items_label_modifier(obj):
530530
return obj.title

0 commit comments

Comments
 (0)