Skip to content

Commit 548e5db

Browse files
committed
Add DictDemo to example app
1 parent 508a175 commit 548e5db

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

example_app/app.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from example_app import views
66
from example_app.boolean_demo import boolean_demo_view
77
from example_app.dates_demo import dates_demo_view
8+
from example_app.dict_demo import dict_demo_view
89
from example_app.models import db
910
from example_app.numbers_demo import numbers_demo_view
1011
from example_app.strings_demo import strings_demo_view
@@ -52,6 +53,8 @@
5253
app.add_url_rule("/dates/<pk>/", view_func=dates_demo_view, methods=["GET", "POST"])
5354
app.add_url_rule("/bool", view_func=boolean_demo_view, methods=["GET", "POST"])
5455
app.add_url_rule("/bool/<pk>/", view_func=boolean_demo_view, methods=["GET", "POST"])
56+
app.add_url_rule("/dict", view_func=dict_demo_view, methods=["GET", "POST"])
57+
app.add_url_rule("/dict/<pk>/", view_func=dict_demo_view, methods=["GET", "POST"])
5558

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

example_app/dict_demo.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""Dict fields demo model."""
2+
3+
from example_app.models import db
4+
5+
6+
def get_default_dict():
7+
"""Example of default dict specification."""
8+
return {"alpha": 1, "text": "text", "float": 1.2}
9+
10+
11+
class DictDemoModel(db.Document):
12+
"""Documentation example model."""
13+
14+
string = db.StringField(verbose_name="str")
15+
dict_field = db.DictField()
16+
no_dict_field = db.DictField(default=None)
17+
null_dict_field = db.DictField(default=None, null=True)
18+
dict_default = db.DictField(default=get_default_dict)
19+
null_dict_default = db.DictField(default=get_default_dict, null=True)
20+
no_dict_prefilled = db.DictField(
21+
default=None,
22+
null=False,
23+
wtf_options={"default": get_default_dict, "null": True},
24+
)
25+
26+
27+
DictDemoForm = DictDemoModel.to_wtf_form()
28+
29+
30+
def dict_demo_view(pk=None):
31+
"""Return all fields demonstration."""
32+
from example_app.views import demo_view
33+
34+
return demo_view(model=DictDemoModel, view_name=dict_demo_view.__name__, pk=pk)

example_app/templates/layout.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
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>
2424
<li><a href="{{ url_for("boolean_demo_view") }}">Booleans demo</a></li>
25+
<li><a href="{{ url_for("dict_demo_view") }}">Dict/Json demo</a></li>
2526
</ul>
2627
</nav>
2728
<div>

example_app/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from example_app import models
77
from example_app.boolean_demo import BooleanDemoModel
88
from example_app.dates_demo import DateTimeModel
9+
from example_app.dict_demo import DictDemoModel
910
from example_app.numbers_demo import NumbersDemoModel
1011
from example_app.strings_demo import StringsDemoModel
1112

@@ -53,6 +54,7 @@ def delete_data():
5354
models.Todo.objects().delete()
5455
BooleanDemoModel.objects().delete()
5556
DateTimeModel.objects().delete()
57+
DictDemoModel.objects().delete()
5658
StringsDemoModel.objects().delete()
5759
NumbersDemoModel.objects().delete()
5860
with switch_db(models.Todo, "secondary"):
@@ -96,6 +98,7 @@ def demo_view(model, view_name, pk=None):
9698

9799
if request.method == "POST" and form.validate_on_submit():
98100
form.save()
101+
# form = FormClass(obj=form.instance)
99102
page_num = int(request.args.get("page") or 1)
100103
page = model.objects.paginate(page=page_num, per_page=100)
101104

0 commit comments

Comments
 (0)