Skip to content

Commit 9898516

Browse files
committed
Add boolean fields to example app
1 parent 92d137a commit 9898516

File tree

4 files changed

+54
-0
lines changed

4 files changed

+54
-0
lines changed

example_app/app.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from pymongo import monitoring
44

55
from example_app import views
6+
from example_app.boolean_demo import boolean_demo_view
67
from example_app.dates_demo import dates_demo_view
78
from example_app.models import db
89
from example_app.numbers_demo import numbers_demo_view
@@ -49,6 +50,8 @@
4950
app.add_url_rule("/numbers/<pk>/", view_func=numbers_demo_view, methods=["GET", "POST"])
5051
app.add_url_rule("/dates", view_func=dates_demo_view, methods=["GET", "POST"])
5152
app.add_url_rule("/dates/<pk>/", view_func=dates_demo_view, methods=["GET", "POST"])
53+
app.add_url_rule("/bool", view_func=boolean_demo_view, methods=["GET", "POST"])
54+
app.add_url_rule("/bool/<pk>/", view_func=boolean_demo_view, methods=["GET", "POST"])
5255

5356
if __name__ == "__main__":
5457
app.run(host="0.0.0.0", port=8000)

example_app/boolean_demo.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"""Booleans fields demo model."""
2+
3+
from flask import render_template, request
4+
5+
from example_app.models import db
6+
7+
8+
class BooleanDemoModel(db.Document):
9+
"""Documentation example model."""
10+
11+
simple_sting_name = db.StringField()
12+
boolean_field = db.BooleanField()
13+
boolean_field_with_null = db.BooleanField(null=True)
14+
true_boolean_field_with_allowed_null = db.BooleanField(null=True, default=True)
15+
boolean_field_with_as_choices_replace = db.BooleanField(
16+
wtf_options={
17+
"choices": [("", "Not selected"), ("yes", "Positive"), ("no", "Negative")]
18+
}
19+
)
20+
21+
22+
BooleanDemoForm = BooleanDemoModel.to_wtf_form()
23+
24+
25+
def boolean_demo_view(pk=None):
26+
"""Return all fields demonstration."""
27+
form = BooleanDemoForm()
28+
obj = None
29+
if pk:
30+
obj = BooleanDemoModel.objects.get(pk=pk)
31+
form = BooleanDemoForm(obj=obj)
32+
33+
if request.method == "POST" and form.validate_on_submit():
34+
if pk:
35+
form.populate_obj(obj)
36+
obj.save()
37+
else:
38+
form.save()
39+
page_num = int(request.args.get("page") or 1)
40+
page = BooleanDemoModel.objects.paginate(page=page_num, per_page=100)
41+
42+
return render_template(
43+
"form_demo.html",
44+
view=boolean_demo_view.__name__,
45+
page=page,
46+
form=form,
47+
model=BooleanDemoModel,
48+
)

example_app/templates/layout.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<li><a href="{{ url_for("strings_demo_view") }}">Strings demo</a></li>
2222
<li><a href="{{ url_for("numbers_demo_view") }}">Numbers demo</a></li>
2323
<li><a href="{{ url_for("dates_demo_view") }}">DateTime demo</a></li>
24+
<li><a href="{{ url_for("boolean_demo_view") }}">Booleans demo</a></li>
2425
</ul>
2526
</nav>
2627
<div>

example_app/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from mongoengine.context_managers import switch_db
55

66
from example_app import models
7+
from example_app.boolean_demo import BooleanDemoModel
78
from example_app.dates_demo import DateTimeModel
89
from example_app.numbers_demo import NumbersDemoModel
910
from example_app.strings_demo import StringsDemoModel
@@ -50,6 +51,7 @@ def delete_data():
5051
"""Clear database."""
5152
with switch_db(models.Todo, "default"):
5253
models.Todo.objects().delete()
54+
BooleanDemoModel.objects().delete()
5355
DateTimeModel.objects().delete()
5456
StringsDemoModel.objects().delete()
5557
NumbersDemoModel.objects().delete()

0 commit comments

Comments
 (0)