Sort task orders by status and time_created
This commit is contained in:
parent
e84e61bbad
commit
7f4f857424
@ -2,7 +2,7 @@ from flask import current_app as app
|
||||
|
||||
from atst.database import db
|
||||
from atst.models.clin import CLIN
|
||||
from atst.models.task_order import TaskOrder
|
||||
from atst.models.task_order import TaskOrder, SORT_ORDERING
|
||||
from . import BaseDomainClass
|
||||
|
||||
|
||||
@ -98,3 +98,10 @@ class TaskOrders(BaseDomainClass):
|
||||
if not app.config.get("CLASSIFIED"):
|
||||
section_list["funding"] = TaskOrders.UNCLASSIFIED_FUNDING
|
||||
return section_list
|
||||
|
||||
@classmethod
|
||||
def sort(cls, task_orders: [TaskOrder]) -> [TaskOrder]:
|
||||
# Sorts a list of task orders on two keys: status (primary) and time_created (secondary)
|
||||
by_time_created = sorted(task_orders, key=lambda to: to.time_created)
|
||||
by_status = sorted(by_time_created, key=lambda to: SORT_ORDERING.get(to.status))
|
||||
return by_status
|
||||
|
@ -18,6 +18,14 @@ class Status(Enum):
|
||||
UNSIGNED = "Unsigned"
|
||||
|
||||
|
||||
SORT_ORDERING = {
|
||||
status: order
|
||||
for (order, status) in enumerate(
|
||||
[Status.DRAFT, Status.ACTIVE, Status.UPCOMING, Status.EXPIRED, Status.UNSIGNED]
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
class TaskOrder(Base, mixins.TimestampsMixin):
|
||||
__tablename__ = "task_orders"
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
from collections import defaultdict
|
||||
|
||||
from flask import g, render_template
|
||||
|
||||
from . import task_orders_bp
|
||||
@ -7,7 +5,6 @@ from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||
from atst.domain.portfolios import Portfolios
|
||||
from atst.domain.task_orders import TaskOrders
|
||||
from atst.models import Permissions
|
||||
from atst.models.task_order import Status as TaskOrderStatus
|
||||
|
||||
|
||||
@task_orders_bp.route("/task_orders/<task_order_id>")
|
||||
@ -34,7 +31,5 @@ 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)
|
||||
|
||||
return render_template(
|
||||
"portfolios/task_orders/index.html", task_orders=portfolio.task_orders
|
||||
)
|
||||
task_orders = TaskOrders.sort(portfolio.task_orders)
|
||||
return render_template("portfolios/task_orders/index.html", task_orders=task_orders)
|
||||
|
@ -174,7 +174,9 @@ def add_task_orders_to_portfolio(portfolio):
|
||||
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=expired_to, start_date=yesterday, end_date=yesterday
|
||||
),
|
||||
CLINFactory.build(task_order=active_to, start_date=yesterday, end_date=future),
|
||||
]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user