Remove empty fields from list items

Add notes
This commit is contained in:
leigh-mil 2019-03-04 10:43:10 -05:00
parent dab13034d5
commit 87aa5c4c94
2 changed files with 10 additions and 2 deletions

View File

@ -1,11 +1,11 @@
from flask_wtf import FlaskForm from .forms import BaseForm
from wtforms.fields import StringField, TextAreaField, FieldList from wtforms.fields import StringField, TextAreaField, FieldList
from wtforms.validators import Required from wtforms.validators import Required
from atst.forms.validators import ListItemRequired, ListItemsUnique from atst.forms.validators import ListItemRequired, ListItemsUnique
from atst.utils.localization import translate from atst.utils.localization import translate
class ApplicationForm(FlaskForm): class ApplicationForm(BaseForm):
name = StringField( name = StringField(
label=translate("forms.application.name_label"), validators=[Required()] label=translate("forms.application.name_label"), validators=[Required()]
) )

View File

@ -3,9 +3,12 @@ from flask import current_app, request as http_request
from atst.utils.flash import formatted_flash as flash from atst.utils.flash import formatted_flash as flash
EMPTY_LIST_FIELD = ["", None]
class BaseForm(FlaskForm): class BaseForm(FlaskForm):
def __init__(self, formdata=None, **kwargs): def __init__(self, formdata=None, **kwargs):
# initialize the form with data from the cache
formdata = formdata or {} formdata = formdata or {}
cached_data = current_app.form_cache.from_request(http_request) cached_data = current_app.form_cache.from_request(http_request)
cached_data.update(formdata) cached_data.update(formdata)
@ -13,8 +16,13 @@ class BaseForm(FlaskForm):
@property @property
def data(self): def data(self):
# remove 'csrf_token' key/value pair
# remove empty strings and None from list fields
_data = super().data _data = super().data
_data.pop("csrf_token", None) _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 return _data
def validate(self, *args, **kwargs): def validate(self, *args, **kwargs):