Skip to content

Commit 592438e

Browse files
committed
Example app code deduplication
1 parent 41d475a commit 592438e

File tree

5 files changed

+33
-92
lines changed

5 files changed

+33
-92
lines changed

example_app/boolean_demo.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
"""Booleans fields demo model."""
22

3-
from flask import render_template, request
4-
53
from example_app.models import db
64

75

@@ -24,25 +22,8 @@ class BooleanDemoModel(db.Document):
2422

2523
def boolean_demo_view(pk=None):
2624
"""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,
25+
from example_app.views import demo_view
26+
27+
return demo_view(
28+
model=BooleanDemoModel, view_name=boolean_demo_view.__name__, pk=pk
4829
)

example_app/dates_demo.py

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""Date and DateTime fields demo model."""
22

3-
from flask import render_template, request
43
from wtforms.fields import DateTimeField
54

65
from example_app.models import db
@@ -28,25 +27,6 @@ class DateTimeModel(db.Document):
2827

2928
def dates_demo_view(pk=None):
3029
"""Return all fields demonstration."""
31-
form = DateTimeDemoForm()
32-
obj = None
33-
if pk:
34-
obj = DateTimeModel.objects.get(pk=pk)
35-
form = DateTimeDemoForm(obj=obj)
36-
37-
if request.method == "POST" and form.validate_on_submit():
38-
if pk:
39-
form.populate_obj(obj)
40-
obj.save()
41-
else:
42-
form.save()
43-
page_num = int(request.args.get("page") or 1)
44-
page = DateTimeModel.objects.paginate(page=page_num, per_page=100)
45-
46-
return render_template(
47-
"form_demo.html",
48-
view=dates_demo_view.__name__,
49-
page=page,
50-
form=form,
51-
model=DateTimeModel,
52-
)
30+
from example_app.views import demo_view
31+
32+
return demo_view(model=DateTimeModel, view_name=dates_demo_view.__name__, pk=pk)

example_app/numbers_demo.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
from decimal import Decimal
44

5-
from flask import render_template, request
6-
75
from example_app.models import db
86

97

@@ -26,25 +24,8 @@ class NumbersDemoModel(db.Document):
2624

2725
def numbers_demo_view(pk=None):
2826
"""Return all fields demonstration."""
29-
form = NumbersDemoForm()
30-
obj = None
31-
if pk:
32-
obj = NumbersDemoModel.objects.get(pk=pk)
33-
form = NumbersDemoForm(obj=obj)
34-
35-
if request.method == "POST" and form.validate_on_submit():
36-
if pk:
37-
form.populate_obj(obj)
38-
obj.save()
39-
else:
40-
form.save()
41-
page_num = int(request.args.get("page") or 1)
42-
page = NumbersDemoModel.objects.paginate(page=page_num, per_page=100)
43-
44-
return render_template(
45-
"form_demo.html",
46-
view=numbers_demo_view.__name__,
47-
page=page,
48-
form=form,
49-
model=NumbersDemoModel,
27+
from example_app.views import demo_view
28+
29+
return demo_view(
30+
model=NumbersDemoModel, view_name=numbers_demo_view.__name__, pk=pk
5031
)

example_app/strings_demo.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
"""Strings and strings related fields demo model."""
22
import re
33

4-
from flask import render_template, request
5-
64
from example_app.models import db
75
from flask_mongoengine.wtf import fields as mongo_fields
86

@@ -32,25 +30,8 @@ class StringsDemoModel(db.Document):
3230

3331
def strings_demo_view(pk=None):
3432
"""Return all fields demonstration."""
35-
form = StringsDemoForm()
36-
obj = None
37-
if pk:
38-
obj = StringsDemoModel.objects.get(pk=pk)
39-
form = StringsDemoForm(obj=obj)
40-
41-
if request.method == "POST" and form.validate_on_submit():
42-
if pk:
43-
form.populate_obj(obj)
44-
obj.save()
45-
else:
46-
form.save()
47-
page_num = int(request.args.get("page") or 1)
48-
page = StringsDemoModel.objects.paginate(page=page_num, per_page=100)
49-
50-
return render_template(
51-
"form_demo.html",
52-
view=strings_demo_view.__name__,
53-
page=page,
54-
form=form,
55-
model=StringsDemoModel,
33+
from example_app.views import demo_view
34+
35+
return demo_view(
36+
model=StringsDemoModel, view_name=strings_demo_view.__name__, pk=pk
5637
)

example_app/views.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,21 @@ def pagination():
8484
todos_page = models.Todo.objects.paginate(page=page_num, per_page=3)
8585

8686
return render_template("pagination.html", todos_page=todos_page, form=form)
87+
88+
89+
def demo_view(model, view_name, pk=None):
90+
"""Return all fields demonstration."""
91+
FormClass = model.to_wtf_form()
92+
form = FormClass()
93+
if pk:
94+
obj = model.objects.get(pk=pk)
95+
form = FormClass(obj=obj)
96+
97+
if request.method == "POST" and form.validate_on_submit():
98+
form.save()
99+
page_num = int(request.args.get("page") or 1)
100+
page = model.objects.paginate(page=page_num, per_page=100)
101+
102+
return render_template(
103+
"form_demo.html", view=view_name, page=page, form=form, model=model
104+
)

0 commit comments

Comments
 (0)