Add Excel import export and code linking for task categories
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user