From 84abf2705bdb7b903bf74acbf0ed7cf629c2f8d8 Mon Sep 17 00:00:00 2001 From: Tomasz Torcz Date: Tue, 15 Feb 2022 13:28:49 +0100 Subject: [PATCH] fix(qrgen): fix "trim spaces" checkbox hold state over submits Only use submitted data to populate form when in POST handler. Otherwise default value for Boolean field gets clobbered. --- app/qrwebform.py | 13 +++++-------- app/templates/main.html | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/qrwebform.py b/app/qrwebform.py index d7bebd6..0fb75fc 100755 --- a/app/qrwebform.py +++ b/app/qrwebform.py @@ -13,23 +13,20 @@ app.config['SECRET_KEY'] = os.urandom(40) class QRForm(FlaskForm): user_data = TextField("Dane:", validators=[DataRequired()]) - # setting default here doesn't work, so we cannot retain checkbox state over POST - # we force trim_spaced to be checked in the template - # see https://github.com/wtforms/flask-wtf/issues/489 https://github.com/wtforms/flask-wtf/issues/362 - # https://github.com/wtforms/flask-wtf/issues/464 - trim_spaces = BooleanField("Usuń spacje") + trim_spaces = BooleanField("Usuń spacje", default=True) submit = SubmitField("Generuj") @app.route("/", methods=["GET", "POST"]) def main(): - form = QRForm(request.form) if request.method == "POST": + form = QRForm(request.form) data = request.form["user_data"] - if "trim_spaces" in request.form and request.form["trim_spaces"] == "y": + if "trim_spaces" in request.form: data = data.replace(" ", "") else: - # not POST? get back to ourselves + # not POST? get back to ourselves, start with empty form + form = QRForm() data = request.url_root return render_template("main.html", form=form, data=data, genurl="/render/") diff --git a/app/templates/main.html b/app/templates/main.html index cf1cd00..2c2985f 100644 --- a/app/templates/main.html +++ b/app/templates/main.html @@ -15,7 +15,7 @@
{{ form.user_data }}
- {{ form.trim_spaces(checked=True) }} {{ form.trim_spaces.label }} + {{ form.trim_spaces }} {{ form.trim_spaces.label }} {{ form.submit }}