diff --git a/atst/routes/portfolios/index.py b/atst/routes/portfolios/index.py index 1d7739e7..2f1a6b12 100644 --- a/atst/routes/portfolios/index.py +++ b/atst/routes/portfolios/index.py @@ -15,7 +15,11 @@ from atst.models.permissions import Permissions @portfolios_bp.route("/portfolios") def portfolios(): portfolios = Portfolios.for_user(g.current_user) - return render_template("portfolios/index.html", page=5, portfolios=portfolios) + + if portfolios: + return render_template("portfolios/index.html", page=5, portfolios=portfolios) + else: + return render_template("portfolios/blank_slate.html") @portfolios_bp.route("/portfolios//edit") diff --git a/templates/portfolios/blank_slate.html b/templates/portfolios/blank_slate.html new file mode 100644 index 00000000..3b45b92c --- /dev/null +++ b/templates/portfolios/blank_slate.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} + +{% from "components/empty_state.html" import EmptyState %} +{% from "components/tooltip.html" import Tooltip %} + +{% block global_sidenav %} +{% endblock %} + +{% block content %} + {{ + EmptyState( + action_href=url_for("task_orders.new", screen=1), + action_label=("portfolios.index.empty.start_button" | translate), + icon="cloud", + message=("portfolios.index.empty.title" | translate), + ) + }} +{% endblock %} + diff --git a/tests/routes/portfolios/test_portfolios_index.py b/tests/routes/portfolios/test_portfolios_index.py index 50f1bbea..5899f307 100644 --- a/tests/routes/portfolios/test_portfolios_index.py +++ b/tests/routes/portfolios/test_portfolios_index.py @@ -1,6 +1,7 @@ from flask import url_for -from tests.factories import PortfolioFactory +from tests.factories import PortfolioFactory, UserFactory +from atst.utils.localization import translate def test_update_portfolio_name(client, user_session): @@ -13,3 +14,29 @@ def test_update_portfolio_name(client, user_session): ) assert response.status_code == 200 assert portfolio.name == "a cool new name" + + +def test_portfolio_index_with_existing_portfolios(client, user_session): + portfolio = PortfolioFactory.create() + user_session(portfolio.owner) + + response = client.get(url_for("portfolios.portfolios")) + + assert response.status_code == 200 + assert portfolio.name.encode("utf8") in response.data + assert ( + translate("portfolios.index.empty.start_button").encode("utf8") + not in response.data + ) + + +def test_portfolio_index_without_existing_portfolios(client, user_session): + user = UserFactory.create() + user_session(user) + + response = client.get(url_for("portfolios.portfolios")) + + assert response.status_code == 200 + assert ( + translate("portfolios.index.empty.start_button").encode("utf8") in response.data + ) diff --git a/translations.yaml b/translations.yaml index 983db1b9..9005fa5a 100644 --- a/translations.yaml +++ b/translations.yaml @@ -7,7 +7,6 @@ # `{{ "login.title" | translate | safe }}` - audit_log: events: default: @@ -482,6 +481,10 @@ task_orders: submitted_by: Below is an overview of the projected portfolio submitted by {name} task_order_information: Task Order Information portfolios: + index: + empty: + title: You have no apps yet + start_button: Start a New JEDI Portfolio applications: add_application_text: Add A New Application app_settings_text: App Settings