get_data_fields: do not fail if invoice_address missing

This commit is contained in:
Mira Weller
2025-04-03 13:41:35 +02:00
parent 1a88db10ff
commit a8acd976e1

View File

@@ -27,7 +27,7 @@ from functools import partial
from django.db.models import Max from django.db.models import Max
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from pretix.base.models import Checkin, Order, Question from pretix.base.models import Checkin, InvoiceAddress, Order, Question
from pretix.base.settings import PERSON_NAME_SCHEMES from pretix.base.settings import PERSON_NAME_SCHEMES
@@ -111,6 +111,13 @@ DataFieldInfo = namedtuple(
) )
def get_invoice_address_or_empty(order):
try:
return order.invoice_address
except InvoiceAddress.DoesNotExist:
return InvoiceAddress()
def get_data_fields(event, for_model=None): def get_data_fields(event, for_model=None):
""" """
Returns tuple of (required_input, key, label, type, enum_opts, getter) Returns tuple of (required_input, key, label, type, enum_opts, getter)
@@ -223,7 +230,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address company"), _("Invoice address company"),
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: order.invoice_address.company, lambda order: get_invoice_address_or_empty(order).company,
), ),
DataFieldInfo( DataFieldInfo(
ORDER, ORDER,
@@ -231,7 +238,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address name"), _("Invoice address name"),
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: order.invoice_address.name, lambda order: get_invoice_address_or_empty(order).name,
), ),
] ]
+ [ + [
@@ -242,7 +249,7 @@ def get_data_fields(event, for_model=None):
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
partial( partial(
lambda k, order: (order.invoice_address.name_parts or {}).get( lambda k, order: (get_invoice_address_or_empty(order).name_parts or {}).get(
k, "" k, ""
), ),
k, k,
@@ -258,7 +265,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address street"), _("Invoice address street"),
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: order.invoice_address.street, lambda order: get_invoice_address_or_empty(order).street,
), ),
DataFieldInfo( DataFieldInfo(
ORDER, ORDER,
@@ -266,7 +273,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address ZIP code"), _("Invoice address ZIP code"),
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: order.invoice_address.zipcode, lambda order: get_invoice_address_or_empty(order).zipcode,
), ),
DataFieldInfo( DataFieldInfo(
ORDER, ORDER,
@@ -274,7 +281,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address city"), _("Invoice address city"),
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: order.invoice_address.city, lambda order: get_invoice_address_or_empty(order).city,
), ),
DataFieldInfo( DataFieldInfo(
ORDER, ORDER,
@@ -282,7 +289,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address country"), _("Invoice address country"),
Question.TYPE_COUNTRYCODE, Question.TYPE_COUNTRYCODE,
None, None,
lambda order: str(order.invoice_address.country), lambda order: str(get_invoice_address_or_empty(order).country),
), ),
DataFieldInfo( DataFieldInfo(
ORDER, ORDER,
@@ -464,7 +471,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address") + ": " + _("Given name") + " (⚠️ auto-generated, not recommended)", _("Invoice address") + ": " + _("Given name") + " (⚠️ auto-generated, not recommended)",
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: split_name_on_last_space(order.invoice_address.name, part=0), lambda order: split_name_on_last_space(get_invoice_address_or_empty(order).name, part=0),
deprecated=True, deprecated=True,
), ),
] ]
@@ -486,7 +493,7 @@ def get_data_fields(event, for_model=None):
_("Invoice address") + ": " + _("Family name") + " (⚠️ auto-generated, not recommended)", _("Invoice address") + ": " + _("Family name") + " (⚠️ auto-generated, not recommended)",
Question.TYPE_STRING, Question.TYPE_STRING,
None, None,
lambda order: split_name_on_last_space(order.invoice_address.name, part=1), lambda order: split_name_on_last_space(get_invoice_address_or_empty(order).name, part=1),
deprecated=True, deprecated=True,
), ),
] ]