diff --git a/atst/routes/__init__.py b/atst/routes/__init__.py index ac05105f..c1acc655 100644 --- a/atst/routes/__init__.py +++ b/atst/routes/__init__.py @@ -13,6 +13,7 @@ from atst.domain.authnid import AuthenticationContext from atst.domain.audit_log import AuditLog from atst.domain.auth import logout as _logout from atst.domain.common import Paginator +from atst.domain.portfolios import Portfolios from atst.utils.flash import formatted_flash as flash @@ -52,16 +53,16 @@ def home(): if user.atat_role_name == "ccpo": 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: return redirect(url_for("requests.requests_index")) elif num_portfolios == 1: portfolio_role = user.portfolio_roles[0] 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( url_for("portfolios.portfolio_reports", portfolio_id=portfolio_id) ) @@ -70,7 +71,13 @@ def home(): url_for("portfolios.portfolio_applications", portfolio_id=portfolio_id) ) 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") diff --git a/tests/routes/test_home.py b/tests/routes/test_home.py index 25c7fc4d..b2dd8d95 100644 --- a/tests/routes/test_home.py +++ b/tests/routes/test_home.py @@ -2,6 +2,7 @@ import pytest from tests.factories import UserFactory, PortfolioFactory, RequestFactory 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): @@ -32,7 +33,9 @@ def test_non_owner_user_with_one_portfolio_redirected_to_portfolio_applications( ): user = UserFactory.create() portfolio = PortfolioFactory.create() - Portfolios._create_portfolio_role(user, portfolio, "developer") + Portfolios._create_portfolio_role( + user, portfolio, "developer", status=PortfolioRoleStatus.ACTIVE + ) user_session(user) 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 ): user = UserFactory.create() + portfolios = [] for _ in range(3): 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) response = client.get("/home", follow_redirects=False) + alphabetically_first_portfolio = sorted(portfolios, key=lambda p: p.name)[0] assert "/portfolios" in response.location + assert str(alphabetically_first_portfolio.id) in response.location @pytest.mark.skip(reason="this may no longer be accurate")