Check-in: Handle non-existant IDs

This commit is contained in:
Raphael Michel
2023-09-26 13:52:10 +02:00
parent 755c4efba1
commit 10e9b9e12d

View File

@@ -53,8 +53,8 @@ from django.utils.translation import gettext as _
from django_scopes import scope, scopes_disabled from django_scopes import scope, scopes_disabled
from pretix.base.models import ( from pretix.base.models import (
Checkin, CheckinList, Device, Event, ItemVariation, Order, OrderPosition, Checkin, CheckinList, Device, Event, Gate, Item, ItemVariation, Order,
QuestionOption, OrderPosition, QuestionOption,
) )
from pretix.base.signals import checkin_created, order_placed, periodic_task from pretix.base.signals import checkin_created, order_placed, periodic_task
from pretix.helpers import OF_SELF from pretix.helpers import OF_SELF
@@ -109,11 +109,20 @@ def _logic_annotate_for_graphic_explain(rules, ev, rule_data, now_dt):
var = values[0] if isinstance(values, list) else values var = values[0] if isinstance(values, list) else values
val = rule_data[var] val = rule_data[var]
if var == "product": if var == "product":
val = str(event.items.get(pk=val)) try:
val = str(event.items.get(pk=val))
except Item.DoesNotExist:
val = "?"
elif var == "variation": elif var == "variation":
val = str(ItemVariation.objects.get(item__event=event, pk=val)) try:
val = str(ItemVariation.objects.get(item__event=event, pk=val))
except ItemVariation.DoesNotExist:
val = "?"
elif var == "gate": elif var == "gate":
val = str(event.organizer.gates.get(pk=val)) try:
val = str(event.organizer.gates.get(pk=val))
except Gate.DoesNotExist:
val = "?"
elif isinstance(val, datetime): elif isinstance(val, datetime):
val = date_format(val.astimezone(ev.timezone), "SHORT_DATETIME_FORMAT") val = date_format(val.astimezone(ev.timezone), "SHORT_DATETIME_FORMAT")
return {"var": var, "__result": val} return {"var": var, "__result": val}