Manage invitations should be inactive until user has completed TO flow
This commit is contained in:
parent
f0099a2e4a
commit
ff1379a3ff
@ -113,12 +113,22 @@ def task_order_invitations(portfolio_id, task_order_id):
|
|||||||
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
||||||
task_order = TaskOrders.get(g.current_user, task_order_id)
|
task_order = TaskOrders.get(g.current_user, task_order_id)
|
||||||
form = EditTaskOrderOfficersForm(obj=task_order)
|
form = EditTaskOrderOfficersForm(obj=task_order)
|
||||||
|
|
||||||
|
if TaskOrders.all_sections_complete(task_order):
|
||||||
return render_template(
|
return render_template(
|
||||||
"portfolios/task_orders/invitations.html",
|
"portfolios/task_orders/invitations.html",
|
||||||
portfolio=portfolio,
|
portfolio=portfolio,
|
||||||
task_order=task_order,
|
task_order=task_order,
|
||||||
form=form,
|
form=form,
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
return redirect(
|
||||||
|
url_for(
|
||||||
|
"portfolios.view_task_order",
|
||||||
|
task_order_id=task_order.id,
|
||||||
|
portfolio_id=portfolio.id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@portfolios_bp.route(
|
@portfolios_bp.route(
|
||||||
|
@ -203,10 +203,12 @@
|
|||||||
<div class="panel__content">
|
<div class="panel__content">
|
||||||
<div class="task-order-invitations__heading row">
|
<div class="task-order-invitations__heading row">
|
||||||
<h3>Invitations</h3>
|
<h3>Invitations</h3>
|
||||||
|
{% 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">
|
<a href="{{ url_for('portfolios.task_order_invitations', portfolio_id=portfolio.id, task_order_id=task_order.id) }}" class="icon-link">
|
||||||
<span>manage</span>
|
<span>{{ "common.manage" | translate }}</span>
|
||||||
{{ Icon("edit") }}
|
{{ Icon("edit") }}
|
||||||
</a>
|
</a>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{{ InvitationStatus('Contracting Officer', task_order.contracting_officer, officer_info=task_order.officer_dictionary('contracting_officer')) }}
|
{{ 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')) }}
|
{{ InvitationStatus('Contracting Officer Representative', task_order.contracting_officer_representative, officer_info=task_order.officer_dictionary('contracting_officer_representative')) }}
|
||||||
|
@ -5,6 +5,7 @@ from datetime import timedelta, date
|
|||||||
from atst.domain.roles import Roles
|
from atst.domain.roles import Roles
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
from atst.models.portfolio_role import Status as PortfolioStatus
|
from atst.models.portfolio_role import Status as PortfolioStatus
|
||||||
|
from atst.utils.localization import translate
|
||||||
|
|
||||||
from tests.factories import (
|
from tests.factories import (
|
||||||
PortfolioFactory,
|
PortfolioFactory,
|
||||||
@ -178,6 +179,7 @@ def test_ko_can_view_task_order(client, user_session):
|
|||||||
)
|
)
|
||||||
task_order = TaskOrderFactory.create(portfolio=portfolio, contracting_officer=ko)
|
task_order = TaskOrderFactory.create(portfolio=portfolio, contracting_officer=ko)
|
||||||
user_session(ko)
|
user_session(ko)
|
||||||
|
|
||||||
response = client.get(
|
response = client.get(
|
||||||
url_for(
|
url_for(
|
||||||
"portfolios.view_task_order",
|
"portfolios.view_task_order",
|
||||||
@ -186,9 +188,21 @@ def test_ko_can_view_task_order(client, user_session):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
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()
|
portfolio = PortfolioFactory.create()
|
||||||
user_session(portfolio.owner)
|
user_session(portfolio.owner)
|
||||||
task_order = TaskOrderFactory.create(portfolio=portfolio)
|
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
|
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):
|
def test_ko_can_view_ko_review_page(client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
ko = UserFactory.create()
|
ko = UserFactory.create()
|
||||||
|
@ -20,6 +20,7 @@ base_public:
|
|||||||
title_tag: JEDI Cloud
|
title_tag: JEDI Cloud
|
||||||
common:
|
common:
|
||||||
back: Back
|
back: Back
|
||||||
|
manage: manage
|
||||||
save_and_continue: Save & Continue
|
save_and_continue: Save & Continue
|
||||||
sign: Sign
|
sign: Sign
|
||||||
components:
|
components:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user