Standardize token argument in routes.

- `token` becomes `portfolio_token` in routes.
- Find relevant portfolio from token in `before_request` hook, like
  other routes.
This commit is contained in:
dandds
2019-05-06 10:01:28 -04:00
parent 42b912d4cb
commit 3c1f4ac6df
6 changed files with 63 additions and 40 deletions

View File

@@ -5,7 +5,14 @@ from sqlalchemy.orm.exc import NoResultFound
from atst.database import db
from atst.domain.authz import Authorization
from atst.models import Application, Environment, Portfolio, TaskOrder
from atst.models import (
Application,
Environment,
Portfolio,
PortfolioInvitation,
PortfolioRole,
TaskOrder,
)
from atst.models.permissions import Permissions
from atst.domain.portfolios.scopes import ScopedPortfolio
@@ -13,7 +20,18 @@ from atst.domain.portfolios.scopes import ScopedPortfolio
def get_resources_from_context(view_args):
query = None
if "portfolio_id" in view_args:
if "portfolio_token" in view_args:
query = (
db.session.query(Portfolio)
.join(PortfolioRole, PortfolioRole.portfolio_id == Portfolio.id)
.join(
PortfolioInvitation,
PortfolioInvitation.portfolio_role_id == PortfolioRole.id,
)
.filter(PortfolioInvitation.token == view_args["portfolio_token"])
)
elif "portfolio_id" in view_args:
query = db.session.query(Portfolio).filter(
Portfolio.id == view_args["portfolio_id"]
)