forked from CGM_Public/pretix_original
Faulty PDF variables should not crash checkins
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
# <https://www.gnu.org/licenses/>.
|
# <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
from collections import Counter, defaultdict
|
from collections import Counter, defaultdict
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
@@ -59,6 +60,9 @@ from pretix.base.signals import register_ticket_outputs
|
|||||||
from pretix.multidomain.urlreverse import build_absolute_uri
|
from pretix.multidomain.urlreverse import build_absolute_uri
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CompatibleCountryField(serializers.Field):
|
class CompatibleCountryField(serializers.Field):
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data):
|
||||||
return {self.field_name: Country(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)
|
self.context['vars_images'] = get_images(self.context['request'].event)
|
||||||
|
|
||||||
for k, f in self.context['vars'].items():
|
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'):
|
if not hasattr(ev, '_cached_meta_data'):
|
||||||
ev._cached_meta_data = ev.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():
|
for k, f in self.context['vars_images'].items():
|
||||||
if 'etag' in f:
|
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:
|
else:
|
||||||
has_image = f['etag'](instance, instance.order, ev)
|
try:
|
||||||
etag = None
|
has_image = f['valuate'](instance, instance.order, ev)
|
||||||
|
etag = None
|
||||||
|
except:
|
||||||
|
has_image = False
|
||||||
|
logger.exception('Evaluating PDF variable failed')
|
||||||
if has_image:
|
if has_image:
|
||||||
url = reverse('api-v1:orderposition-pdf_image', kwargs={
|
url = reverse('api-v1:orderposition-pdf_image', kwargs={
|
||||||
'organizer': instance.order.event.organizer.slug,
|
'organizer': instance.order.event.organizer.slug,
|
||||||
|
|||||||
Reference in New Issue
Block a user