Manage invitations should be inactive until user has completed TO flow

This commit is contained in:
George Drummond 2019-02-19 10:16:38 -05:00
parent f0099a2e4a
commit ff1379a3ff
No known key found for this signature in database
GPG Key ID: 296DD6077123BF17
4 changed files with 59 additions and 11 deletions

View File

@ -113,12 +113,22 @@ def task_order_invitations(portfolio_id, task_order_id):
portfolio = Portfolios.get(g.current_user, portfolio_id)
task_order = TaskOrders.get(g.current_user, task_order_id)
form = EditTaskOrderOfficersForm(obj=task_order)
return render_template(
"portfolios/task_orders/invitations.html",
portfolio=portfolio,
task_order=task_order,
form=form,
)
if TaskOrders.all_sections_complete(task_order):
return render_template(
"portfolios/task_orders/invitations.html",
portfolio=portfolio,
task_order=task_order,
form=form,
)
else:
return redirect(
url_for(
"portfolios.view_task_order",
task_order_id=task_order.id,
portfolio_id=portfolio.id,
)
)
@portfolios_bp.route(

View File

@ -203,10 +203,12 @@
<div class="panel__content">
<div class="task-order-invitations__heading row">
<h3>Invitations</h3>
<a href="{{ url_for('portfolios.task_order_invitations', portfolio_id=portfolio.id, task_order_id=task_order.id) }}" class="icon-link">
<span>manage</span>
{{ Icon("edit") }}
</a>
{% if all_sections_complete %}
<a href="{{ url_for('portfolios.task_order_invitations', portfolio_id=portfolio.id, task_order_id=task_order.id) }}" class="icon-link">
<span>{{ "common.manage" | translate }}</span>
{{ Icon("edit") }}
</a>
{% endif %}
</div>
{{ InvitationStatus('Contracting Officer', task_order.contracting_officer, officer_info=task_order.officer_dictionary('contracting_officer')) }}
{{ InvitationStatus('Contracting Officer Representative', task_order.contracting_officer_representative, officer_info=task_order.officer_dictionary('contracting_officer_representative')) }}

View File

@ -5,6 +5,7 @@ from datetime import timedelta, date
from atst.domain.roles import Roles
from atst.domain.task_orders import TaskOrders
from atst.models.portfolio_role import Status as PortfolioStatus
from atst.utils.localization import translate
from tests.factories import (
PortfolioFactory,
@ -178,6 +179,7 @@ def test_ko_can_view_task_order(client, user_session):
)
task_order = TaskOrderFactory.create(portfolio=portfolio, contracting_officer=ko)
user_session(ko)
response = client.get(
url_for(
"portfolios.view_task_order",
@ -186,9 +188,21 @@ def test_ko_can_view_task_order(client, user_session):
)
)
assert response.status_code == 200
assert translate("common.manage") in response.data.decode()
TaskOrders.update(ko, task_order, clin_01=None)
response = client.get(
url_for(
"portfolios.view_task_order",
portfolio_id=portfolio.id,
task_order_id=task_order.id,
)
)
assert response.status_code == 200
assert translate("common.manage") not in response.data.decode()
def test_can_view_task_order_invitations(client, user_session):
def test_can_view_task_order_invitations_when_complete(client, user_session):
portfolio = PortfolioFactory.create()
user_session(portfolio.owner)
task_order = TaskOrderFactory.create(portfolio=portfolio)
@ -202,6 +216,27 @@ def test_can_view_task_order_invitations(client, user_session):
assert response.status_code == 200
def test_cant_view_task_order_invitations_when_not_complete(client, user_session):
portfolio = PortfolioFactory.create()
user_session(portfolio.owner)
task_order = TaskOrderFactory.create(portfolio=portfolio, clin_01=None)
response = client.get(
url_for(
"portfolios.task_order_invitations",
portfolio_id=portfolio.id,
task_order_id=task_order.id,
)
)
assert (
url_for(
"portfolios.view_task_order",
task_order_id=task_order.id,
portfolio_id=portfolio.id,
)
in response.location
)
def test_ko_can_view_ko_review_page(client, user_session):
portfolio = PortfolioFactory.create()
ko = UserFactory.create()

View File

@ -20,6 +20,7 @@ base_public:
title_tag: JEDI Cloud
common:
back: Back
manage: manage
save_and_continue: Save & Continue
sign: Sign
components: