Return pdf_data localized to the order's locale (Z#131360)

This commit is contained in:
Martin Gross
2019-02-20 16:47:29 +01:00
parent 58b688628e
commit 8ffc96bf31

View File

@@ -12,6 +12,7 @@ from rest_framework.reverse import reverse
from pretix.api.serializers.i18n import I18nAwareModelSerializer from pretix.api.serializers.i18n import I18nAwareModelSerializer
from pretix.base.channels import get_all_sales_channels from pretix.base.channels import get_all_sales_channels
from pretix.base.i18n import language
from pretix.base.models import ( from pretix.base.models import (
Checkin, Invoice, InvoiceAddress, InvoiceLine, Order, OrderPosition, Checkin, Invoice, InvoiceAddress, InvoiceLine, Order, OrderPosition,
Question, QuestionAnswer, Question, QuestionAnswer,
@@ -140,20 +141,21 @@ class PdfDataSerializer(serializers.Field):
res = {} res = {}
ev = instance.subevent or instance.order.event ev = instance.subevent or instance.order.event
# This needs to have some extra performance improvements to avoid creating hundreds of queries when with language(instance.order.locale):
# we serialize a list. # This needs to have some extra performance improvements to avoid creating hundreds of queries when
# we serialize a list.
if 'vars' not in self.context: if 'vars' not in self.context:
self.context['vars'] = get_variables(self.context['request'].event) self.context['vars'] = get_variables(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) res[k] = f['evaluate'](instance, instance.order, ev)
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
for k, v in ev._cached_meta_data.items(): for k, v in ev._cached_meta_data.items():
res['meta:' + k] = v res['meta:' + k] = v
return res return res