Redirect to first portfolio instead of list of portfolios after login
This commit is contained in:
parent
53f36e827f
commit
035514388e
@ -13,6 +13,7 @@ from atst.domain.authnid import AuthenticationContext
|
|||||||
from atst.domain.audit_log import AuditLog
|
from atst.domain.audit_log import AuditLog
|
||||||
from atst.domain.auth import logout as _logout
|
from atst.domain.auth import logout as _logout
|
||||||
from atst.domain.common import Paginator
|
from atst.domain.common import Paginator
|
||||||
|
from atst.domain.portfolios import Portfolios
|
||||||
from atst.utils.flash import formatted_flash as flash
|
from atst.utils.flash import formatted_flash as flash
|
||||||
|
|
||||||
|
|
||||||
@ -52,16 +53,16 @@ def home():
|
|||||||
if user.atat_role_name == "ccpo":
|
if user.atat_role_name == "ccpo":
|
||||||
return redirect(url_for("requests.requests_index"))
|
return redirect(url_for("requests.requests_index"))
|
||||||
|
|
||||||
num_portfolios = len(user.portfolio_roles)
|
num_portfolios = len([role for role in user.portfolio_roles if role.is_active])
|
||||||
|
|
||||||
if num_portfolios == 0:
|
if num_portfolios == 0:
|
||||||
return redirect(url_for("requests.requests_index"))
|
return redirect(url_for("requests.requests_index"))
|
||||||
elif num_portfolios == 1:
|
elif num_portfolios == 1:
|
||||||
portfolio_role = user.portfolio_roles[0]
|
portfolio_role = user.portfolio_roles[0]
|
||||||
portfolio_id = portfolio_role.portfolio.id
|
portfolio_id = portfolio_role.portfolio.id
|
||||||
is_request_owner = portfolio_role.role.name == "owner"
|
is_portfolio_owner = portfolio_role.role.name == "owner"
|
||||||
|
|
||||||
if is_request_owner:
|
if is_portfolio_owner:
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for("portfolios.portfolio_reports", portfolio_id=portfolio_id)
|
url_for("portfolios.portfolio_reports", portfolio_id=portfolio_id)
|
||||||
)
|
)
|
||||||
@ -70,7 +71,13 @@ def home():
|
|||||||
url_for("portfolios.portfolio_applications", portfolio_id=portfolio_id)
|
url_for("portfolios.portfolio_applications", portfolio_id=portfolio_id)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return redirect(url_for("portfolios.portfolios"))
|
portfolios = Portfolios.for_user(g.current_user)
|
||||||
|
first_portfolio = sorted(portfolios, key=lambda portfolio: portfolio.name)[0]
|
||||||
|
return redirect(
|
||||||
|
url_for(
|
||||||
|
"portfolios.portfolio_applications", portfolio_id=first_portfolio.id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/styleguide")
|
@bp.route("/styleguide")
|
||||||
|
@ -2,6 +2,7 @@ import pytest
|
|||||||
|
|
||||||
from tests.factories import UserFactory, PortfolioFactory, RequestFactory
|
from tests.factories import UserFactory, PortfolioFactory, RequestFactory
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
|
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||||
|
|
||||||
|
|
||||||
def test_request_owner_with_one_portfolio_redirected_to_reports(client, user_session):
|
def test_request_owner_with_one_portfolio_redirected_to_reports(client, user_session):
|
||||||
@ -32,7 +33,9 @@ def test_non_owner_user_with_one_portfolio_redirected_to_portfolio_applications(
|
|||||||
):
|
):
|
||||||
user = UserFactory.create()
|
user = UserFactory.create()
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
Portfolios._create_portfolio_role(user, portfolio, "developer")
|
Portfolios._create_portfolio_role(
|
||||||
|
user, portfolio, "developer", status=PortfolioRoleStatus.ACTIVE
|
||||||
|
)
|
||||||
|
|
||||||
user_session(user)
|
user_session(user)
|
||||||
response = client.get("/home", follow_redirects=False)
|
response = client.get("/home", follow_redirects=False)
|
||||||
@ -44,14 +47,20 @@ def test_non_owner_user_with_mulitple_portfolios_redirected_to_portfolios(
|
|||||||
client, user_session
|
client, user_session
|
||||||
):
|
):
|
||||||
user = UserFactory.create()
|
user = UserFactory.create()
|
||||||
|
portfolios = []
|
||||||
for _ in range(3):
|
for _ in range(3):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
Portfolios._create_portfolio_role(user, portfolio, "developer")
|
portfolios.append(portfolio)
|
||||||
|
role = Portfolios._create_portfolio_role(
|
||||||
|
user, portfolio, "developer", status=PortfolioRoleStatus.ACTIVE
|
||||||
|
)
|
||||||
|
|
||||||
user_session(user)
|
user_session(user)
|
||||||
response = client.get("/home", follow_redirects=False)
|
response = client.get("/home", follow_redirects=False)
|
||||||
|
|
||||||
|
alphabetically_first_portfolio = sorted(portfolios, key=lambda p: p.name)[0]
|
||||||
assert "/portfolios" in response.location
|
assert "/portfolios" in response.location
|
||||||
|
assert str(alphabetically_first_portfolio.id) in response.location
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip(reason="this may no longer be accurate")
|
@pytest.mark.skip(reason="this may no longer be accurate")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user