From 8a6488fd816785ddbd9bfe5680ba7ccb7deca3f3 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 22 Mar 2023 13:12:38 +0100 Subject: [PATCH] Order-exports: localize salutation (#3160) --- src/pretix/base/email.py | 13 ++----------- src/pretix/base/exporters/orderlist.py | 10 +++++----- src/pretix/base/models/customers.py | 2 +- src/pretix/base/settings.py | 7 +++++++ 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/pretix/base/email.py b/src/pretix/base/email.py index d40b2a732d..aa190aa095 100644 --- a/src/pretix/base/email.py +++ b/src/pretix/base/email.py @@ -35,16 +35,14 @@ from django.dispatch import receiver from django.template.loader import get_template from django.utils.formats import date_format from django.utils.timezone import now -from django.utils.translation import ( - get_language, gettext_lazy as _, pgettext_lazy, -) +from django.utils.translation import get_language, gettext_lazy as _ from pretix.base.i18n import ( LazyCurrencyNumber, LazyDate, LazyExpiresDate, LazyNumber, ) from pretix.base.models import Event from pretix.base.reldate import RelativeDateWrapper -from pretix.base.settings import PERSON_NAME_SCHEMES +from pretix.base.settings import PERSON_NAME_SCHEMES, get_name_parts_localized from pretix.base.signals import ( register_html_mail_renderers, register_mail_placeholders, ) @@ -693,10 +691,3 @@ def base_placeholders(sender, **kwargs): )) return ph - - -def get_name_parts_localized(name_parts, key): - value = name_parts.get(key, "") - if key == "salutation": - return pgettext_lazy("person_name_salutation", value) - return value diff --git a/src/pretix/base/exporters/orderlist.py b/src/pretix/base/exporters/orderlist.py index 021a8c285e..86e1c27d32 100644 --- a/src/pretix/base/exporters/orderlist.py +++ b/src/pretix/base/exporters/orderlist.py @@ -56,7 +56,7 @@ from pretix.base.models import ( ) from pretix.base.models.orders import OrderFee, OrderPayment, OrderRefund from pretix.base.services.quotas import QuotaAvailability -from pretix.base.settings import PERSON_NAME_SCHEMES +from pretix.base.settings import PERSON_NAME_SCHEMES, get_name_parts_localized from ...control.forms.filter import get_all_payment_providers from ...helpers import GroupConcat @@ -340,7 +340,7 @@ class OrderListExporter(MultiSheetListExporter): if name_scheme and len(name_scheme['fields']) > 1: for k, label, w in name_scheme['fields']: row.append( - order.invoice_address.name_parts.get(k, '') + get_name_parts_localized(order.invoice_address.name_parts, k) ) row += [ order.invoice_address.street, @@ -477,7 +477,7 @@ class OrderListExporter(MultiSheetListExporter): if name_scheme and len(name_scheme['fields']) > 1: for k, label, w in name_scheme['fields']: row.append( - order.invoice_address.name_parts.get(k, '') + get_name_parts_localized(order.invoice_address.name_parts, k) ) row += [ order.invoice_address.street, @@ -660,7 +660,7 @@ class OrderListExporter(MultiSheetListExporter): if name_scheme and len(name_scheme['fields']) > 1: for k, label, w in name_scheme['fields']: row.append( - op.attendee_name_parts.get(k, '') + get_name_parts_localized(op.attendee_name_parts, k) ) row += [ op.attendee_email, @@ -721,7 +721,7 @@ class OrderListExporter(MultiSheetListExporter): if name_scheme and len(name_scheme['fields']) > 1: for k, label, w in name_scheme['fields']: row.append( - order.invoice_address.name_parts.get(k, '') + get_name_parts_localized(order.invoice_address.name_parts, k) ) row += [ order.invoice_address.street, diff --git a/src/pretix/base/models/customers.py b/src/pretix/base/models/customers.py index aa8e6b2b9e..bf2d740127 100644 --- a/src/pretix/base/models/customers.py +++ b/src/pretix/base/models/customers.py @@ -221,7 +221,7 @@ class Customer(LoggedModel): return salted_hmac(key_salt, payload).hexdigest() def get_email_context(self): - from pretix.base.email import get_name_parts_localized + from pretix.base.settings import get_name_parts_localized ctx = { 'name': self.name, 'organizer': self.organizer.name, diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 58e803d54d..9040c04e06 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -3051,6 +3051,13 @@ def concatenation_for_salutation(d): return " ".join(filter(None, (salutation, title, given_name, family_name))) +def get_name_parts_localized(name_parts, key): + value = name_parts.get(key, "") + if key == "salutation": + return pgettext_lazy("person_name_salutation", value) + return value + + PERSON_NAME_SCHEMES = OrderedDict([ ('given_family', { 'fields': (