Fix duplicate firm task creation when syncing system defaults

This commit is contained in:
A R R R Associates
2026-09-01 13:52:19 +05:30
parent 67c63ca94e
commit d51ef3bbbb
3 changed files with 334 additions and 1 deletions
+43
View File
@@ -2523,3 +2523,46 @@ def upload_firm_task_templates(request: Request, file: UploadFile = File(...), u
return _render(request, "modules/services/templates/services/bulk_imports/result.html", db, user, title="Firm Task Templates Import Result", result=result, back_url="/services/bulk-imports")
finally:
db.close()
# BEGIN Firm Default Task Idempotent Sync Fix v1
@router.post("/catalogue/{catalogue_id}/firm-tasks/sync-system-defaults")
def sync_system_default_tasks_for_firm(request: Request, catalogue_id: int):
"""Idempotent replacement for the old insert-only 'Copy System Default Tasks' action."""
from app.modules.services.default_task_sync import sync_firm_tasks_from_system_defaults
db = CommonSessionLocal()
try:
current_user = get_current_user(request, db=db)
if not current_user:
return RedirectResponse(url="/login", status_code=303)
roles = set(get_user_roles(db, current_user.id))
if not roles.intersection({"System Admin", "Firm Admin"}):
return RedirectResponse(url="/services", status_code=303)
tenant_id = _tenant_id(request, current_user)
result = sync_firm_tasks_from_system_defaults(
db,
tenant_id=tenant_id,
service_catalogue_id=catalogue_id,
updated_by_user_id=current_user.id,
)
db.commit()
return RedirectResponse(
url=(
f"/services/catalogue/{catalogue_id}/firm-tasks"
f"?sync_success=1"
f"&created={result.created}"
f"&updated={result.updated}"
f"&unchanged={result.unchanged}"
f"&duplicates_disabled={result.duplicates_disabled}"
),
status_code=303,
)
except Exception:
db.rollback()
raise
finally:
db.close()
# END Firm Default Task Idempotent Sync Fix v1