diff --git a/atst/routes/portfolios/task_orders.py b/atst/routes/portfolios/task_orders.py
index f9ef106f..d5278ec6 100644
--- a/atst/routes/portfolios/task_orders.py
+++ b/atst/routes/portfolios/task_orders.py
@@ -68,6 +68,7 @@ def view_task_order(portfolio_id, task_order_id):
portfolio=portfolio,
task_order=task_order,
all_sections_complete=completed,
+ user=g.current_user,
)
@@ -75,6 +76,7 @@ def view_task_order(portfolio_id, task_order_id):
def ko_review(portfolio_id, task_order_id):
task_order = TaskOrders.get(g.current_user, task_order_id)
portfolio = Portfolios.get(g.current_user, portfolio_id)
+
Authorization.check_is_ko(g.current_user, task_order)
return render_template(
"/portfolios/task_orders/review.html",
@@ -89,9 +91,10 @@ def ko_review(portfolio_id, task_order_id):
)
def submit_ko_review(portfolio_id, task_order_id, form=None):
task_order = TaskOrders.get(g.current_user, task_order_id)
- Authorization.check_is_ko(g.current_user, task_order)
- form = KOReviewForm(http_request.form)
+ form_data = {**http_request.form, **http_request.files}
+ form = KOReviewForm(form_data)
+ Authorization.check_is_ko(g.current_user, task_order)
if form.validate():
TaskOrders.update(user=g.current_user, task_order=task_order, **form.data)
return redirect(
diff --git a/templates/portfolios/task_orders/show.html b/templates/portfolios/task_orders/show.html
index a75a1836..54787e00 100644
--- a/templates/portfolios/task_orders/show.html
+++ b/templates/portfolios/task_orders/show.html
@@ -92,8 +92,17 @@
link_text="edit",
complete=all_sections_complete) %}
+ {% if user == task_order.contracting_officer %}
+ {% set url=url_for("portfolios.ko_review", portfolio_id=portfolio.id, task_order_id=task_order.id) %}
+ {% elif user == task_order.creator or user == task_order.contracting_officer_representative %}
+ {% set url = url_for("task_orders.new", screen=1, task_order_id=task_order.id) %}
+ {% else %}
+ {% set url = url_for("portfolios.ko_review", portfolio_id=portfolio.id, task_order_id=task_order.id) %}
+ {% endif %}
+
creator: {{task_order.creator.full_name}}
+
cor: {{task_order.contracting_officer_representative.full_name}}
Edit
diff --git a/tests/routes/portfolios/test_task_orders.py b/tests/routes/portfolios/test_task_orders.py
index 48d4aa21..0501d9a6 100644
--- a/tests/routes/portfolios/test_task_orders.py
+++ b/tests/routes/portfolios/test_task_orders.py
@@ -172,3 +172,33 @@ def test_ko_can_view_ko_review_page(client, user_session):
)
)
assert response.status_code == 200
+
+
+def test_mo_redirected_to_build_page(client, user_session):
+ portfolio = PortfolioFactory.create()
+ user_session(portfolio.owner)
+ task_order = TaskOrderFactory.create(portfolio=portfolio)
+
+ response = client.get(
+ url_for("task_orders.new", screen=1, task_order_id=task_order.id)
+ )
+ assert response.status_code == 200
+
+
+def test_cor_redirected_to_build_page(client, user_session):
+ portfolio = PortfolioFactory.create()
+ cor = UserFactory.create()
+ PortfolioRoleFactory.create(
+ role=Roles.get("officer"),
+ portfolio=portfolio,
+ user=cor,
+ status=PortfolioStatus.ACTIVE,
+ )
+ task_order = TaskOrderFactory.create(
+ portfolio=portfolio, contracting_officer_representative=cor
+ )
+ user_session(cor)
+ response = client.get(
+ url_for("task_orders.new", screen=1, task_order_id=task_order.id)
+ )
+ assert response.status_code == 200