Get error state in edit environment name form working
This commit is contained in:
parent
2f75d3b245
commit
430a6493f0
@ -1,11 +1,12 @@
|
|||||||
from .forms import BaseForm
|
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 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 EditEnvironmentForm(BaseForm):
|
class EditEnvironmentForm(BaseForm):
|
||||||
|
id = HiddenField()
|
||||||
name = StringField(
|
name = StringField(
|
||||||
label=translate("forms.environments.name_label"), validators=[Required()]
|
label=translate("forms.environments.name_label"), validators=[Required()]
|
||||||
)
|
)
|
||||||
|
@ -13,13 +13,20 @@ from atst.models.permissions import Permissions
|
|||||||
from atst.utils.flash import formatted_flash as flash
|
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 = []
|
environments_obj = []
|
||||||
for env in application.environments:
|
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 = {
|
env_data = {
|
||||||
"id": env.id,
|
"id": env.id,
|
||||||
"name": env.name,
|
"name": env.name,
|
||||||
"edit_form": EditEnvironmentForm(obj=env),
|
"edit_form": edit_form,
|
||||||
"members_form": EnvironmentRolesForm(data=data_for_env_members_form(env)),
|
"members_form": EnvironmentRolesForm(data=data_for_env_members_form(env)),
|
||||||
"members": sort_env_users_by_role(env),
|
"members": sort_env_users_by_role(env),
|
||||||
}
|
}
|
||||||
@ -85,10 +92,10 @@ def update_environment(environment_id):
|
|||||||
environment = Environments.get(environment_id)
|
environment = Environments.get(environment_id)
|
||||||
application = environment.application
|
application = environment.application
|
||||||
|
|
||||||
form = EditEnvironmentForm(formdata=http_request.form)
|
env_form = EditEnvironmentForm(obj=environment, formdata=http_request.form)
|
||||||
|
|
||||||
if form.validate():
|
if env_form.validate():
|
||||||
Environments.update(environment=environment, name=form.name.data)
|
Environments.update(environment=environment, name=env_form.name.data)
|
||||||
|
|
||||||
flash("application_environments_updated")
|
flash("application_environments_updated")
|
||||||
|
|
||||||
@ -100,6 +107,20 @@ def update_environment(environment_id):
|
|||||||
_anchor="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/<application_id>/edit", methods=["POST"])
|
@applications_bp.route("/applications/<application_id>/edit", methods=["POST"])
|
||||||
|
@ -6,13 +6,17 @@ export default {
|
|||||||
|
|
||||||
mixins: [FormMixin],
|
mixins: [FormMixin],
|
||||||
|
|
||||||
|
props: {
|
||||||
|
initialSelectedSection: String,
|
||||||
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
textinput,
|
textinput,
|
||||||
},
|
},
|
||||||
|
|
||||||
data: function() {
|
data: function() {
|
||||||
return {
|
return {
|
||||||
selectedSection: null,
|
selectedSection: this.initialSelectedSection,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -48,11 +48,12 @@
|
|||||||
|
|
||||||
<ul class="accordion-table__items">
|
<ul class="accordion-table__items">
|
||||||
{% for env in environments_obj %}
|
{% for env in environments_obj %}
|
||||||
|
{% set edit_form = env['edit_form'] %}
|
||||||
{% set member_count = env['members_form'].data['team_roles'] | length %}
|
{% set member_count = env['members_form'].data['team_roles'] | length %}
|
||||||
{% set members_by_role = env['members'] %}
|
{% set members_by_role = env['members'] %}
|
||||||
{% set unassigned = members_by_role['no_access'] %}
|
{% set unassigned = members_by_role['no_access'] %}
|
||||||
|
|
||||||
<toggler inline-template>
|
<toggler inline-template {% if edit_form.errors %}initial-selected-section="edit"{% endif %}>
|
||||||
<li class="accordion-table__item">
|
<li class="accordion-table__item">
|
||||||
<div class="accordion-table__item-content row">
|
<div class="accordion-table__item-content row">
|
||||||
<div class="col col--grow">
|
<div class="col col--grow">
|
||||||
@ -107,10 +108,9 @@
|
|||||||
{% call ToggleSection(section_name="edit") %}
|
{% call ToggleSection(section_name="edit") %}
|
||||||
<ul>
|
<ul>
|
||||||
<li class="accordion-table__item__expanded">
|
<li class="accordion-table__item__expanded">
|
||||||
{% set edit_form = env['edit_form'] %}
|
<form action="{{ url_for('applications.update_environment', environment_id=env['id'], fragment='application-environments', _anchor='application-environments') }}" method="post">
|
||||||
<form action="{{ url_for('applications.update_environment', environment_id=env['id']) }}" method="post">
|
|
||||||
{{ edit_form.csrf_token }}
|
{{ edit_form.csrf_token }}
|
||||||
{{ TextInput(edit_form.name) }}
|
{{ TextInput(edit_form.name, validation='requiredField') }}
|
||||||
{{
|
{{
|
||||||
SaveButton(
|
SaveButton(
|
||||||
text=("portfolios.applications.update_button_text" | translate)
|
text=("portfolios.applications.update_button_text" | translate)
|
||||||
|
@ -27,7 +27,7 @@ from atst.forms.app_settings import EnvironmentRolesForm
|
|||||||
from tests.utils import captured_templates
|
from tests.utils import captured_templates
|
||||||
|
|
||||||
|
|
||||||
def test_updating_application_environments(client, user_session):
|
def test_updating_application_environments_success(client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
application = ApplicationFactory.create(portfolio=portfolio)
|
application = ApplicationFactory.create(portfolio=portfolio)
|
||||||
environment = EnvironmentFactory.create(application=application)
|
environment = EnvironmentFactory.create(application=application)
|
||||||
@ -52,6 +52,26 @@ def test_updating_application_environments(client, user_session):
|
|||||||
assert environment.name == "new name a"
|
assert environment.name == "new name a"
|
||||||
|
|
||||||
|
|
||||||
|
def test_updating_application_environments_failure(client, user_session):
|
||||||
|
portfolio = PortfolioFactory.create()
|
||||||
|
application = ApplicationFactory.create(portfolio=portfolio)
|
||||||
|
environment = EnvironmentFactory.create(
|
||||||
|
application=application, name="original name"
|
||||||
|
)
|
||||||
|
|
||||||
|
user_session(portfolio.owner)
|
||||||
|
|
||||||
|
form_data = {"name": ""}
|
||||||
|
|
||||||
|
response = client.post(
|
||||||
|
url_for("applications.update_environment", environment_id=environment.id),
|
||||||
|
data=form_data,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 400
|
||||||
|
assert environment.name == "original name"
|
||||||
|
|
||||||
|
|
||||||
def test_application_settings(client, user_session):
|
def test_application_settings(client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user