diff --git a/src/pretix/api/serializers/order.py b/src/pretix/api/serializers/order.py index 1c3822d34..919a782a3 100644 --- a/src/pretix/api/serializers/order.py +++ b/src/pretix/api/serializers/order.py @@ -20,6 +20,7 @@ # . # import json +import logging from collections import Counter, defaultdict from decimal import Decimal @@ -59,6 +60,9 @@ from pretix.base.signals import register_ticket_outputs from pretix.multidomain.urlreverse import build_absolute_uri +logger = logging.getLogger(__name__) + + class CompatibleCountryField(serializers.Field): def to_internal_value(self, data): return {self.field_name: Country(data)} @@ -315,7 +319,11 @@ class PdfDataSerializer(serializers.Field): self.context['vars_images'] = get_images(self.context['request'].event) for k, f in self.context['vars'].items(): - res[k] = f['evaluate'](instance, instance.order, ev) + try: + res[k] = f['evaluate'](instance, instance.order, ev) + except: + logger.exception('Evaluating PDF variable failed') + res[k] = '(error)' if not hasattr(ev, '_cached_meta_data'): ev._cached_meta_data = ev.meta_data @@ -332,10 +340,19 @@ class PdfDataSerializer(serializers.Field): for k, f in self.context['vars_images'].items(): if 'etag' in f: - has_image = etag = f['etag'](instance, instance.order, ev) + try: + has_image = etag = f['etag'](instance, instance.order, ev) + except: + has_image = False + etag = None + logger.exception('Evaluating PDF variable failed') else: - has_image = f['etag'](instance, instance.order, ev) - etag = None + try: + has_image = f['valuate'](instance, instance.order, ev) + etag = None + except: + has_image = False + logger.exception('Evaluating PDF variable failed') if has_image: url = reverse('api-v1:orderposition-pdf_image', kwargs={ 'organizer': instance.order.event.organizer.slug,