mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Fix reversed phone numbers in rtl languages
This commit is contained in:
@@ -285,7 +285,7 @@ DEFAULT_VARIABLES = OrderedDict((
|
||||
("telephone", {
|
||||
"label": _("Phone number"),
|
||||
"editor_sample": "+01 1234 567890",
|
||||
"evaluate": lambda op, order, ev: phone_format(order.phone)
|
||||
"evaluate": lambda op, order, ev: phone_format(order.phone, html=False)
|
||||
}),
|
||||
("email", {
|
||||
"label": _("Email"),
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from django import template
|
||||
from django.utils.html import escape
|
||||
from django.utils.safestring import mark_safe
|
||||
from phonenumber_field.phonenumber import PhoneNumber
|
||||
from phonenumbers import NumberParseException
|
||||
|
||||
@@ -27,17 +29,20 @@ register = template.Library()
|
||||
|
||||
|
||||
@register.filter("phone_format")
|
||||
def phone_format(value: str):
|
||||
def phone_format(value: str, html=True):
|
||||
if not value:
|
||||
return ""
|
||||
|
||||
if isinstance(value, str):
|
||||
v = ""
|
||||
elif isinstance(value, str):
|
||||
try:
|
||||
return PhoneNumber.from_string(value).as_international
|
||||
v = PhoneNumber.from_string(value).as_international
|
||||
except NumberParseException:
|
||||
return value
|
||||
v = value
|
||||
elif isinstance(value, PhoneNumber) and value.national_number:
|
||||
v = value.as_international
|
||||
else:
|
||||
v = str(value)
|
||||
|
||||
if isinstance(value, PhoneNumber) and value.national_number:
|
||||
return value.as_international
|
||||
if html:
|
||||
v = mark_safe('<span class="force-ltr">' + escape(v) + '</span>')
|
||||
|
||||
return str(value)
|
||||
return v
|
||||
|
||||
@@ -60,6 +60,7 @@ from pretix.base.services.cart import (
|
||||
from pretix.base.services.memberships import validate_memberships_in_order
|
||||
from pretix.base.services.orders import perform_order
|
||||
from pretix.base.signals import validate_cart_addons
|
||||
from pretix.base.templatetags.phone_format import phone_format
|
||||
from pretix.base.templatetags.rich_text import rich_text_snippet
|
||||
from pretix.base.views.tasks import AsyncAction
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
@@ -1088,7 +1089,7 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep):
|
||||
ctx['contact_info'] = []
|
||||
phone = self.cart_session.get('contact_form_data', {}).get('phone')
|
||||
if phone:
|
||||
ctx['contact_info'].append((_('Phone number'), phone))
|
||||
ctx['contact_info'].append((_('Phone number'), phone_format(phone)))
|
||||
responses = contact_form_fields.send(self.event, request=self.request)
|
||||
for r, response in sorted(responses, key=lambda r: str(r[0])):
|
||||
for key, value in response.items():
|
||||
|
||||
@@ -20,6 +20,11 @@ html.rtl {
|
||||
}
|
||||
}
|
||||
|
||||
.force-ltr {
|
||||
direction: ltr !important;
|
||||
unicode-bidi: embed;
|
||||
}
|
||||
|
||||
@media(min-width: $screen-sm-min) {
|
||||
html.rtl .nameparts-form-group {
|
||||
input, select {
|
||||
|
||||
Reference in New Issue
Block a user