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.
This commit is contained in:
2022-02-15 13:28:49 +01:00
parent 81294de6d4
commit 84abf2705b
2 changed files with 6 additions and 9 deletions

View File

@@ -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/")

View File

@@ -15,7 +15,7 @@
<div> {{ form.user_data }} </div>
<div class="input submit">
{{ form.trim_spaces(checked=True) }} {{ form.trim_spaces.label }}
{{ form.trim_spaces }} {{ form.trim_spaces.label }}
{{ form.submit }} </div>
</form>
</p>