Blank slate for no portfolios
This commit is contained in:
parent
20d1ffecd9
commit
edc0c6539c
@ -15,7 +15,11 @@ from atst.models.permissions import Permissions
|
|||||||
@portfolios_bp.route("/portfolios")
|
@portfolios_bp.route("/portfolios")
|
||||||
def portfolios():
|
def portfolios():
|
||||||
portfolios = Portfolios.for_user(g.current_user)
|
portfolios = Portfolios.for_user(g.current_user)
|
||||||
|
|
||||||
|
if portfolios:
|
||||||
return render_template("portfolios/index.html", page=5, portfolios=portfolios)
|
return render_template("portfolios/index.html", page=5, portfolios=portfolios)
|
||||||
|
else:
|
||||||
|
return render_template("portfolios/blank_slate.html")
|
||||||
|
|
||||||
|
|
||||||
@portfolios_bp.route("/portfolios/<portfolio_id>/edit")
|
@portfolios_bp.route("/portfolios/<portfolio_id>/edit")
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
@mixin hide {
|
@mixin hide {
|
||||||
border: 0;
|
border: 0;
|
||||||
clip: rect(0 0 0 0);
|
clip: rect(0 0 0 0);
|
||||||
|
28
templates/portfolios/blank_slate.html
Normal file
28
templates/portfolios/blank_slate.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{% 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),
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
|
||||||
|
<div class="center">
|
||||||
|
{{
|
||||||
|
Tooltip(
|
||||||
|
message=("portfolios.index.empty.help_message" | translate),
|
||||||
|
title=("portfolios.index.empty.help_title" | translate),
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
from flask import url_for
|
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):
|
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 response.status_code == 200
|
||||||
assert portfolio.name == "a cool new name"
|
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
|
||||||
|
)
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
# `{{ "login.title" | translate | safe }}`
|
# `{{ "login.title" | translate | safe }}`
|
||||||
|
|
||||||
|
|
||||||
audit_log:
|
audit_log:
|
||||||
events:
|
events:
|
||||||
default:
|
default:
|
||||||
@ -481,6 +480,12 @@ task_orders:
|
|||||||
submitted_by: Below is an overview of the projected portfolio submitted by {name}
|
submitted_by: Below is an overview of the projected portfolio submitted by {name}
|
||||||
task_order_information: Task Order Information
|
task_order_information: Task Order Information
|
||||||
portfolios:
|
portfolios:
|
||||||
|
index:
|
||||||
|
empty:
|
||||||
|
title: You have no apps yet
|
||||||
|
help_title: Should I do this?
|
||||||
|
help_message: TODO
|
||||||
|
start_button: Start a New JEDI Portfolio
|
||||||
applications:
|
applications:
|
||||||
add_application_text: Add A New Application
|
add_application_text: Add A New Application
|
||||||
app_settings_text: App Settings
|
app_settings_text: App Settings
|
||||||
|
Loading…
x
Reference in New Issue
Block a user