From 54333db00fd72fe6c14398a4e5e9e209926b0ca8 Mon Sep 17 00:00:00 2001 From: Montana Date: Fri, 18 Jan 2019 12:03:01 -0500 Subject: [PATCH 1/5] wip -- tests for TO creation on screen 2 and 3 --- .../routes/task_orders/test_new_task_order.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/routes/task_orders/test_new_task_order.py b/tests/routes/task_orders/test_new_task_order.py index 53374ed6..c8fcaf75 100644 --- a/tests/routes/task_orders/test_new_task_order.py +++ b/tests/routes/task_orders/test_new_task_order.py @@ -76,6 +76,49 @@ def test_create_new_task_order(client, user_session): ) assert url_for("task_orders.new", screen=4) in response.headers["Location"] +def test_create_new_task_order_on_funding_screen(client, user_session): + creator = UserFactory.create() + user_session(creator) + + task_order_data = TaskOrderFactory.dictionary() + app_info_data = slice_data_for_section(task_order_data, "app_info") + portfolio_name = "Mos Eisley" + app_info_data["portfolio_name"] = portfolio_name + + response = client.post( + url_for("task_orders.update", screen=2), + data=app_info_data, + follow_redirects=False, + ) + assert url_for("task_orders.new", screen=3) in response.headers["Location"] + + created_task_order_id = response.headers["Location"].split("/")[-1] + created_task_order = TaskOrders.get(creator, created_task_order_id) + assert created_task_order.portfolio is not None + assert created_task_order.portfolio.name == portfolio_name + +def test_create_new_task_order_on_oversight_screen(client, user_session): + creator = UserFactory.create() + user_session(creator) + + task_order_data = TaskOrderFactory.dictionary() + app_info_data = slice_data_for_section(task_order_data, "app_info") + portfolio_name = "Mos Eisley" + app_info_data["portfolio_name"] = portfolio_name + + response = client.post( + url_for("task_orders.update", screen=3), + data=app_info_data, + follow_redirects=False, + ) + import ipdb; ipdb.set_trace() + assert url_for("task_orders.new", screen=4) in response.headers["Location"] + + created_task_order_id = response.headers["Location"].split("/")[-1] + created_task_order = TaskOrders.get(creator, created_task_order_id) + assert created_task_order.portfolio is not None + assert created_task_order.portfolio.name == portfolio_name + def test_create_new_task_order_for_portfolio(client, user_session): portfolio = PortfolioFactory.create() From 8f87981b8f72c8555bc43d007a3f9fef7baf7c33 Mon Sep 17 00:00:00 2001 From: Montana Date: Mon, 21 Jan 2019 15:52:01 -0500 Subject: [PATCH 2/5] Disable TO screens until screen 1 is filled out --- styles/components/_progress_menu.scss | 6 ++++++ templates/task_orders/new/menu.html | 13 +++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/styles/components/_progress_menu.scss b/styles/components/_progress_menu.scss index 2a8c5ef1..01e2de26 100644 --- a/styles/components/_progress_menu.scss +++ b/styles/components/_progress_menu.scss @@ -50,6 +50,12 @@ a.active { color: $color-blue; + cursor: default; + } + + a.disabled{ + color: $color-gray-light; + cursor: default; } diff --git a/templates/task_orders/new/menu.html b/templates/task_orders/new/menu.html index f7b088ad..c6620a83 100644 --- a/templates/task_orders/new/menu.html +++ b/templates/task_orders/new/menu.html @@ -10,8 +10,17 @@ {% endif %}
  • - {{ s['title'] }} From 707bb5be220d1bb11921e684105550bb819b63f5 Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 22 Jan 2019 11:15:15 -0500 Subject: [PATCH 3/5] Disable Done button on Review screen if TO is not completed --- atst/routes/task_orders/new.py | 18 ++++++++++++++++++ templates/task_orders/new/review.html | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 2426293e..121b92b1 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -108,6 +108,23 @@ class ShowTaskOrderWorkflow: return screen_info + def completed(self): + screen_info = deepcopy(TASK_ORDER_SECTIONS) + + if self.task_order: + for section in screen_info: + if ( + not TaskOrders.is_section_complete( + self.task_order, section["section"] + ) + and section["section"] != "review" + ): + return False + else: + return False + + return True + class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow): def __init__( @@ -254,6 +271,7 @@ def new(screen, task_order_id=None, portfolio_id=None): portfolio_id=portfolio_id, screens=workflow.display_screens, form=workflow.form, + complete=workflow.completed(), ) diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 2e47acf1..440c58ad 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -194,7 +194,8 @@ {% block next %}
    - +
    {% endblock %} From d66d4ea0adf8dfd06af03e106e4d9517c149b494 Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 22 Jan 2019 11:19:02 -0500 Subject: [PATCH 4/5] Cleanup --- .../routes/task_orders/test_new_task_order.py | 43 ------------------- 1 file changed, 43 deletions(-) diff --git a/tests/routes/task_orders/test_new_task_order.py b/tests/routes/task_orders/test_new_task_order.py index c8fcaf75..53374ed6 100644 --- a/tests/routes/task_orders/test_new_task_order.py +++ b/tests/routes/task_orders/test_new_task_order.py @@ -76,49 +76,6 @@ def test_create_new_task_order(client, user_session): ) assert url_for("task_orders.new", screen=4) in response.headers["Location"] -def test_create_new_task_order_on_funding_screen(client, user_session): - creator = UserFactory.create() - user_session(creator) - - task_order_data = TaskOrderFactory.dictionary() - app_info_data = slice_data_for_section(task_order_data, "app_info") - portfolio_name = "Mos Eisley" - app_info_data["portfolio_name"] = portfolio_name - - response = client.post( - url_for("task_orders.update", screen=2), - data=app_info_data, - follow_redirects=False, - ) - assert url_for("task_orders.new", screen=3) in response.headers["Location"] - - created_task_order_id = response.headers["Location"].split("/")[-1] - created_task_order = TaskOrders.get(creator, created_task_order_id) - assert created_task_order.portfolio is not None - assert created_task_order.portfolio.name == portfolio_name - -def test_create_new_task_order_on_oversight_screen(client, user_session): - creator = UserFactory.create() - user_session(creator) - - task_order_data = TaskOrderFactory.dictionary() - app_info_data = slice_data_for_section(task_order_data, "app_info") - portfolio_name = "Mos Eisley" - app_info_data["portfolio_name"] = portfolio_name - - response = client.post( - url_for("task_orders.update", screen=3), - data=app_info_data, - follow_redirects=False, - ) - import ipdb; ipdb.set_trace() - assert url_for("task_orders.new", screen=4) in response.headers["Location"] - - created_task_order_id = response.headers["Location"].split("/")[-1] - created_task_order = TaskOrders.get(creator, created_task_order_id) - assert created_task_order.portfolio is not None - assert created_task_order.portfolio.name == portfolio_name - def test_create_new_task_order_for_portfolio(client, user_session): portfolio = PortfolioFactory.create() From 6d4570e67126cee4c563d2c330c78ecf4a63c9ff Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 22 Jan 2019 15:04:14 -0500 Subject: [PATCH 5/5] Use TaskOrders domain to determine if form is complete --- atst/routes/task_orders/new.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 121b92b1..9c6ff8e6 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -108,23 +108,14 @@ class ShowTaskOrderWorkflow: return screen_info - def completed(self): - screen_info = deepcopy(TASK_ORDER_SECTIONS) - + @property + def is_complete(self): if self.task_order: - for section in screen_info: - if ( - not TaskOrders.is_section_complete( - self.task_order, section["section"] - ) - and section["section"] != "review" - ): - return False + if TaskOrders.all_sections_complete(self.task_order): + return True else: return False - return True - class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow): def __init__( @@ -271,7 +262,7 @@ def new(screen, task_order_id=None, portfolio_id=None): portfolio_id=portfolio_id, screens=workflow.display_screens, form=workflow.form, - complete=workflow.completed(), + complete=workflow.is_complete, )