From 347337e76f9828961000c87d7bee25410d85ecd0 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 9 Mar 2026 13:52:11 +0100 Subject: [PATCH] Invoice generation: Add way for renderers to signal they are not ready (#5905) --- src/pretix/base/invoicing/pdf.py | 4 ++++ src/pretix/base/services/invoices.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/invoicing/pdf.py b/src/pretix/base/invoicing/pdf.py index 2eed2f8e3..21765a629 100644 --- a/src/pretix/base/invoicing/pdf.py +++ b/src/pretix/base/invoicing/pdf.py @@ -148,6 +148,10 @@ class NumberedCanvas(Canvas): self.restoreState() +class InvoiceNotReadyException(Exception): + pass + + class BaseInvoiceRenderer: """ This is the base class for all invoice renderers. diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py index d76c48c99..deadc4d2f 100644 --- a/src/pretix/base/services/invoices.py +++ b/src/pretix/base/services/invoices.py @@ -51,6 +51,7 @@ from django_scopes import scope, scopes_disabled from i18nfield.strings import LazyI18nString from pretix.base.i18n import language +from pretix.base.invoicing.pdf import InvoiceNotReadyException from pretix.base.invoicing.transmission import ( get_transmission_types, transmission_providers, ) @@ -504,7 +505,7 @@ def generate_invoice(order: Order, trigger_pdf=True): return invoice -@app.task(base=TransactionAwareTask) +@app.task(base=TransactionAwareTask, throws=(InvoiceNotReadyException,)) def invoice_pdf_task(invoice: int): with scopes_disabled(): i = Invoice.objects.get(pk=invoice)