diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index f65dc1fd1..2bed43116 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -52,7 +52,7 @@ from django.core.exceptions import ValidationError from django.core.files.uploadedfile import SimpleUploadedFile from django.core.validators import MaxValueValidator, MinValueValidator from django.db.models import QuerySet -from django.forms import Select +from django.forms import Select, widgets from django.utils import translation from django.utils.formats import date_format from django.utils.html import escape @@ -154,8 +154,9 @@ class NamePartsWidget(forms.MultiWidget): final_attrs, id='%s_%s' % (id_, i), title=self.scheme['fields'][i][1], - placeholder=self.scheme['fields'][i][1], ) + if not isinstance(widget, widgets.Select): + these_attrs['placeholder'] = self.scheme['fields'][i][1] if self.scheme['fields'][i][0] in REQUIRED_NAME_PARTS: if self.field.required: these_attrs['required'] = 'required' diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index befd5cbca..1c6b456a0 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -57,6 +57,7 @@ from django.urls import reverse from django.utils.crypto import get_random_string from django.utils.formats import date_format from django.utils.functional import cached_property +from django.utils.html import format_html from django.utils.timezone import make_aware, now from django.utils.translation import gettext, gettext_lazy as _ from django_scopes import ScopedManager, scopes_disabled @@ -145,7 +146,7 @@ class EventMixin: ("SHORT_" if short else "") + ("DATETIME_FORMAT" if self.settings.show_times and show_times else "DATE_FORMAT") ) - def get_date_range_display(self, tz=None, force_show_end=False) -> str: + def get_date_range_display(self, tz=None, force_show_end=False, as_html=False) -> str: """ Returns a formatted string containing the start date and the end date of the event with respect to the current locale and to the ``show_date_to`` @@ -153,8 +154,17 @@ class EventMixin: """ tz = tz or self.timezone if (not self.settings.show_date_to and not force_show_end) or not self.date_to: + if as_html: + return format_html( + "", + _date(self.date_from.astimezone(tz), "Y-m-d"), + _date(self.date_from.astimezone(tz), "DATE_FORMAT"), + ) return _date(self.date_from.astimezone(tz), "DATE_FORMAT") - return daterange(self.date_from.astimezone(tz), self.date_to.astimezone(tz)) + return daterange(self.date_from.astimezone(tz), self.date_to.astimezone(tz), as_html) + + def get_date_range_display_as_html(self, tz=None, force_show_end=False) -> str: + return self.get_date_range_display(tz, force_show_end, as_html=True) def get_time_range_display(self, tz=None, force_show_end=False) -> str: """ diff --git a/src/pretix/helpers/daterange.py b/src/pretix/helpers/daterange.py index aeb7d43ab..4bec2e2fb 100644 --- a/src/pretix/helpers/daterange.py +++ b/src/pretix/helpers/daterange.py @@ -33,36 +33,67 @@ # License for the specific language governing permissions and limitations under the License. from django.template.defaultfilters import date as _date +from django.utils.html import format_html from django.utils.translation import get_language, gettext_lazy as _ -def daterange(df, dt): +def daterange(df, dt, as_html=False): lng = get_language() + if df.year == dt.year and df.month == dt.month and df.day == dt.day: + if as_html: + base_format = format_html("", _date(df, "Y-m-d")) + else: + base_format = "{}" + else: + if as_html: + base_format = format_html("{{}}", _date(df, "Y-m-d"), _date(dt, "Y-m-d")) + else: + base_format = "{}{}{}" if lng.startswith("de"): if df.year == dt.year and df.month == dt.month and df.day == dt.day: - return "{}".format(_date(df, "j. F Y")) + return format_html(base_format, _date(df, "j. F Y")) elif df.year == dt.year and df.month == dt.month: - return "{}.–{}".format(_date(df, "j"), _date(dt, "j. F Y")) + return format_html(base_format, _date(df, "j."), "–", _date(dt, "j. F Y")) elif df.year == dt.year: - return "{} – {}".format(_date(df, "j. F"), _date(dt, "j. F Y")) + return format_html(base_format, _date(df, "j. F"), " – ", _date(dt, "j. F Y")) elif lng.startswith("en"): if df.year == dt.year and df.month == dt.month and df.day == dt.day: - return "{}".format(_date(df, "N jS, Y")) + return format_html(base_format, _date(df, "N jS, Y")) elif df.year == dt.year and df.month == dt.month: - return "{} – {}".format(_date(df, "N jS"), _date(dt, "jS, Y")) + return format_html(base_format, _date(df, "N jS"), " – ", _date(dt, "jS, Y")) elif df.year == dt.year: - return "{} – {}".format(_date(df, "N jS"), _date(dt, "N jS, Y")) + return format_html(base_format, _date(df, "N jS"), " – ", _date(dt, "N jS, Y")) elif lng.startswith("es"): if df.year == dt.year and df.month == dt.month and df.day == dt.day: - return "{}".format(_date(df, "DATE_FORMAT")) + return format_html(base_format, _date(df, "DATE_FORMAT")) elif df.year == dt.year and df.month == dt.month: - return "{} - {} de {} de {}".format(_date(df, "j"), _date(dt, "j"), _date(dt, "F"), _date(dt, "Y")) + return format_html( + base_format, + _date(df, "j"), + " - ", + "{} de {} de {}".format(_date(dt, "j"), _date(dt, "F"), _date(dt, "Y")) + ) elif df.year == dt.year: - return "{} de {} - {} de {} de {}".format(_date(df, "j"), _date(df, "F"), _date(dt, "j"), _date(dt, "F"), _date(dt, "Y")) + return format_html( + base_format, + "{} de {}".format(_date(df, "j"), _date(df, "F")), + " - ", + "{} de {} de {}".format(_date(dt, "j"), _date(dt, "F"), _date(dt, "Y")) + ) if df.year == dt.year and df.month == dt.month and df.day == dt.day: - return _date(df, "DATE_FORMAT") + return format_html(base_format, _date(df, "DATE_FORMAT")) + + if as_html: + base_format = "" + return format_html( + "{date_from} – {date_to}", + date_from=format_html(base_format, _date(df, "Y-m-d"), _date(df, "DATE_FORMAT")), + date_to=format_html(base_format, _date(dt, "Y-m-d"), _date(dt, "DATE_FORMAT")), + ) + return _("{date_from} – {date_to}").format( - date_from=_date(df, "DATE_FORMAT"), date_to=_date(dt, "DATE_FORMAT") + date_from=_date(df, "DATE_FORMAT"), + date_to=_date(dt, "DATE_FORMAT"), ) diff --git a/src/pretix/locale/de/LC_MESSAGES/django.po b/src/pretix/locale/de/LC_MESSAGES/django.po index 90a586a25..64efb5845 100644 --- a/src/pretix/locale/de/LC_MESSAGES/django.po +++ b/src/pretix/locale/de/LC_MESSAGES/django.po @@ -24638,7 +24638,7 @@ msgstr "Ihre Bestellung war erfolgreich! Sie finden weiter unten alle Details." #: pretix/presale/templates/pretixpresale/event/order.html:18 #: pretix/presale/templates/pretixpresale/event/order.html:50 msgid "We successfully received your payment. See below for details." -msgstr "Wir haben Ihre Zahlung erfolgreich erhalten. Vielen Dank!" +msgstr "Wir haben Ihre Zahlung erfolgreich erhalten." #: pretix/presale/templates/pretixpresale/event/order.html:35 msgid "" diff --git a/src/pretix/locale/de_Informal/LC_MESSAGES/django.po b/src/pretix/locale/de_Informal/LC_MESSAGES/django.po index 20e33b873..c9b7066f2 100644 --- a/src/pretix/locale/de_Informal/LC_MESSAGES/django.po +++ b/src/pretix/locale/de_Informal/LC_MESSAGES/django.po @@ -24593,7 +24593,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order.html:18 #: pretix/presale/templates/pretixpresale/event/order.html:50 msgid "We successfully received your payment. See below for details." -msgstr "Wir haben deine Zahlung erfolgreich erhalten. Vielen Dank!" +msgstr "Wir haben deine Zahlung erfolgreich erhalten." #: pretix/presale/templates/pretixpresale/event/order.html:35 msgid "" diff --git a/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html b/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html index 7bc578841..3767c880d 100644 --- a/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html +++ b/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html @@ -6,21 +6,26 @@ bank account, using a personal reference code: {% endblocktrans %}

-
- {% if settings.bank_details_type == "sepa" %} - {% trans "Account holder" %}: {{ settings.bank_details_sepa_name }}
- {% trans "IBAN" %}: {{ settings.bank_details_sepa_iban|ibanformat }}
- {% trans "BIC" %}: {{ settings.bank_details_sepa_bic }}
- {% trans "Bank" %}: {{ settings.bank_details_sepa_bank }}
- {% endif %} - {% if details %} - {{ details|linebreaksbr }}
- {% endif %} - {% if code %} - {% trans "Reference code (important):" %} {{ code }} - {% else %} +{% if settings.bank_details_type == "sepa" %} +
+
{% trans "Account holder" %}:
{{ settings.bank_details_sepa_name }}
+
{% trans "IBAN" %}:
{{ settings.bank_details_sepa_iban|ibanformat }}
+
{% trans "BIC" %}:
{{ settings.bank_details_sepa_bic }}
+
{% trans "Bank" %}:
{{ settings.bank_details_sepa_bank }}
+
+{% endif %} + +{% if details %} + {{ details|linebreaks }} +{% endif %} +{% if code %} +
+
{% trans "Reference code (important):" %}
{{ code }}
+
+{% else %} +

{% trans "We will assign you a personal reference code to use after you completed the order." %} - {% endif %} -

+

+{% endif %} diff --git a/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html b/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html index 14a5c8614..0c986c478 100644 --- a/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html +++ b/src/pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html @@ -16,34 +16,43 @@
-

{% if settings.bank_details_type == "sepa" %} - {% trans "Account holder" %}: {{ settings.bank_details_sepa_name }}
- {% trans "IBAN" %}: {{ settings.bank_details_sepa_iban|ibanformat }}
- {% trans "BIC" %}: {{ settings.bank_details_sepa_bic }}
- {% trans "Bank" %}: {{ settings.bank_details_sepa_bank }}
+

+
{% trans "Account holder" %}:
{{ settings.bank_details_sepa_name }} +
{% trans "IBAN" %}:
{{ settings.bank_details_sepa_iban|ibanformat }} +
{% trans "BIC" %}:
{{ settings.bank_details_sepa_bic }} +
{% trans "Bank" %}:
{{ settings.bank_details_sepa_bank }} + {% if details %} +
+ {% endif %} {% endif %} {% if details %} - {{ details|linebreaksbr }}
+ {{ details|linebreaks }} +
{% endif %} - {% trans "Amount:" %} {{ amount|money:event.currency }}
- {% trans "Reference code (important):" %} {{ code }} -

+ {% if not settings.bank_details_type == "sepa" and not details %} +
+ {% endif %} +
{% trans "Amount:" %}
{{ amount|money:event.currency }}
+
{% trans "Reference code (important):" %}
{{ code }}
+

{% trans "After you sent the bank transfer, you can close this window. We will send you an email as soon as we received your payment." %}

{% if settings.bank_details_type == "sepa" %} -