Update route to include environment_id

This commit is contained in:
leigh-mil 2019-04-24 16:37:58 -04:00
parent 73e4057c3d
commit 99a3534d03
4 changed files with 23 additions and 10 deletions

View File

@ -7,6 +7,7 @@ from atst.domain.portfolios import Portfolios
from atst.domain.task_orders import TaskOrders from atst.domain.task_orders import TaskOrders
from atst.domain.applications import Applications from atst.domain.applications import Applications
from atst.domain.invitations import Invitations from atst.domain.invitations import Invitations
from atst.domain.environments import Environments
from atst.domain.exceptions import UnauthorizedError from atst.domain.exceptions import UnauthorizedError
@ -31,6 +32,11 @@ def check_access(permission, message, override, *args, **kwargs):
g.current_user, kwargs["portfolio_id"] g.current_user, kwargs["portfolio_id"]
) )
elif "environment_id" in kwargs:
environment = Environments.get(kwargs["environment_id"])
access_args["application"] = environment.application
access_args["portfolio"] = environment.application.portfolio
if override is not None and override(g.current_user, **access_args, **kwargs): if override is not None and override(g.current_user, **access_args, **kwargs):
return True return True

View File

@ -92,18 +92,17 @@ def update(application_id):
) )
@applications_bp.route( @applications_bp.route("/environments/<environment_id>/roles", methods=["POST"])
"/applications/<application_id>/update_env_roles", methods=["POST"] @user_can(Permissions.ASSIGN_ENVIRONMENT_MEMBER, message="update environment roles")
) def update_env_roles(environment_id):
@user_can(Permissions.ASSIGN_ENVIRONMENT_MEMBER, message="update application") environment = Environments.get(environment_id)
def update_env_roles(application_id): application = environment.application
application = Applications.get(application_id)
env_roles_form = EnvironmentRolesForm(http_request.form) env_roles_form = EnvironmentRolesForm(http_request.form)
if env_roles_form.validate(): if env_roles_form.validate():
env_data = env_roles_form.data env_data = env_roles_form.data
Environments.update_env_roles_by_environment( Environments.update_env_roles_by_environment(
environment_id=env_data["env_id"], team_roles=env_data["team_roles"] environment_id=environment_id, team_roles=env_data["team_roles"]
) )
return redirect(url_for("applications.settings", application_id=application.id)) return redirect(url_for("applications.settings", application_id=application.id))
else: else:

View File

@ -5,7 +5,7 @@ from sqlalchemy.orm.exc import NoResultFound
from atst.database import db from atst.database import db
from atst.domain.authz import Authorization from atst.domain.authz import Authorization
from atst.models import Application, Portfolio, TaskOrder from atst.models import Application, Environment, Portfolio, TaskOrder
from atst.models.permissions import Permissions from atst.models.permissions import Permissions
from atst.domain.portfolios.scopes import ScopedPortfolio from atst.domain.portfolios.scopes import ScopedPortfolio
@ -25,6 +25,14 @@ def get_portfolio_from_context(view_args):
.filter(Application.id == view_args["application_id"]) .filter(Application.id == view_args["application_id"])
) )
elif "environment_id" in view_args:
query = (
db.session.query(Portfolio)
.join(Application, Application.portfolio_id == Portfolio.id)
.join(Environment, Environment.application_id == Application.id)
.filter(Environment.id == view_args["environment_id"])
)
elif "task_order_id" in view_args: elif "task_order_id" in view_args:
query = ( query = (
db.session.query(Portfolio) db.session.query(Portfolio)

View File

@ -197,7 +197,7 @@ def test_user_with_permission_can_update_team_env_roles(client, user_session):
user_session(application.portfolio.owner) user_session(application.portfolio.owner)
response = client.post( response = client.post(
url_for("applications.update_env_roles", application_id=application.id), url_for("applications.update_env_roles", environment_id=environment.id),
data=form_data, data=form_data,
follow_redirects=True, follow_redirects=True,
) )
@ -235,7 +235,7 @@ def test_user_without_permission_cannot_update_team_env_roles(client, user_sessi
user_session(app_role_without_perms.user) user_session(app_role_without_perms.user)
response = client.post( response = client.post(
url_for("applications.update_env_roles", application_id=application.id), url_for("applications.update_env_roles", environment_id=environment.id),
data=form_data, data=form_data,
follow_redirects=True, follow_redirects=True,
) )