Merge pull request #852 from dod-ccpo/portfolio-landing

/home no longer redirects and has add portfolio button
This commit is contained in:
George Drummond 2019-05-30 11:11:57 -04:00 committed by GitHub
commit f6698b3880
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 85 deletions

View File

@ -58,34 +58,7 @@ def helpdocs(doc=None):
@bp.route("/home") @bp.route("/home")
def home(): def home():
user = g.current_user return render_template("home.html")
num_portfolios = len([role for role in user.portfolio_roles if role.is_active])
if num_portfolios == 0:
return redirect(url_for("portfolios.portfolios"))
elif num_portfolios == 1:
portfolio_role = user.portfolio_roles[0]
portfolio_id = portfolio_role.portfolio.id
is_portfolio_owner = "portfolio_poc" in [
ps.name for ps in portfolio_role.permission_sets
]
if is_portfolio_owner:
return redirect(url_for("portfolios.reports", portfolio_id=portfolio_id))
else:
return redirect(
url_for(
"applications.portfolio_applications", portfolio_id=portfolio_id
)
)
else:
portfolios = Portfolios.for_user(g.current_user)
first_portfolio = sorted(portfolios, key=lambda portfolio: portfolio.name)[0]
return redirect(
url_for(
"applications.portfolio_applications", portfolio_id=first_portfolio.id
)
)
@bp.route("/styleguide") @bp.route("/styleguide")

View File

@ -4,11 +4,11 @@
<main class="usa-section usa-content"> <main class="usa-section usa-content">
<h1>Home</h1> <a href="" class="usa-button-primary">
{{ "home.add_portfolio_button_text" | translate }}
</a>
</main> </main>
{% endblock %} {% endblock %}

View File

@ -1,62 +1,16 @@
import pytest import pytest
from tests.factories import UserFactory, PortfolioFactory from flask import url_for
from atst.domain.portfolios import Portfolios
from atst.models.portfolio_role import Status as PortfolioRoleStatus from tests.factories import UserFactory
from atst.utils.localization import translate
def test_portfolio_owner_with_one_portfolio_redirected_to_reports(client, user_session): def test_home_route(client, user_session):
portfolio = PortfolioFactory.create()
user_session(portfolio.owner)
response = client.get("/home", follow_redirects=False)
assert "/portfolios/{}/reports".format(portfolio.id) in response.location
def test_portfolio_owner_with_more_than_one_portfolio_redirected_to_portfolios(
client, user_session
):
owner = UserFactory.create()
PortfolioFactory.create(owner=owner)
PortfolioFactory.create(owner=owner)
user_session(owner)
response = client.get("/home", follow_redirects=False)
assert "/portfolios" in response.location
def test_non_owner_user_with_one_portfolio_redirected_to_portfolio_applications(
client, user_session
):
user = UserFactory.create() user = UserFactory.create()
portfolio = PortfolioFactory.create()
Portfolios._create_portfolio_role(
user, portfolio, status=PortfolioRoleStatus.ACTIVE
)
user_session(user) user_session(user)
response = client.get("/home", follow_redirects=False)
assert "/portfolios/{}/applications".format(portfolio.id) in response.location response = client.get(url_for("atst.home"))
assert response.status_code == 200
def test_non_owner_user_with_mulitple_portfolios_redirected_to_portfolios( assert translate("home.add_portfolio_button_text").encode("utf8") in response.data
client, user_session
):
user = UserFactory.create()
portfolios = []
for _ in range(3):
portfolio = PortfolioFactory.create()
portfolios.append(portfolio)
role = Portfolios._create_portfolio_role(
user, portfolio, 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

View File

@ -17,6 +17,8 @@ base_public:
header_title: JEDI Cloud header_title: JEDI Cloud
login: Log in login: Log in
title_tag: JEDI Cloud title_tag: JEDI Cloud
home:
add_portfolio_button_text: Add New Portfolio
common: common:
back: Back back: Back
cancel: Cancel cancel: Cancel