Update seed script with TOs of various statuses
This commit is contained in:
parent
fd159a2d80
commit
e84e61bbad
@ -1,5 +1,5 @@
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from datetime import date, datetime
|
from datetime import date
|
||||||
|
|
||||||
from sqlalchemy import Column, DateTime, ForeignKey, String
|
from sqlalchemy import Column, DateTime, ForeignKey, String
|
||||||
from sqlalchemy.ext.hybrid import hybrid_property
|
from sqlalchemy.ext.hybrid import hybrid_property
|
||||||
@ -11,12 +11,10 @@ from atst.models.clin import JEDICLINType
|
|||||||
|
|
||||||
|
|
||||||
class Status(Enum):
|
class Status(Enum):
|
||||||
STARTED = "Started"
|
|
||||||
PENDING = "Pending"
|
|
||||||
ACTIVE = "Active"
|
|
||||||
EXPIRED = "Expired"
|
|
||||||
DRAFT = "Draft"
|
DRAFT = "Draft"
|
||||||
|
ACTIVE = "Active"
|
||||||
UPCOMING = "Upcoming"
|
UPCOMING = "Upcoming"
|
||||||
|
EXPIRED = "Expired"
|
||||||
UNSIGNED = "Unsigned"
|
UNSIGNED = "Unsigned"
|
||||||
|
|
||||||
|
|
||||||
@ -90,7 +88,7 @@ class TaskOrder(Base, mixins.TimestampsMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def start_date(self):
|
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
|
@property
|
||||||
def end_date(self):
|
def end_date(self):
|
||||||
|
@ -34,19 +34,7 @@ def review_task_order(task_order_id):
|
|||||||
@user_can(Permissions.VIEW_PORTFOLIO_FUNDING, message="view portfolio funding")
|
@user_can(Permissions.VIEW_PORTFOLIO_FUNDING, message="view portfolio funding")
|
||||||
def portfolio_funding(portfolio_id):
|
def portfolio_funding(portfolio_id):
|
||||||
portfolio = Portfolios.get(g.current_user, 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(
|
return render_template(
|
||||||
"portfolios/task_orders/index.html",
|
"portfolios/task_orders/index.html", task_orders=portfolio.task_orders
|
||||||
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, []),
|
|
||||||
)
|
)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Add root application dir to the python path
|
# Add root application dir to the python path
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from datetime import timedelta, date
|
from datetime import timedelta, date, timedelta
|
||||||
import random
|
import random
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
|
|
||||||
@ -31,6 +31,7 @@ from tests.factories import (
|
|||||||
random_service_branch,
|
random_service_branch,
|
||||||
random_task_order_number,
|
random_task_order_number,
|
||||||
TaskOrderFactory,
|
TaskOrderFactory,
|
||||||
|
CLINFactory,
|
||||||
)
|
)
|
||||||
|
|
||||||
fake = Faker()
|
fake = Faker()
|
||||||
@ -160,16 +161,26 @@ def add_members_to_portfolio(portfolio):
|
|||||||
|
|
||||||
|
|
||||||
def add_task_orders_to_portfolio(portfolio):
|
def add_task_orders_to_portfolio(portfolio):
|
||||||
# TODO: after CLINs are implemented, vary the start/end dates of TOs
|
today = date.today()
|
||||||
create_task_order(portfolio)
|
future = today + timedelta(days=100)
|
||||||
create_task_order(portfolio)
|
yesterday = today - timedelta(days=1)
|
||||||
create_task_order(portfolio)
|
|
||||||
|
|
||||||
|
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):
|
clins = [
|
||||||
# TODO: after CLINs are implemented add them to TO
|
CLINFactory.build(task_order=unsigned_to, start_date=today, end_date=today),
|
||||||
task_order = TaskOrderFactory.build(portfolio=portfolio)
|
CLINFactory.build(task_order=upcoming_to, start_date=future, end_date=future),
|
||||||
db.session.add(task_order)
|
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()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,7 +70,9 @@
|
|||||||
|
|
||||||
<div class="portfolio-funding">
|
<div class="portfolio-funding">
|
||||||
|
|
||||||
{% if not active_task_orders and not pending_task_orders %}
|
{% if task_orders %}
|
||||||
|
{{ TaskOrderList(task_orders) }}
|
||||||
|
{% else %}
|
||||||
{{ EmptyState(
|
{{ EmptyState(
|
||||||
'This portfolio doesn’t have any active or pending task orders.',
|
'This portfolio doesn’t have any active or pending task orders.',
|
||||||
action_label='Add a New Task Order',
|
action_label='Add a New Task Order',
|
||||||
@ -78,18 +80,6 @@
|
|||||||
icon='cloud',
|
icon='cloud',
|
||||||
) }}
|
) }}
|
||||||
{% endif %}
|
{% 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 %}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -29,15 +29,11 @@ def test_period_of_performance_is_first_to_last_clin():
|
|||||||
CLINFactory.create(
|
CLINFactory.create(
|
||||||
start_date=intermediate_start_date, end_date=intermediate_end_date
|
start_date=intermediate_start_date, end_date=intermediate_end_date
|
||||||
),
|
),
|
||||||
CLINFactory.create(
|
CLINFactory.create(start_date=start_date, end_date=intermediate_end_date),
|
||||||
start_date=start_date, end_date=intermediate_end_date
|
|
||||||
),
|
|
||||||
CLINFactory.create(
|
CLINFactory.create(
|
||||||
start_date=intermediate_start_date, end_date=intermediate_end_date
|
start_date=intermediate_start_date, end_date=intermediate_end_date
|
||||||
),
|
),
|
||||||
CLINFactory.create(
|
CLINFactory.create(start_date=intermediate_start_date, end_date=end_date),
|
||||||
start_date=intermediate_start_date, end_date=end_date
|
|
||||||
),
|
|
||||||
CLINFactory.create(
|
CLINFactory.create(
|
||||||
start_date=intermediate_start_date, end_date=intermediate_end_date
|
start_date=intermediate_start_date, end_date=intermediate_end_date
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user