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:
@@ -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/")
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user