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.database import db
|
||||||
from atst.models.clin import CLIN
|
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
|
from . import BaseDomainClass
|
||||||
|
|
||||||
|
|
||||||
@ -98,3 +98,10 @@ class TaskOrders(BaseDomainClass):
|
|||||||
if not app.config.get("CLASSIFIED"):
|
if not app.config.get("CLASSIFIED"):
|
||||||
section_list["funding"] = TaskOrders.UNCLASSIFIED_FUNDING
|
section_list["funding"] = TaskOrders.UNCLASSIFIED_FUNDING
|
||||||
return section_list
|
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"
|
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):
|
class TaskOrder(Base, mixins.TimestampsMixin):
|
||||||
__tablename__ = "task_orders"
|
__tablename__ = "task_orders"
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from collections import defaultdict
|
|
||||||
|
|
||||||
from flask import g, render_template
|
from flask import g, render_template
|
||||||
|
|
||||||
from . import task_orders_bp
|
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.portfolios import Portfolios
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
from atst.models import Permissions
|
from atst.models import Permissions
|
||||||
from atst.models.task_order import Status as TaskOrderStatus
|
|
||||||
|
|
||||||
|
|
||||||
@task_orders_bp.route("/task_orders/<task_order_id>")
|
@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")
|
@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 = TaskOrders.sort(portfolio.task_orders)
|
||||||
return render_template(
|
return render_template("portfolios/task_orders/index.html", task_orders=task_orders)
|
||||||
"portfolios/task_orders/index.html", task_orders=portfolio.task_orders
|
|
||||||
)
|
|
||||||
|
@ -174,7 +174,9 @@ def add_task_orders_to_portfolio(portfolio):
|
|||||||
clins = [
|
clins = [
|
||||||
CLINFactory.build(task_order=unsigned_to, start_date=today, end_date=today),
|
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=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),
|
CLINFactory.build(task_order=active_to, start_date=yesterday, end_date=future),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user