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 <noreply@anthropic.com>
This commit is contained in:
CCS Admin 2026-02-24 09:28:40 +00:00
parent db963a8e12
commit 4467e1b1cb

View file

@ -119,7 +119,18 @@ def generate_report(
with open(filepath, "wb") as f:
f.write(xlsx_bytes)
# Save report metadata to DB
# Upsert report metadata (replace if same jahr/kw exists)
report = (
db.query(WeeklyReport)
.filter(WeeklyReport.jahr == jahr, WeeklyReport.kw == kw)
.first()
)
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,
@ -128,8 +139,8 @@ def generate_report(
generated_by=user.id,
)
report.report_file_path = filepath
db.add(report)
db.commit()
db.refresh(report)