From 430a6493f0c04ebf98a18dce51b1d7e72aaaecdf Mon Sep 17 00:00:00 2001 From: George Drummond Date: Thu, 2 May 2019 10:23:01 -0400 Subject: [PATCH] Get error state in edit environment name form working --- atst/forms/application.py | 3 +- atst/routes/applications/settings.py | 47 ++++++++++++++----- js/components/toggler.js | 6 ++- .../applications/edit_environments.html | 8 ++-- tests/routes/applications/test_settings.py | 22 ++++++++- 5 files changed, 66 insertions(+), 20 deletions(-) diff --git a/atst/forms/application.py b/atst/forms/application.py index 4fae3f1c..b82c1b99 100644 --- a/atst/forms/application.py +++ b/atst/forms/application.py @@ -1,11 +1,12 @@ from .forms import BaseForm -from wtforms.fields import StringField, TextAreaField, FieldList +from wtforms.fields import StringField, TextAreaField, FieldList, HiddenField from wtforms.validators import Required from atst.forms.validators import ListItemRequired, ListItemsUnique from atst.utils.localization import translate class EditEnvironmentForm(BaseForm): + id = HiddenField() name = StringField( label=translate("forms.environments.name_label"), validators=[Required()] ) diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py index e12a66f9..8378bcb2 100644 --- a/atst/routes/applications/settings.py +++ b/atst/routes/applications/settings.py @@ -13,13 +13,20 @@ from atst.models.permissions import Permissions from atst.utils.flash import formatted_flash as flash -def get_environments_obj_for_app(application): +def get_environments_obj_for_app(application, form=None): environments_obj = [] for env in application.environments: + edit_form = None + + if form == None or form.data["id"] != env.id: + edit_form = EditEnvironmentForm(obj=env) + else: + edit_form = form + env_data = { "id": env.id, "name": env.name, - "edit_form": EditEnvironmentForm(obj=env), + "edit_form": edit_form, "members_form": EnvironmentRolesForm(data=data_for_env_members_form(env)), "members": sort_env_users_by_role(env), } @@ -85,21 +92,35 @@ def update_environment(environment_id): environment = Environments.get(environment_id) application = environment.application - form = EditEnvironmentForm(formdata=http_request.form) + env_form = EditEnvironmentForm(obj=environment, formdata=http_request.form) - if form.validate(): - Environments.update(environment=environment, name=form.name.data) + if env_form.validate(): + Environments.update(environment=environment, name=env_form.name.data) - flash("application_environments_updated") + flash("application_environments_updated") - return redirect( - url_for( - "applications.settings", - application_id=application.id, - fragment="application-environments", - _anchor="application-environments", + return redirect( + url_for( + "applications.settings", + application_id=application.id, + fragment="application-environments", + _anchor="application-environments", + ) + ) + else: + return ( + render_template( + "portfolios/applications/settings.html", + application=application, + form=ApplicationForm( + name=application.name, description=application.description + ), + environments_obj=get_environments_obj_for_app( + application=application, form=env_form + ), + ), + 400, ) - ) @applications_bp.route("/applications//edit", methods=["POST"]) diff --git a/js/components/toggler.js b/js/components/toggler.js index ff3d55c5..d61b594c 100644 --- a/js/components/toggler.js +++ b/js/components/toggler.js @@ -6,13 +6,17 @@ export default { mixins: [FormMixin], + props: { + initialSelectedSection: String, + }, + components: { textinput, }, data: function() { return { - selectedSection: null, + selectedSection: this.initialSelectedSection, } }, diff --git a/templates/fragments/applications/edit_environments.html b/templates/fragments/applications/edit_environments.html index cd27c2d3..53412825 100644 --- a/templates/fragments/applications/edit_environments.html +++ b/templates/fragments/applications/edit_environments.html @@ -48,11 +48,12 @@