mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Check-in API: Fall back from attendee_name
This commit is contained in:
@@ -184,8 +184,40 @@ class RequireAttentionField(serializers.Field):
|
||||
return instance.order.checkin_attention or instance.item.checkin_attention
|
||||
|
||||
|
||||
class AttendeeNameField(serializers.Field):
|
||||
def to_representation(self, instance: OrderPosition):
|
||||
an = instance.attendee_name
|
||||
if not an:
|
||||
if instance.addon_to_id:
|
||||
an = instance.addon_to.attendee_name
|
||||
if not an:
|
||||
try:
|
||||
an = instance.order.invoice_address.name
|
||||
except InvoiceAddress.DoesNotExist:
|
||||
pass
|
||||
return an
|
||||
|
||||
|
||||
class AttendeeNamePartsField(serializers.Field):
|
||||
def to_representation(self, instance: OrderPosition):
|
||||
an = instance.attendee_name
|
||||
p = instance.attendee_name_parts
|
||||
if not an:
|
||||
if instance.addon_to_id:
|
||||
an = instance.addon_to.attendee_name
|
||||
p = instance.addon_to.attendee_name_parts
|
||||
if not an:
|
||||
try:
|
||||
p = instance.order.invoice_address.name_parts
|
||||
except InvoiceAddress.DoesNotExist:
|
||||
pass
|
||||
return p
|
||||
|
||||
|
||||
class CheckinListOrderPositionSerializer(OrderPositionSerializer):
|
||||
require_attention = RequireAttentionField(source='*')
|
||||
attendee_name = AttendeeNameField(source='*')
|
||||
attendee_name_parts = AttendeeNamePartsField(source='*')
|
||||
order__status = serializers.SlugRelatedField(read_only=True, slug_field='status', source='order')
|
||||
|
||||
class Meta:
|
||||
|
||||
@@ -229,7 +229,7 @@ class CheckinListPositionViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
)
|
||||
))
|
||||
).select_related(
|
||||
'item', 'variation', 'item__category', 'addon_to', 'order'
|
||||
'item', 'variation', 'item__category', 'addon_to', 'order', 'order__invoice_address'
|
||||
)
|
||||
else:
|
||||
qs = qs.prefetch_related(
|
||||
|
||||
Reference in New Issue
Block a user