Add Excel import export and code linking for task categories

This commit is contained in:
A R R R Associates
2026-08-31 12:52:50 +05:30
parent af4f6e8b28
commit fbb8607842
6 changed files with 551 additions and 14 deletions
+12 -1
View File
@@ -8,7 +8,7 @@ from openpyxl.utils import get_column_letter
from sqlalchemy import select
from sqlalchemy.orm import Session, selectinload
from app.modules.services.models import ServiceCatalogue, ServiceDefaultTaskTemplate
from app.modules.services.models import ServiceCatalogue, ServiceDefaultTaskTemplate, ServiceTaskCategory
_HEADERS = [
@@ -21,6 +21,7 @@ _HEADERS = [
"default_role_name",
"is_mandatory",
"requires_review",
"task_category_code",
"task_category",
"response_required",
"response_type",
@@ -46,6 +47,7 @@ _IMPORT_HEADERS = [
"default_role_name",
"is_mandatory",
"requires_review",
"task_category_code",
"task_category",
"response_required",
"response_type",
@@ -144,6 +146,13 @@ def build_default_tasks_export(db: Session, *, catalogue_id: int | None = None)
])
missing_ws.append(["service_code", "service_name", "category_code", "category_name", "recurrence_type", "engagement_type"])
category_code_by_id = {
row.id: row.code
for row in db.execute(
select(ServiceTaskCategory).where(ServiceTaskCategory.tenant_id.is_(None))
).scalars().all()
}
total_tasks = 0
active_tasks = 0
services_without_tasks = 0
@@ -168,6 +177,7 @@ def build_default_tasks_export(db: Session, *, catalogue_id: int | None = None)
task.default_role_name or "",
_yes_no(task.is_mandatory),
_yes_no(task.requires_review),
category_code_by_id.get(getattr(task, "task_category_id", None), ""),
task.task_category or "",
_yes_no(task.response_required),
task.response_type or "NONE",
@@ -192,6 +202,7 @@ def build_default_tasks_export(db: Session, *, catalogue_id: int | None = None)
task.default_role_name or "",
_yes_no(task.is_mandatory),
_yes_no(task.requires_review),
category_code_by_id.get(getattr(task, "task_category_id", None), ""),
task.task_category or "",
_yes_no(task.response_required),
task.response_type or "NONE",