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
+7 -3
View File
@@ -7,11 +7,11 @@ from openpyxl.utils import get_column_letter
from sqlalchemy import select
from sqlalchemy.orm import Session
from app.modules.services.models import FirmServiceTaskTemplate, ServiceCatalogue
from app.modules.services.models import FirmServiceTaskTemplate, ServiceCatalogue, ServiceTaskCategory
HEADERS = [
"service_code", "sequence_no", "task_name", "default_role_name", "eligible_role_names",
"is_mandatory", "requires_review", "normal_review_role", "task_category", "response_required",
"is_mandatory", "requires_review", "normal_review_role", "task_category_code", "task_category", "response_required",
"response_type", "evidence_required", "remarks_required_if_no", "task_tool_code",
"is_aqmm_task", "aqmm_mandatory", "aqmm_evidence_required", "aqmm_manager_review_required",
"aqmm_partner_review_required", "aqmm_review_partner_required", "aqmm_blocks_final_release",
@@ -26,10 +26,14 @@ def build_firm_tasks_export(db: Session, *, tenant_id: int, catalogue_id: int) -
FirmServiceTaskTemplate.tenant_id == tenant_id,
FirmServiceTaskTemplate.service_catalogue_id == catalogue_id,
).order_by(FirmServiceTaskTemplate.sequence_no, FirmServiceTaskTemplate.id)).scalars().all())
category_code_by_id = {row.id: row.code for row in db.execute(select(ServiceTaskCategory).where(
ServiceTaskCategory.tenant_id == tenant_id,
ServiceTaskCategory.service_catalogue_id == catalogue_id,
)).scalars().all()}
wb = Workbook(); ws = wb.active; ws.title = "Firm Task Templates"; ws.append(HEADERS)
for task in tasks:
ws.append([service.service_code, task.sequence_no, task.task_name, task.default_role_name or "", task.eligible_role_names or "",
_yn(task.is_mandatory), _yn(task.requires_review), task.normal_review_role or "", task.task_category or "",
_yn(task.is_mandatory), _yn(task.requires_review), task.normal_review_role or "", category_code_by_id.get(getattr(task, "task_category_id", None), ""), task.task_category or "",
_yn(task.response_required), task.response_type or "NONE", _yn(task.evidence_required), _yn(task.remarks_required_if_no),
getattr(task, "task_tool_code", "NONE") or "NONE", _yn(task.is_aqmm_task), _yn(task.aqmm_mandatory),
_yn(task.aqmm_evidence_required), _yn(task.aqmm_manager_review_required), _yn(task.aqmm_partner_review_required),