Merge pull request #206 from dod-ccpo/multiple-environments

Allow a user to add multiple environments when creating a project
This commit is contained in:
richard-dds
2018-08-23 16:15:00 -04:00
committed by GitHub
10 changed files with 89 additions and 21 deletions

View File

@@ -1,9 +1,26 @@
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):
name = StringField(label="Project Name")
description = TextAreaField(label="Description")
environment_name = StringField(label="Environment Name")
EMPTY_ENVIRONMENT_NAMES = ["", None]
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)
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