From 87aa5c4c94237d0a55f373df565e086191ae9f06 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 4 Mar 2019 10:43:10 -0500 Subject: [PATCH] Remove empty fields from list items Add notes --- atst/forms/application.py | 4 ++-- atst/forms/forms.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/atst/forms/application.py b/atst/forms/application.py index 80bb0858..745bb7f8 100644 --- a/atst/forms/application.py +++ b/atst/forms/application.py @@ -1,11 +1,11 @@ -from flask_wtf import FlaskForm +from .forms import BaseForm from wtforms.fields import StringField, TextAreaField, FieldList from wtforms.validators import Required from atst.forms.validators import ListItemRequired, ListItemsUnique from atst.utils.localization import translate -class ApplicationForm(FlaskForm): +class ApplicationForm(BaseForm): name = StringField( label=translate("forms.application.name_label"), validators=[Required()] ) diff --git a/atst/forms/forms.py b/atst/forms/forms.py index 160af8b5..e3f2081f 100644 --- a/atst/forms/forms.py +++ b/atst/forms/forms.py @@ -3,9 +3,12 @@ from flask import current_app, request as http_request from atst.utils.flash import formatted_flash as flash +EMPTY_LIST_FIELD = ["", None] + class BaseForm(FlaskForm): def __init__(self, formdata=None, **kwargs): + # initialize the form with data from the cache formdata = formdata or {} cached_data = current_app.form_cache.from_request(http_request) cached_data.update(formdata) @@ -13,8 +16,13 @@ class BaseForm(FlaskForm): @property def data(self): + # remove 'csrf_token' key/value pair + # remove empty strings and None from list fields _data = super().data _data.pop("csrf_token", None) + for field in _data: + if _data[field].__class__.__name__ == "list": + _data[field] = [el for el in _data[field] if el not in EMPTY_LIST_FIELD] return _data def validate(self, *args, **kwargs):