|
| 1 | +"""Strings and strings related fields demo model.""" |
| 2 | +import re |
| 3 | + |
| 4 | +from flask import render_template, request |
| 5 | + |
| 6 | +from example_app.models import db |
| 7 | +from flask_mongoengine.wtf import fields as mongo_fields |
| 8 | + |
| 9 | + |
| 10 | +class StringsDemoModel(db.Document): |
| 11 | + """Documentation example model.""" |
| 12 | + |
| 13 | + string_field = db.StringField() |
| 14 | + regexp_string_field = db.StringField( |
| 15 | + regex=re.compile( |
| 16 | + r"^(https:\/\/)[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=]+$" |
| 17 | + ) |
| 18 | + ) |
| 19 | + sized_string_field = db.StringField(min_length=5) |
| 20 | + tel_field = db.StringField(wtf_field_class=mongo_fields.MongoTelField) |
| 21 | + password_field = db.StringField( |
| 22 | + wtf_field_class=mongo_fields.MongoPasswordField, |
| 23 | + required=True, |
| 24 | + min_length=5, |
| 25 | + ) |
| 26 | + email_field = db.EmailField() |
| 27 | + url_field = db.URLField() |
| 28 | + |
| 29 | + |
| 30 | +StringsDemoForm = StringsDemoModel.to_wtf_form() |
| 31 | + |
| 32 | + |
| 33 | +def strings_demo_view(pk=None): |
| 34 | + """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 | + "strings_demo.html", page=page, form=form, model=StringsDemoModel |
| 52 | + ) |
0 commit comments