Prioritize active work and paginate completed engagements

This commit is contained in:
A R R R Associates
2026-08-10 12:17:51 +05:30
parent f79862203b
commit d8cb564dfc
3 changed files with 74 additions and 4 deletions
+36 -1
View File
@@ -3112,6 +3112,8 @@ def list_employee_work_kanban(
q: str = "",
status: str = "open",
financial_year: str | None = None,
completed_page: int = 1,
completed_page_size: int = 25,
) -> dict[str, Any]:
"""Return exactly one employee-board card per assigned engagement.
@@ -3176,8 +3178,8 @@ def list_employee_work_kanban(
)
columns = [
{"code": "pending", "label": "Pending", "cards": []},
{"code": "in_progress", "label": "In Progress", "cards": []},
{"code": "pending", "label": "Pending", "cards": []},
{"code": "blocked", "label": "Blocked", "cards": []},
{"code": "completed", "label": "Completed", "cards": []},
]
@@ -3354,6 +3356,38 @@ def list_employee_work_kanban(
card["service_name"].lower(),
)
)
column["total_cards"] = len(column["cards"])
try:
completed_page = max(int(completed_page or 1), 1)
except (TypeError, ValueError):
completed_page = 1
try:
completed_page_size = max(1, min(int(completed_page_size or 25), 100))
except (TypeError, ValueError):
completed_page_size = 25
completed_column = column_lookup["completed"]
completed_total = int(completed_column["total_cards"])
completed_pages = max(1, (completed_total + completed_page_size - 1) // completed_page_size)
if completed_page > completed_pages:
completed_page = completed_pages
completed_start = (completed_page - 1) * completed_page_size
completed_end = completed_start + completed_page_size
completed_column["cards"] = completed_column["cards"][completed_start:completed_end]
completed_pagination = {
"page": completed_page,
"page_size": completed_page_size,
"total": completed_total,
"pages": completed_pages,
"has_previous": completed_page > 1,
"has_next": completed_page < completed_pages,
"previous_page": completed_page - 1 if completed_page > 1 else None,
"next_page": completed_page + 1 if completed_page < completed_pages else None,
"start": completed_start + 1 if completed_total else 0,
"end": min(completed_end, completed_total),
}
return {
"summary": summary,
@@ -3361,6 +3395,7 @@ def list_employee_work_kanban(
"q": q,
"status": status_filter,
"today": today,
"completed_pagination": completed_pagination,
}