From e84e61bbad289265b3a8808d4b562d722110a9c4 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Thu, 6 Jun 2019 17:39:41 -0400 Subject: [PATCH] Update seed script with TOs of various statuses --- atst/models/task_order.py | 10 +++---- atst/routes/task_orders/index.py | 14 +--------- script/seed_sample.py | 29 ++++++++++++++------- templates/portfolios/task_orders/index.html | 16 +++--------- tests/models/test_task_order.py | 8 ++---- 5 files changed, 30 insertions(+), 47 deletions(-) diff --git a/atst/models/task_order.py b/atst/models/task_order.py index 0033c5aa..fce8fdfb 100644 --- a/atst/models/task_order.py +++ b/atst/models/task_order.py @@ -1,5 +1,5 @@ from enum import Enum -from datetime import date, datetime +from datetime import date from sqlalchemy import Column, DateTime, ForeignKey, String from sqlalchemy.ext.hybrid import hybrid_property @@ -11,12 +11,10 @@ from atst.models.clin import JEDICLINType class Status(Enum): - STARTED = "Started" - PENDING = "Pending" - ACTIVE = "Active" - EXPIRED = "Expired" DRAFT = "Draft" + ACTIVE = "Active" UPCOMING = "Upcoming" + EXPIRED = "Expired" UNSIGNED = "Unsigned" @@ -90,7 +88,7 @@ class TaskOrder(Base, mixins.TimestampsMixin): @property def start_date(self): - return min((c.start_date for c in self.clins), default=None) + return min((c.start_date for c in self.clins), default=self.time_created.date()) @property def end_date(self): diff --git a/atst/routes/task_orders/index.py b/atst/routes/task_orders/index.py index d91db98f..544db001 100644 --- a/atst/routes/task_orders/index.py +++ b/atst/routes/task_orders/index.py @@ -34,19 +34,7 @@ def review_task_order(task_order_id): @user_can(Permissions.VIEW_PORTFOLIO_FUNDING, message="view portfolio funding") def portfolio_funding(portfolio_id): portfolio = Portfolios.get(g.current_user, portfolio_id) - task_orders_by_status = defaultdict(list) - - for task_order in portfolio.task_orders: - task_orders_by_status[task_order.status].append(task_order) - - active_task_orders = task_orders_by_status.get(TaskOrderStatus.ACTIVE, []) return render_template( - "portfolios/task_orders/index.html", - pending_task_orders=( - task_orders_by_status.get(TaskOrderStatus.STARTED, []) - + task_orders_by_status.get(TaskOrderStatus.PENDING, []) - ), - active_task_orders=active_task_orders, - expired_task_orders=task_orders_by_status.get(TaskOrderStatus.EXPIRED, []), + "portfolios/task_orders/index.html", task_orders=portfolio.task_orders ) diff --git a/script/seed_sample.py b/script/seed_sample.py index 6c9d3f34..d499de69 100644 --- a/script/seed_sample.py +++ b/script/seed_sample.py @@ -1,7 +1,7 @@ # Add root application dir to the python path import os import sys -from datetime import timedelta, date +from datetime import timedelta, date, timedelta import random from faker import Faker @@ -31,6 +31,7 @@ from tests.factories import ( random_service_branch, random_task_order_number, TaskOrderFactory, + CLINFactory, ) fake = Faker() @@ -160,16 +161,26 @@ def add_members_to_portfolio(portfolio): def add_task_orders_to_portfolio(portfolio): - # TODO: after CLINs are implemented, vary the start/end dates of TOs - create_task_order(portfolio) - create_task_order(portfolio) - create_task_order(portfolio) + today = date.today() + future = today + timedelta(days=100) + yesterday = today - timedelta(days=1) + draft_to = TaskOrderFactory.build(portfolio=portfolio, pdf=None) + unsigned_to = TaskOrderFactory.build(portfolio=portfolio) + upcoming_to = TaskOrderFactory.build(portfolio=portfolio, signed_at=yesterday) + expired_to = TaskOrderFactory.build(portfolio=portfolio, signed_at=yesterday) + active_to = TaskOrderFactory.build(portfolio=portfolio, signed_at=yesterday) -def create_task_order(portfolio): - # TODO: after CLINs are implemented add them to TO - task_order = TaskOrderFactory.build(portfolio=portfolio) - db.session.add(task_order) + clins = [ + CLINFactory.build(task_order=unsigned_to, start_date=today, end_date=today), + CLINFactory.build(task_order=upcoming_to, start_date=future, end_date=future), + CLINFactory.build(task_order=expired_to, start_date=yesterday, end_date=yesterday), + CLINFactory.build(task_order=active_to, start_date=yesterday, end_date=future), + ] + + task_orders = [draft_to, unsigned_to, upcoming_to, expired_to, active_to] + + db.session.add_all(task_orders + clins) db.session.commit() diff --git a/templates/portfolios/task_orders/index.html b/templates/portfolios/task_orders/index.html index 2df23b45..598bbc5f 100644 --- a/templates/portfolios/task_orders/index.html +++ b/templates/portfolios/task_orders/index.html @@ -70,7 +70,9 @@
- {% if not active_task_orders and not pending_task_orders %} + {% if task_orders %} + {{ TaskOrderList(task_orders) }} + {% else %} {{ EmptyState( 'This portfolio doesn’t have any active or pending task orders.', action_label='Add a New Task Order', @@ -78,18 +80,6 @@ icon='cloud', ) }} {% endif %} - - {% if pending_task_orders %} - {{ TaskOrderList(pending_task_orders, label='warning') }} - {% endif %} - - {% if active_task_orders %} - {{ TaskOrderList(active_task_orders, label='success') }} - {% endif %} - - {% if expired_task_orders %} - {{ TaskOrderList(expired_task_orders, label='error') }} - {% endif %}
{% endblock %} diff --git a/tests/models/test_task_order.py b/tests/models/test_task_order.py index 39893d08..183bd4e8 100644 --- a/tests/models/test_task_order.py +++ b/tests/models/test_task_order.py @@ -29,15 +29,11 @@ def test_period_of_performance_is_first_to_last_clin(): CLINFactory.create( start_date=intermediate_start_date, end_date=intermediate_end_date ), - CLINFactory.create( - start_date=start_date, end_date=intermediate_end_date - ), + CLINFactory.create(start_date=start_date, end_date=intermediate_end_date), CLINFactory.create( start_date=intermediate_start_date, end_date=intermediate_end_date ), - CLINFactory.create( - start_date=intermediate_start_date, end_date=end_date - ), + CLINFactory.create(start_date=intermediate_start_date, end_date=end_date), CLINFactory.create( start_date=intermediate_start_date, end_date=intermediate_end_date ),