Merge pull request #654 from dod-ccpo/draft-review-alert

Draft review alert
This commit is contained in:
George Drummond 2019-02-18 10:51:42 -05:00 committed by GitHub
commit cd2fd99b4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 48 additions and 8 deletions

View File

@ -12,6 +12,7 @@ from flask import (
from . import task_orders_bp
from atst.domain.task_orders import TaskOrders
from atst.domain.portfolios import Portfolios
from atst.utils.flash import formatted_flash as flash
import atst.forms.task_order as task_order_form
@ -200,6 +201,12 @@ def get_started():
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new/<int:screen>")
def new(screen, task_order_id=None, portfolio_id=None):
workflow = ShowTaskOrderWorkflow(g.current_user, screen, task_order_id)
if task_order_id and screen is 4:
task_order = TaskOrders.get(g.current_user, task_order_id)
if not TaskOrders.all_sections_complete(task_order):
flash("task_order_draft")
return render_template(
workflow.template,
current=screen,

View File

@ -1,6 +1,14 @@
from flask import flash, render_template_string
from atst.utils.localization import translate
MESSAGES = {
"task_order_draft": {
"title_template": translate("task_orders.form.draft_alert_title"),
"message_template": """
<p>Please complete your Task Order before submitting it for approval.</p>
""",
"category": "warning",
},
"task_order_signed": {
"title_template": "Task Order Signed",
"message_template": """

View File

@ -4,6 +4,7 @@ from flask import url_for
from atst.domain.task_orders import TaskOrders
from atst.models.attachment import Attachment
from atst.routes.task_orders.new import ShowTaskOrderWorkflow, UpdateTaskOrderWorkflow
from atst.utils.localization import translate
from tests.factories import UserFactory, TaskOrderFactory, PortfolioFactory
@ -101,9 +102,8 @@ def test_create_new_task_order_for_portfolio(client, user_session):
assert created_task_order.portfolio == portfolio
def test_task_order_form_shows_errors(client, user_session):
to = task_order()
creator = to.creator
def test_task_order_form_shows_errors(client, user_session, task_order):
creator = task_order.creator
user_session(creator)
task_order_data = TaskOrderFactory.dictionary()
@ -112,7 +112,7 @@ def test_task_order_form_shows_errors(client, user_session):
funding_data.update({"clin_01": "one milllllion dollars"})
response = client.post(
url_for("task_orders.update", screen=2, task_order_id=to.id),
url_for("task_orders.update", screen=2, task_order_id=task_order.id),
data=funding_data,
follow_redirects=False,
)
@ -122,9 +122,8 @@ def test_task_order_form_shows_errors(client, user_session):
assert "Not a valid decimal" in body
def test_task_order_validates_email_address(client, user_session):
to = task_order()
creator = to.creator
def test_task_order_validates_email_address(client, user_session, task_order):
creator = task_order.creator
user_session(creator)
task_order_data = TaskOrderFactory.dictionary()
@ -132,7 +131,7 @@ def test_task_order_validates_email_address(client, user_session):
oversight_data.update({"ko_email": "not an email"})
response = client.post(
url_for("task_orders.update", screen=3, task_order_id=to.id),
url_for("task_orders.update", screen=3, task_order_id=task_order.id),
data=oversight_data,
follow_redirects=False,
)
@ -142,6 +141,29 @@ def test_task_order_validates_email_address(client, user_session):
assert "Invalid email" in body
def test_review_screen_when_all_sections_complete(client, user_session, task_order):
user_session(task_order.creator)
response = client.get(
url_for("task_orders.new", screen=4, task_order_id=task_order.id)
)
body = response.data.decode()
assert translate("task_orders.form.draft_alert_title") not in body
assert response.status_code == 200
def test_review_screen_when_not_all_sections_complete(client, user_session, task_order):
TaskOrders.update(task_order.creator, task_order, clin_01=None)
user_session(task_order.creator)
response = client.get(
url_for("task_orders.new", screen=4, task_order_id=task_order.id)
)
body = response.data.decode()
assert translate("task_orders.form.draft_alert_title") in body
assert response.status_code == 200
@pytest.fixture
def task_order():
user = UserFactory.create()
@ -242,4 +264,5 @@ def test_review_task_order_form(client, user_session, task_order):
response = client.get(
url_for("task_orders.new", screen=idx + 1, task_order_id=task_order.id)
)
assert response.status_code == 200

View File

@ -402,6 +402,8 @@ requests:
questions_title_text: Questions related to JEDI Cloud migration
rationalization_software_systems_tooltip: Rationalization is the DoD process to determine whether the application should move to the cloud.
task_orders:
form:
draft_alert_title: Your draft has been saved
sign:
digital_signature_description: I acknowledge that I have read and fully understand the DoD CCPO JEDI agreements and completed all the necessary steps, as detailed in the FAR (Federal Acquisition Regulation).
digital_signature_label: Digital Signature