Validate and filter environment_names form input

This commit is contained in:
richard-dds 2018-08-22 16:59:39 -04:00
parent d9e66e04c2
commit fc07ef5230
2 changed files with 28 additions and 4 deletions

View File

@ -1,9 +1,22 @@
from flask_wtf import Form from flask_wtf import Form
from wtforms.fields import StringField, TextAreaField from wtforms.fields import StringField, TextAreaField, FieldList
from wtforms.validators import Required
from atst.forms.validators import ListItemRequired
class NewProjectForm(Form): class NewProjectForm(Form):
name = StringField(label="Project Name") EMPTY_ENVIRONMENT_NAMES = ["", None]
description = TextAreaField(label="Description")
environment_name = StringField(label="Environment Name") name = StringField(label="Project Name", validators=[Required()])
description = TextAreaField(label="Description", validators=[Required()])
environment_names = FieldList(
StringField(label="Environment Name"),
validators=[ListItemRequired(message="Provide at least one environment name.")],
)
@property
def data(self):
_data = super(Form, self).data
_data["environment_names"] = [n for n in _data["environment_names"] if n not in self.EMPTY_ENVIRONMENT_NAMES]
return _data

View File

@ -51,3 +51,14 @@ def Alphabet(message="Please enter only letters."):
raise ValidationError(message) raise ValidationError(message)
return _alphabet return _alphabet
def ListItemRequired(message="Please provide at least one.", empty_values=("", None)):
def _list_item_required(form, field):
non_empty_values = [v for v in field.data if v not in empty_values]
if len(non_empty_values) == 0:
raise ValidationError(message)
return _list_item_required