From 4467e1b1cb1198f8e4734476be51e8f74e2286ce Mon Sep 17 00:00:00 2001 From: CCS Admin Date: Tue, 24 Feb 2026 09:28:40 +0000 Subject: [PATCH] fix: upsert report metadata to avoid duplicate key error on re-generation When generating a report for the same jahr/kw, update the existing record instead of inserting a duplicate (which caused IntegrityError). Co-Authored-By: Claude Opus 4.6 --- backend/app/api/reports.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/backend/app/api/reports.py b/backend/app/api/reports.py index b1abb9e..523a06b 100644 --- a/backend/app/api/reports.py +++ b/backend/app/api/reports.py @@ -119,17 +119,28 @@ def generate_report( with open(filepath, "wb") as f: f.write(xlsx_bytes) - # Save report metadata to DB - report = WeeklyReport( - jahr=jahr, - kw=kw, - report_date=date.today(), - report_data=report_data, - generated_by=user.id, + # Upsert report metadata (replace if same jahr/kw exists) + report = ( + db.query(WeeklyReport) + .filter(WeeklyReport.jahr == jahr, WeeklyReport.kw == kw) + .first() ) - report.report_file_path = filepath + if report: + report.report_date = date.today() + report.report_data = report_data + report.report_file_path = filepath + report.generated_by = user.id + else: + report = WeeklyReport( + jahr=jahr, + kw=kw, + report_date=date.today(), + report_data=report_data, + generated_by=user.id, + ) + report.report_file_path = filepath + db.add(report) - db.add(report) db.commit() db.refresh(report)