Compare commits

...
Author SHA1 Message Date
Richard Schreiber b88a2153f2 Seating: improve UI with soldout plan with waitinglist & uncategorized products available 2024-08-28 12:38:18 +02:00
Albizuri c346e3a7f4 Translations: Update Basque
Currently translated at 44.6% (2560 of 5737 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/eu/

powered by weblate
2024-08-28 12:10:11 +02:00
Tinna Sandström a26f219faf Translations: Update Swedish
Currently translated at 99.0% (5684 of 5736 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2024-08-28 12:10:11 +02:00
Anarion Dunedain 74fb8e7d0c Translations: Update Polish
Currently translated at 100.0% (232 of 232 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2024-08-28 12:10:11 +02:00
Anarion Dunedain b9dbeef1ef Translations: Update Polish
Currently translated at 100.0% (5736 of 5736 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2024-08-28 12:10:11 +02:00
Raphael Michel 54079797d2 Event list: Do not include old or inactive subevents in event list (Z#23163541) (#4415) 2024-08-28 09:28:35 +02:00
Raphael Michel 02a4ed4be2 Teams: Improve handling of revoked keys and team deletion (Z#23163674) (#4414) 2024-08-28 09:27:53 +02:00
Raphael Michel 7f7c95aedb Bump version to 2024.9.0.dev0 2024-08-28 09:18:59 +02:00
Raphael Michel 47af20d417 Bump version to 2024.8.0 2024-08-28 09:18:35 +02:00
Mira 91e69f793d Show weekday in subevent dates [Z#23161884] (#4383) 2024-08-27 22:22:44 +02:00
14 changed files with 823 additions and 557 deletions
+1 -1
View File
@@ -19,4 +19,4 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
__version__ = "2024.8.0.dev0"
__version__ = "2024.9.0.dev0"
+4 -9
View File
@@ -60,7 +60,6 @@ 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
@@ -180,14 +179,10 @@ 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(
"<time datetime=\"{}\">{}</time>",
_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), as_html)
df, dt = self.date_from, self.date_from
else:
df, dt = self.date_from, self.date_to
return daterange(df.astimezone(tz), dt.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)
@@ -102,16 +102,24 @@
</tr>
</thead>
<tbody>
{% for t in team.active_tokens %}
{% for t in tokens %}
<tr>
<td>
<td {% if not t.active %}class="text-muted"{% endif %}>
{% if not t.active %}
<del>
{% endif %}
{{ t.name }}
{% if not t.active %}
</del>
{% endif %}
</td>
<td class="text-right flip">
<button type="submit" name="remove-token" value="{{ t.id }}"
class="btn btn-danger btn-sm btn-block">
<i class="fa fa-times"></i> {% trans "Remove" %}
</button>
{% if t.active %}
<button type="submit" name="remove-token" value="{{ t.id }}"
class="btn btn-danger btn-sm btn-block">
<i class="fa fa-times"></i> {% trans "Remove" %}
</button>
{% endif %}
</td>
</tr>
{% endfor %}
+18 -7
View File
@@ -686,14 +686,24 @@ class TeamDeleteView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
try:
self.object.log_action('pretix.team.deleted', user=self.request.user)
self.object.delete()
except ProtectedError:
messages.error(
self.request,
_(
'The team could not be deleted as some constraints (e.g. data created by '
'plug-ins) do not allow it.'
except ProtectedError as e:
is_logs = any(isinstance(e, LogEntry) for e in e.protected_objects)
if is_logs:
messages.error(
self.request,
_(
"The team could not be deleted because the team or one of its API tokens is part of "
"historical audit logs."
)
)
else:
messages.error(
self.request,
_(
'The team could not be deleted as some constraints (e.g. data created by '
'plug-ins) do not allow it.'
)
)
)
return redirect(success_url)
messages.success(request, _('The selected team has been deleted.'))
@@ -723,6 +733,7 @@ class TeamMemberView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
ctx = super().get_context_data(**kwargs)
ctx['add_form'] = self.add_form
ctx['add_token_form'] = self.add_token_form
ctx['tokens'] = self.object.tokens.order_by("-active", "name", "pk")
return ctx
def _send_invite(self, instance):
+2 -2
View File
@@ -53,14 +53,14 @@ def daterange(df, dt, as_html=False):
if lng.startswith("de"):
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
return format_html(base_format, _date(df, "j. F Y"))
return format_html(base_format, _date(df, "D, j. F Y"))
elif df.year == dt.year and df.month == dt.month:
return format_html(base_format, _date(df, "j."), "", _date(dt, "j. F Y"))
elif df.year == dt.year:
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_html(base_format, _date(df, "N jS, Y"))
return format_html(base_format, _date(df, "D, N jS, Y"))
elif df.year == dt.year and df.month == dt.month:
return format_html(base_format, _date(df, "N jS"), " ", _date(dt, "jS, Y"))
elif df.year == dt.year:
File diff suppressed because it is too large Load Diff
+68 -116
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
"PO-Revision-Date: 2024-07-01 16:00+0000\n"
"PO-Revision-Date: 2024-08-28 10:03+0000\n"
"Last-Translator: Anarion Dunedain <anarion80@gmail.com>\n"
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix/pl/"
">\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.6.1\n"
"X-Generator: Weblate 5.7\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -259,10 +259,9 @@ msgid "Unknown plugin: '{name}'."
msgstr "Nieznany plugin: '{name}'."
#: pretix/api/serializers/event.py:295
#, fuzzy, python-brace-format
#| msgid "Unknown plugin: '{name}'."
#, python-brace-format
msgid "Restricted plugin: '{name}'."
msgstr "Nieznany plugin: '{name}'."
msgstr "Plugin z ograniczeniami: '{name}'."
#: pretix/api/serializers/item.py:86 pretix/api/serializers/item.py:148
#: pretix/api/serializers/item.py:359
@@ -505,10 +504,8 @@ msgid "Order denied"
msgstr "Zamówienie odrzucone"
#: pretix/api/webhooks.py:313
#, fuzzy
#| msgid "Order denied"
msgid "Order deleted"
msgstr "Zamówienie odrzucone"
msgstr "Zamówienie skasowane"
#: pretix/api/webhooks.py:317
msgid "Ticket checked in"
@@ -2287,10 +2284,8 @@ msgid "Order comment"
msgstr "Komentarz do zamówienia"
#: pretix/base/exporters/orderlist.py:622
#, fuzzy
#| msgid "Add-On to position #%(posid)s"
msgid "Add-on to position ID"
msgstr "Dodatek do pozycji #%(posid)s"
msgstr "Dodatek do pozycji ID"
#: pretix/base/exporters/orderlist.py:650 pretix/base/pdf.py:340
msgid "Invoice address street"
@@ -3873,6 +3868,10 @@ msgid ""
"replacement, our new plugin \"Auto check-in\" can be used. When we remove "
"this option, we will automatically migrate your event to use the new plugin."
msgstr ""
"Ta opcja jest przestarzała i zostanie usunięta w ciągu najbliższych "
"miesięcy. Jako zamiennik można użyć naszej nowej wtyczki „Auto check-in”. "
"Gdy usuniemy tę opcję, automatycznie zmigrujemy Twoje wydarzenie do "
"korzystania z nowej wtyczki."
#: pretix/base/models/checkin.py:340
msgid "Entry"
@@ -5711,10 +5710,8 @@ msgid "Meta information"
msgstr "Metadane"
#: pretix/base/models/orders.py:303
#, fuzzy
#| msgid "Meta information"
msgid "API meta information"
msgstr "Metadane"
msgstr "Metadane API"
#: pretix/base/models/orders.py:392 pretix/plugins/sendmail/forms.py:236
#: pretix/plugins/sendmail/forms.py:391 pretix/plugins/sendmail/views.py:272
@@ -8041,10 +8038,9 @@ msgstr ""
"wydarzenia."
#: pretix/base/services/mail.py:121
#, fuzzy
#| msgid "The selected media type is not enabled in your organizer settings."
msgid "This prefix has been set in your event or organizer settings."
msgstr "Wybrany typ nośnika nie jest włączony w ustawieniach organizatora."
msgstr ""
"Prefiks ten został ustawiony w ustawieniach wydarzenia lub organizatora."
#: pretix/base/services/mail.py:278
#, python-brace-format
@@ -9675,6 +9671,11 @@ msgid ""
"if they want more than one ticket, as every entry only grants one single "
"ticket at a time."
msgstr ""
"Przy zwiększonym limicie klient może poprosić o więcej niż jeden bilet na "
"konkretny produkt przy użyciu tego samego, unikalnego adresu e-mail. Jednak "
"niezależnie od tego ustawienia, klient będzie musiał wypełnić formularz "
"listy oczekujących wielokrotnie, jeśli chce otrzymać więcej niż jeden bilet, "
"ponieważ każdy wpis przyznaje tylko jeden bilet na raz."
#: pretix/base/settings.py:1493
msgid "Show number of check-ins to customer"
@@ -11705,10 +11706,9 @@ msgstr ""
"Data ostatniej płatności nie może przypadać przed końcem przedsprzedaży."
#: pretix/base/settings.py:3811
#, fuzzy, python-brace-format
#| msgid "Please enter a valid sales channel."
#, python-brace-format
msgid "The value \"{identifier}\" is not a valid sales channel."
msgstr "Wprowadź dostępny kanał sprzedaży."
msgstr "Wartość \"{identifier} nie jest prawidłowym kanałem sprzedaży."
#: pretix/base/settings.py:3826
msgid "This needs to be disabled if other NFC-based types are active."
@@ -15034,19 +15034,14 @@ msgid "or"
msgstr "lub"
#: pretix/control/forms/vouchers.py:293
#, fuzzy
#| msgid ""
#| "You can either supply a list of email addresses with one email address "
#| "per line, or a CSV file with a title column and one or more of the "
#| "columns \"email\", \"number\", \"name\", or \"tag\"."
msgid ""
"You can either supply a list of email addresses with one email address per "
"line, or the contents of a CSV file with a title column and one or more of "
"the columns \"email\", \"number\", \"name\", or \"tag\"."
msgstr ""
"Możesz dostarczyć listę adresów e-mail z jednym adresem e-mail na wiersz lub "
"plik CSV z kolumną tytułu i jedną lub kilkoma kolumnami \"e-mail\", "
"\"numer\", \"nazwa\" lub \"tag\"."
"zawartość pliku CSV z kolumną tytułu i jedną lub kilkoma kolumnami \"e-mail\""
", \"numer\", \"nazwa\" lub \"tag\"."
#: pretix/control/forms/vouchers.py:327
msgid "Maximum usages per voucher"
@@ -19187,17 +19182,12 @@ msgstr ""
"używana razem z funkcją minimalnej odległości w naszym module planu miejsc."
#: pretix/control/templates/pretixcontrol/event/settings.html:377
#, fuzzy
#| msgctxt "sendmail_form"
#| msgid "Waiting for"
msgid "Waiting customers"
msgstr "Oczekiwanie na"
msgstr "Oczekujący klienci"
#: pretix/control/templates/pretixcontrol/event/settings.html:383
#, fuzzy
#| msgid "Enable waiting list"
msgid "Manage waiting list"
msgstr "Włącz listę oczekujących"
msgstr "Zarządzaj listą oczekujących"
#: pretix/control/templates/pretixcontrol/event/settings.html:396
msgid "Item metadata"
@@ -21128,6 +21118,9 @@ msgid ""
"will not affect the membership. Memberships can be managed in the customer "
"account."
msgstr ""
"Sprzedaż tej pozycji spowodowała utworzenie członkostwa. Zmiana produktu w "
"tym miejscu nie wpłynie na członkostwo. Członkostwem można zarządzać na "
"koncie klienta."
#: pretix/control/templates/pretixcontrol/order/change.html:208
#: pretix/control/templates/pretixcontrol/order/change.html:426
@@ -21178,6 +21171,9 @@ msgid ""
"ticket here will not affect the membership. Memberships can be managed in "
"the customer account."
msgstr ""
"Sprzedaż tej pozycji spowodowała utworzenie członkostwa. Zmiana ważności "
"biletu w tym miejscu nie wpłynie na członkostwo. Członkostwem można "
"zarządzać na koncie klienta."
#: pretix/control/templates/pretixcontrol/order/change.html:290
msgid ""
@@ -23943,30 +23939,24 @@ msgid "Flow multiple lines downward from specified position"
msgstr "Wypełnij wiele linii w dół od określonej pozycji"
#: pretix/control/templates/pretixcontrol/pdf/index.html:452
#, fuzzy
#| msgid "Automatically refund money if possible"
msgid "Automatically reduce font size to fit content"
msgstr "Automatycznie zwróć pieniądze, jeśli to możliwe"
msgstr "Automatyczne zmniejsz rozmiar czcionki w celu dopasowania do treści"
#: pretix/control/templates/pretixcontrol/pdf/index.html:458
msgid "Allow long words to be split (preview is not accurate)"
msgstr ""
msgstr "Zezwalaj na dzielenie długich słów (podgląd nie jest dokładny)"
#: pretix/control/templates/pretixcontrol/pdf/index.html:469
msgid "Add a new object"
msgstr "Dodaj nowy obiekt"
#: pretix/control/templates/pretixcontrol/pdf/index.html:474
#, fuzzy
#| msgid "Text color"
msgid "Text box"
msgstr "Kolor tekstu"
msgstr "Pole tekstowe"
#: pretix/control/templates/pretixcontrol/pdf/index.html:478
#, fuzzy
#| msgid "Event created"
msgid "Text (deprecated)"
msgstr "Wydarzenie utworzone"
msgstr "Tekst (przestarzałe)"
#: pretix/control/templates/pretixcontrol/pdf/index.html:482
msgid "QR code for Check-In"
@@ -24005,6 +23995,9 @@ msgid ""
"use pretixPRINT version %(print_version)s (or newer) or pretixSCAN Desktop "
"version %(scan_version)s (or newer)."
msgstr ""
"Ten układ wykorzystuje nowe funkcje. Jeśli drukujesz ze swojego urządzenia, "
"upewnij się, że używasz pretixPRINT w wersji %(print_version)s (lub nowszej) "
"lub pretixSCAN Desktop w wersji %(scan_version)s (lub nowszej)."
#: pretix/control/templates/pretixcontrol/pdf/placeholders.html:16
msgid "Available placeholders"
@@ -27223,133 +27216,99 @@ msgstr "Zespół Pretix"
#: pretix/plugins/autocheckin/apps.py:39
msgid "Automatically check-in specific tickets after they have been sold."
msgstr ""
msgstr "Automatycznie odpraw określone bilety po ich sprzedaży."
#: pretix/plugins/autocheckin/forms.py:60
#: pretix/plugins/autocheckin/models.py:82
#, fuzzy
#| msgid "All payment providers"
msgid "Only including usage of payment providers"
msgstr "Wszyscy dostawcy płatności"
msgstr "Tylko z uwzględnieniem korzystania z dostawców usług płatniczych"
#: pretix/plugins/autocheckin/forms.py:120
#, fuzzy
#| msgid "All actions"
msgid "All variations"
msgstr "Wszystkie działania"
msgstr "Wszystkie warianty"
#: pretix/plugins/autocheckin/forms.py:248
msgid ""
"When restricting by payment method, the rule should run after the payment "
"was received."
msgstr ""
"W przypadku ograniczenia według metody płatności reguła powinna zostać "
"uruchomiona po otrzymaniu płatności."
#: pretix/plugins/autocheckin/models.py:36
#, fuzzy
#| msgid "New order placed"
msgid "After order was placed"
msgstr "Złożono zamówienie"
msgstr "Po złożeniu zamówienia"
#: pretix/plugins/autocheckin/models.py:37
#, fuzzy
#| msgid "Mark order as paid"
msgid "After order was paid"
msgstr "Oznacz zamówienie jako opłacone"
msgstr "Po opłaceniu zamówienia"
#: pretix/plugins/autocheckin/models.py:48
#, fuzzy
#| msgid "If you keep this empty, all input will be allowed."
msgid ""
"If you keep this empty, all lists that match the purchased product will be "
"used."
msgstr ""
"Jeśli pozostawisz to pole puste, wszystkie dane wejściowe będą dozwolone."
"Jeśli to pole pozostanie puste, użyte zostaną wszystkie listy pasujące do "
"zakupionego produktu."
#: pretix/plugins/autocheckin/models.py:59
#, fuzzy
#| msgid "Add sales channel"
msgid "All sales channels"
msgstr "Dodaj kanał sprzedaży"
msgstr "Wszystkie kanały sprzedaży"
#: pretix/plugins/autocheckin/models.py:69
#, fuzzy
#| msgid "Product variations"
msgid "All products and variations"
msgstr "Warianty produktu"
msgstr "Wszystkie produkty i warianty produktu"
#: pretix/plugins/autocheckin/models.py:78
#, fuzzy
#| msgid "Enable payment method"
msgid "All payment methods"
msgstr "Aktywuj metodę płatności"
msgstr "Wszystkie metody płatności"
#: pretix/plugins/autocheckin/signals.py:47
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:13
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:13
#, fuzzy
#| msgid "Automated check-in"
msgid "Auto check-in"
msgstr "Automatyczna odprawa"
msgstr "Auto-odprawa"
#: pretix/plugins/autocheckin/signals.py:70
#, fuzzy
#| msgid "An email rule was created"
msgid "An auto check-in rule was created"
msgstr "Utworzono regułę wiadomości e-mail"
msgstr "Utworzono regułę auto-odprawy"
#: pretix/plugins/autocheckin/signals.py:72
#, fuzzy
#| msgid "An email rule was updated"
msgid "An auto check-in rule was updated"
msgstr "Zaktualizowano regułę wiadomości e-mail"
msgstr "Zaktualizowano regułę auto-odprawy"
#: pretix/plugins/autocheckin/signals.py:75
#, fuzzy
#| msgid "An email rule was deleted"
msgid "An auto check-in rule was deleted"
msgstr "Usunięto regułę wiadomości e-mail"
msgstr "Usunięto regułę auto-odprawy"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:4
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:6
#, fuzzy
#| msgid "Custom check-in rule"
msgid "Create auto check-in rule"
msgstr "Niestandardowa reguła odprawy"
msgstr "Utwórz regułę auto-odprawy"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/add.html:18
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:18
#, fuzzy
#| msgctxt "discount"
#| msgid "Condition"
msgid "Conditions"
msgstr "Stan"
msgstr "Warunki"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/delete.html:4
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/delete.html:6
#, fuzzy
#| msgid "Delete check-in list"
msgid "Delete auto check-in rule"
msgstr "Usuń listę odpraw"
msgstr "Usuń regułę auto-odprawy"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/delete.html:9
#, fuzzy
#| msgid "Are you sure you want to delete the gate?"
msgid "Are you sure you want to delete the auto check-in rule?"
msgstr "Czy na pewno chcesz usunąć bramkę?"
msgstr "Czy na pewno chcesz usunąć regułę auto-odprawy?"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:4
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/edit.html:6
#, fuzzy
#| msgid "Custom check-in rule"
msgid "Auto check-in rule"
msgstr "Niestandardowa reguła odprawy"
msgstr "Reguła auto-odprawy"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:5
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:7
#, fuzzy
#| msgid "Custom check-in rule"
msgid "Auto check-in rules"
msgstr "Niestandardowa reguła odprawy"
msgstr "Reguły auto-odprawy"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:11
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:96
@@ -27358,16 +27317,12 @@ msgstr "Nie stworzyłeś jeszcze żadnych zasad."
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:17
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:22
#, fuzzy
#| msgid "Create a new check-in list"
msgid "Create a new check-in rule"
msgstr "Utwórz nową listę odpraw"
msgstr "Utwórz nową regułę odpraw"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:32
#, fuzzy
#| msgid "Payment method"
msgid "Payment methods"
msgstr "Metoda płatności"
msgstr "Metody płatności"
#: pretix/plugins/autocheckin/views.py:119 pretix/plugins/sendmail/views.py:628
msgid "Your rule has been created."
@@ -29040,6 +28995,9 @@ msgid ""
"Refunding the amount via PayPal failed: The original payment does not "
"contain the required information to issue an automated refund."
msgstr ""
"Zwrot kwoty za pośrednictwem systemu PayPal nie powiódł się: Oryginalna "
"płatność nie zawiera informacji wymaganych do automatycznego zwrotu "
"pieniędzy."
#: pretix/plugins/paypal2/payment.py:1087
msgid "PayPal APM"
@@ -30684,26 +30642,20 @@ msgstr ""
"WeChat. Prosimy o zachowanie danych logowania."
#: pretix/plugins/stripe/payment.py:1788
#, fuzzy
#| msgid "WeChat Pay via Stripe"
msgid "Revolut Pay via Stripe"
msgstr "WeChat Pay przez Stripe"
msgstr "Revolut Pay przez Stripe"
#: pretix/plugins/stripe/payment.py:1789
msgid "Revolut Pay"
msgstr ""
msgstr "Revolut Pay"
#: pretix/plugins/stripe/payment.py:1793
#, fuzzy
#| msgid ""
#| "This payment method is available to users of the Chinese app WeChat. "
#| "Please keep your login information available."
msgid ""
"This payment method is available to users of the Revolut app. Please keep "
"your login information available."
msgstr ""
"Ta metoda płatności jest dostępna dla użytkowników chińskiej aplikacji "
"WeChat. Prosimy o zachowanie danych logowania."
"Ta metoda płatności jest dostępna dla użytkowników aplikacji Revolut. "
"Prosimy o zachowanie danych logowania."
#: pretix/plugins/stripe/payment.py:1807
msgid "PayPal via Stripe"
+4 -8
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
"PO-Revision-Date: 2024-06-27 17:00+0000\n"
"PO-Revision-Date: 2024-08-28 10:03+0000\n"
"Last-Translator: Anarion Dunedain <anarion80@gmail.com>\n"
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix-js/"
"pl/>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.6.1\n"
"X-Generator: Weblate 5.7\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -572,16 +572,12 @@ msgid "Group of objects"
msgstr "Grupa obiektów"
#: pretix/static/pretixcontrol/js/ui/editor.js:899
#, fuzzy
#| msgid "Text object"
msgid "Text object (deprecated)"
msgstr "Obiekt tekstowy"
msgstr "Obiekt tekstowy (przestarzały)"
#: pretix/static/pretixcontrol/js/ui/editor.js:901
#, fuzzy
#| msgid "Text object"
msgid "Text box"
msgstr "Obiekt tekstowy"
msgstr "Pole tekstowe"
#: pretix/static/pretixcontrol/js/ui/editor.js:903
msgid "Barcode area"
+37 -41
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
"PO-Revision-Date: 2024-08-15 23:00+0000\n"
"PO-Revision-Date: 2024-08-28 10:03+0000\n"
"Last-Translator: Tinna Sandström <tinna@coeo.events>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/"
"sv/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Weblate 5.7\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -3151,7 +3151,7 @@ msgstr "Tid"
#: pretix/base/forms/widgets.py:234 pretix/base/forms/widgets.py:239
msgid "Business or institutional customer"
msgstr "Företag eller institutionell kund"
msgstr "Företag, förening eller organisation"
#: pretix/base/forms/widgets.py:238
msgid "Individual customer"
@@ -4778,10 +4778,9 @@ msgid ""
"paid and completed. You can use this e.g. for discounted tickets that are "
"only available to specific groups."
msgstr ""
"Om denna produkt är del av en beställning, kommer beställningen behöva "
"godkännas av dig innan den kan betalas och slutföras. Du kan t.ex. använda "
"detta för rabatterade biljetter som endast är tillgängliga för en specifik "
"grupp."
"Om denna produkt är del av en bokning, kommer bokningen behöva godkännas av "
"dig innan den kan betalas och slutföras. Du kan t.ex. använda detta för "
"rabatterade biljetter som endast är tillgängliga för en specifik grupp."
#: pretix/base/models/items.py:575
msgid ""
@@ -5094,9 +5093,9 @@ msgid ""
"paid and completed. You can use this e.g. for discounted tickets that are "
"only available to specific groups."
msgstr ""
"Om denna variant är del av en beställning, kommer beställningen behöva "
"godkännas av dig innan den kan betalas och slutföras. Du kan t.ex. använda "
"detta för rabatterade biljetter som endast är tillgängliga för vissa grupper."
"Om denna variant är del av en bokning, kommer bokningen behöva godkännas av "
"dig innan den kan betalas och slutföras. Du kan t.ex. använda detta för "
"rabatterade biljetter som endast är tillgängliga för vissa grupper."
#: pretix/base/models/items.py:1143 pretix/control/navigation.py:577
#: pretix/control/templates/pretixcontrol/organizers/membershiptypes.html:4
@@ -6794,7 +6793,7 @@ msgid ""
"Create an invoice for orders using bank transfer immediately if the event is "
"otherwise configured to create invoices after payment is completed."
msgstr ""
"Skapa en faktura för beställningar som använder banköverföring omedelbart om "
"Skapa en faktura för bokningen som använder banköverföring omedelbart om "
"evenemanget annars är konfigurerat att skapa fakturor efter att betalningen "
"är slutförd."
@@ -10429,13 +10428,12 @@ msgid ""
msgstr ""
"Hej,\n"
"\n"
"vi fick mottagit din beställning för {event} med ett totalt värde\n"
"vi fick mottagit din bokning för {event} med ett totalt värde\n"
"av {total_with_currency}. Slutför din betalning före {expire_date}.\n"
"\n"
"{payment_info}\n"
"\n"
"Du kan ändra din beställningsinformation och se status för din beställning "
"på\n"
"Du kan ändra din bokningsinformation och se status för din bokning på\n"
"{url}\n"
"\n"
"Med vänliga hälsningar, \n"
@@ -10713,13 +10711,13 @@ msgid ""
msgstr ""
"Hej,\n"
"\n"
"Ditt betalningsförsök för din beställning för {event} har misslyckats.\n"
"Ditt betalningsförsök för din bokning för {event} har misslyckats.\n"
"\n"
"Din beställning är fortfarande giltig och du kan försöka betala igen med "
"samma eller en annan betalningsmetod. Vänligen slutför din betalning före "
"Din bokning är fortfarande giltig och du kan försöka betala igen med samma "
"eller en annan betalningsmetod. Vänligen slutför din betalning före "
"{expire_date}.\n"
"\n"
"Du kan försöka betala igen och se statusen för din beställning på\n"
"Du kan försöka betala igen och se statusen för din bokning på\n"
"{url}\n"
"\n"
"Vänliga hälsningar,\n"
@@ -10842,10 +10840,10 @@ msgid ""
msgstr ""
"Hej,\n"
"\n"
"Vi godkände din beställning för {event} och välkomnar dig gärna\n"
"Vi godkände din bokning för {event} och välkomnar dig gärna\n"
"vid vårt evenemang.\n"
"\n"
"Slutför beställningen genom att betala före {expire_date}.\n"
"Slutför bokningen genom att betala före {expire_date}.\n"
"\n"
"Du kan välja en betalningsmetod och utföra betalningen här:\n"
"\n"
@@ -27759,7 +27757,7 @@ msgid ""
"address and select \"Business or institutional customer\"."
msgstr ""
"Tillåt endast val av denna betalningsleverantör för kunder som anger en "
"fakturaadress och väljer \"Företags- eller institutionell kund\"."
"fakturaadress och väljer \"Företag, förening eller organisation\"."
#: pretix/plugins/banktransfer/payment.py:288
msgid "Please fill out your bank account details."
@@ -27921,7 +27919,7 @@ msgid ""
"code after you completed the order."
msgstr ""
"Vänligen påbörja inte en betalning ännu. Vi kommer tilldela dig en personlig "
"referenskod efter att du har slutfört beställningen."
"referenskod efter att du har slutfört bokningen."
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_confirm.html:26
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:26
@@ -27936,7 +27934,7 @@ msgid ""
"order."
msgstr ""
"Vi kommer tilldela dig en personlig referenskod att använda efter att du har "
"slutfört beställningen."
"slutfört bokningen."
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_confirm.html:36
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html:36
@@ -28736,7 +28734,7 @@ msgid ""
msgstr ""
"Efter att du har klickat på fortsätt kommer vi att dirigera dig till PayPal "
"för att fylla i dina betalningsuppgifter. Du kommer sedan att dirigeras "
"tillbaka hit för att granska och bekräfta din beställning."
"tillbaka hit för att granska och bekräfta din bokning."
#: pretix/plugins/paypal/templates/pretixplugins/paypal/control.html:7
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control.html:6
@@ -29009,7 +29007,7 @@ msgstr "Beställningen godkänd."
#: pretix/plugins/paypal2/signals.py:65
msgctxt "paypal"
msgid "Order completed."
msgstr "Beställningen slutförd."
msgstr "Bokningen slutförd."
#: pretix/plugins/paypal2/signals.py:66
msgctxt "paypal"
@@ -29061,8 +29059,7 @@ msgstr ""
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_confirm.html:15
msgid "We will then charge your PayPal account and finalize the order."
msgstr ""
"Vi kommer sedan att debitera ditt PayPal-konto och slutföra beställningen."
msgstr "Vi kommer sedan att debitera ditt PayPal-konto och slutföra bokningen."
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/checkout_payment_confirm.html:27
msgid ""
@@ -29122,8 +29119,7 @@ msgid ""
"money will not be disbursed and the order remain in its pending state."
msgstr ""
"Denna betalning granskas av PayPal. Tills granskningen är avslutad kommer "
"pengarna inte att utbetalas och beställningen förblir i sitt väntande "
"tillstånd."
"pengarna inte att utbetalas och bokningen förblir väntande."
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:5
#: pretix/plugins/stripe/templates/pretixplugins/stripe/sca.html:5
@@ -30771,9 +30767,9 @@ msgid ""
"provider to complete your payment. You will then be redirected back here to "
"get your tickets."
msgstr ""
"Efter att du har skickat in din beställning, kommer vi att omdirigera dig "
"till betaltjänstleverantören för att slutföra din betalning. Du kommer sedan "
"att omdirigeras tillbaka hit för att hämta dina biljetter."
"Efter att du har skickat in din bokning, kommer vi att omdirigera dig till "
"betaltjänstleverantören för att slutföra din betalning. Du kommer sedan att "
"omdirigeras tillbaka hit för att hämta dina biljetter."
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:9
msgid ""
@@ -31270,7 +31266,7 @@ msgstr "Uppgifterna för betalning är inte kompletta."
#: pretix/presale/checkoutflow.py:1442
msgctxt "checkoutflow"
msgid "Review order"
msgstr "Granska beställning"
msgstr "Granska bokning"
#: pretix/presale/checkoutflow.py:1536
msgid "You need to check all checkboxes on the bottom of the page."
@@ -31629,15 +31625,15 @@ msgstr "Lägg till biljetter för ett annat datum"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:9
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:10
msgid "Review order"
msgstr "Granska beställning"
msgstr "Granska bokning"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:12
msgid "Please review the details below and confirm your order."
msgstr "Kontrollera uppgifterna nedan och slutför din beställning."
msgstr "Kontrollera uppgifterna nedan och slutför din bokning."
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:14
msgid "Please hang tight, we're finalizing your order!"
msgstr "Vänligen vänta, vi slutför din beställning!"
msgstr "Vänligen vänta, vi slutför din bokning!"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:22
msgid "Add or remove tickets"
@@ -31698,7 +31694,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:207
msgid "Place binding order"
msgstr "Slutför beställning"
msgstr "Slutför bokningen"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:209
msgid "Submit registration"
@@ -31831,14 +31827,14 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:8
msgid "Before we continue, we need you to answer some questions."
msgstr "Innan vi kan fortsätta, måste du svara på några frågor."
msgstr "För att fortsätta registreringen fyller du i formuläret nedan."
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:10
msgid ""
"You need to fill all fields that are marked with <span>*</span> to continue."
msgstr ""
"Du måste svara på alla frågor som är markerade med <span>*</span> för att "
"fortsätta."
"komma vidare."
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:51
msgid "Auto-fill with address"
@@ -32249,7 +32245,7 @@ msgid ""
"your purchase."
msgstr ""
"När varorna lagts i din varukorg, så har du %(time)s minuter att slutföra "
"beställning."
"bokningen."
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:321
#, python-format
@@ -32882,7 +32878,7 @@ msgid ""
"can pay and complete this order."
msgstr ""
"Observera att vi fortfarande väntar på godkännande från evenemangsarrangören "
"innan du kan betala och slutföra denna beställning."
"innan du kan betala och slutföra denna bokning."
#: pretix/presale/templates/pretixpresale/event/order.html:43
msgid "Please note that we still await your payment to complete the process."
@@ -185,7 +185,7 @@
{% if waitinglist_seated %}
<aside class="front-page" aria-labelledby="waiting-list">
<h3 id="waiting-list">{% trans "Waiting list" %}</h3>
<h3 id="waiting-list" class="sr-only">{% trans "Waiting list" %}</h3>
<div class="row">
<div class="col-md-8 col-sm-6 col-xs-12">
<p>
+15 -6
View File
@@ -186,14 +186,23 @@ class EventListMixin:
query = Q(is_public=True) & Q(live=True)
qs = self.request.organizer.events.using(settings.DATABASE_REPLICA).filter(query)
qs = qs.filter(Q(all_sales_channels=True) | Q(limit_sales_channels=self.request.sales_channel))
show_old = "old" in self.request.GET
subevent_filter = Q(subevents__active=True, subevents__is_public=True)
if not show_old:
subevent_filter &= Q(
Q(subevents__date_to__gte=now()) | Q(subevents__date_from__gte=now())
)
qs = qs.annotate(
min_from=Min('subevents__date_from'),
min_to=Min('subevents__date_to'),
max_from=Max('subevents__date_from'),
max_to=Max('subevents__date_to'),
max_fromto=Greatest(Max('subevents__date_to'), Max('subevents__date_from')),
min_from=Min('subevents__date_from', filter=subevent_filter),
min_to=Min('subevents__date_to', filter=subevent_filter),
max_from=Max('subevents__date_from', filter=subevent_filter),
max_to=Max('subevents__date_to', filter=subevent_filter),
max_fromto=Greatest(Max('subevents__date_to', filter=subevent_filter), Max('subevents__date_from', filter=subevent_filter)),
)
if "old" in self.request.GET:
if show_old:
date_q = Q(date_to__lt=now()) | (Q(date_to__isnull=True) & Q(date_from__lt=now()))
qs = qs.filter(
Q(Q(has_subevents=False) & date_q) | Q(
+4 -4
View File
@@ -43,15 +43,15 @@ from pretix.helpers.daterange import daterange, datetimerange
def test_same_day_german():
with translation.override('de'):
df = date(2003, 2, 1)
assert daterange(df, df) == "1. Februar 2003"
assert daterange(df, df, as_html=True) == '<time datetime="2003-02-01">1. Februar 2003</time>'
assert daterange(df, df) == "Sa, 1. Februar 2003"
assert daterange(df, df, as_html=True) == '<time datetime="2003-02-01">Sa, 1. Februar 2003</time>'
def test_same_day_english():
with translation.override('en'):
df = date(2003, 2, 1)
assert daterange(df, df) == "Feb. 1st, 2003"
assert daterange(df, df, as_html=True) == '<time datetime="2003-02-01">Feb. 1st, 2003</time>'
assert daterange(df, df) == "Sat, Feb. 1st, 2003"
assert daterange(df, df, as_html=True) == '<time datetime="2003-02-01">Sat, Feb. 1st, 2003</time>'
def test_same_day_spanish():
+3 -3
View File
@@ -1599,7 +1599,7 @@ class EventLocaleTest(EventTestMixin, SoupTest):
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 200)
self.assertIn('Dec. 26,', response.rendered_content)
self.assertIn('Fri, Dec. 26th,', response.rendered_content)
self.assertIn('14:00', response.rendered_content)
def test_english_region_US(self):
@@ -1609,7 +1609,7 @@ class EventLocaleTest(EventTestMixin, SoupTest):
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 200)
self.assertIn('Dec. 26,', response.rendered_content)
self.assertIn('Fri, Dec. 26th,', response.rendered_content)
self.assertIn('2 p.m.', response.rendered_content)
def test_german_region_US(self):
@@ -1619,5 +1619,5 @@ class EventLocaleTest(EventTestMixin, SoupTest):
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 200)
self.assertIn('26. Dezember', response.rendered_content)
self.assertIn('Fr, 26. Dezember', response.rendered_content)
self.assertIn('14:00', response.rendered_content)
+17 -17
View File
@@ -169,7 +169,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
"target_url": "http://example.com/ccc/30c3/",
"subevent": None,
"name": "30C3",
"date_range": f"Dec. 26, {self.event.date_from.year} 00:00",
"date_range": f"{self.event.date_from.strftime('%a')}, Dec. 26th, {self.event.date_from.year} 00:00",
"frontpage_text": "",
"location": "",
"currency": "EUR",
@@ -375,7 +375,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
"target_url": "http://example.com/ccc/30c3/",
"subevent": None,
"name": "30C3",
"date_range": f"Dec. 26, {self.event.date_from.year} 00:00",
"date_range": f"{self.event.date_from.strftime('%a')}, Dec. 26th, {self.event.date_from.year} 00:00",
"frontpage_text": "",
"location": "",
"currency": "EUR",
@@ -435,7 +435,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
"target_url": "http://example.com/ccc/30c3/",
"subevent": None,
"name": "30C3",
"date_range": f"Dec. 26, {self.event.date_from.year} 00:00",
"date_range": f"{self.event.date_from.strftime('%a')}, Dec. 26th, {self.event.date_from.year} 00:00",
"frontpage_text": "",
"location": "",
"currency": "EUR",
@@ -520,7 +520,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
"target_url": "http://example.com/ccc/30c3/",
"subevent": None,
"name": "30C3",
"date_range": f"Dec. 26, {self.event.date_from.year} 00:00",
"date_range": f"{self.event.date_from.strftime('%a')}, Dec. 26th, {self.event.date_from.year} 00:00",
"frontpage_text": "",
"location": "",
"currency": "EUR",
@@ -627,9 +627,9 @@ class WidgetCartTest(CartTestMixin, TestCase):
'poweredby': '<a href="https://pretix.eu" target="_blank" rel="noopener">ticketing powered by pretix</a>',
'has_more_events': False,
'events': [
{'name': 'Present', 'date_range': 'Jan. 1, 2019 11:00', 'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
{'name': 'Present', 'date_range': 'Tue, Jan. 1st, 2019 11:00', 'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se1.pk, 'location': ''},
{'name': 'Future', 'date_range': 'Jan. 4, 2019 11:00', 'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
{'name': 'Future', 'date_range': 'Fri, Jan. 4th, 2019 11:00', 'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se2.pk, 'location': ''}
]
}
@@ -659,14 +659,14 @@ class WidgetCartTest(CartTestMixin, TestCase):
[
None,
{'day': 1, 'date': '2019-01-01', 'events': [
{'name': 'Present', 'time': '11:00', 'continued': False, 'date_range': 'Jan. 1, 2019 11:00',
{'name': 'Present', 'time': '11:00', 'continued': False, 'date_range': 'Tue, Jan. 1st, 2019 11:00',
'location': '',
'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se1.pk}]},
{'day': 2, 'date': '2019-01-02', 'events': []},
{'day': 3, 'date': '2019-01-03', 'events': []},
{'day': 4, 'date': '2019-01-04', 'events': [
{'name': 'Future', 'time': '11:00', 'continued': False, 'date_range': 'Jan. 4, 2019 11:00',
{'name': 'Future', 'time': '11:00', 'continued': False, 'date_range': 'Fri, Jan. 4th, 2019 11:00',
'location': '',
'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se2.pk}]},
@@ -734,14 +734,14 @@ class WidgetCartTest(CartTestMixin, TestCase):
'days': [
{'day_formatted': 'Mon, Dec 31st', 'date': '2018-12-31', 'events': [], 'today': False},
{'day_formatted': 'Tue, Jan 1st', 'date': '2019-01-01', 'events': [
{'name': 'Present', 'time': '11:00', 'continued': False, 'date_range': 'Jan. 1, 2019 11:00',
{'name': 'Present', 'time': '11:00', 'continued': False, 'date_range': 'Tue, Jan. 1st, 2019 11:00',
'location': '',
'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se1.pk}], 'today': True},
{'day_formatted': 'Wed, Jan 2nd', 'date': '2019-01-02', 'events': [], 'today': False},
{'day_formatted': 'Thu, Jan 3rd', 'date': '2019-01-03', 'events': [], 'today': False},
{'day_formatted': 'Fri, Jan 4th', 'date': '2019-01-04', 'events': [
{'name': 'Future', 'time': '11:00', 'continued': False, 'date_range': 'Jan. 4, 2019 11:00',
{'name': 'Future', 'time': '11:00', 'continued': False, 'date_range': 'Fri, Jan. 4th, 2019 11:00',
'location': '',
'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se2.pk}], 'today': False},
@@ -773,17 +773,17 @@ class WidgetCartTest(CartTestMixin, TestCase):
'poweredby': '<a href="https://pretix.eu" target="_blank" rel="noopener">ticketing powered by pretix</a>',
'events': [
{'availability': {'color': 'none', 'text': 'Event series'},
'date_range': 'Dec. 29, 2018 Jan. 4, 2019',
'date_range': 'Jan. 1st 4th, 2019',
'event_url': 'http://example.com/ccc/30c3/',
'location': '',
'name': '30C3'},
{'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'date_range': 'Jan. 1, 2019 10:00',
'date_range': 'Tue, Jan. 1st, 2019 10:00',
'location': '',
'event_url': 'http://example.com/ccc/present/',
'name': 'Present'},
{'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'date_range': 'Jan. 4, 2019 10:00',
'date_range': 'Fri, Jan. 4th, 2019 10:00',
'location': '',
'event_url': 'http://example.com/ccc/future/',
'name': 'Future'}
@@ -884,7 +884,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
'day': 1,
'events': [{'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'continued': False,
'date_range': 'Jan. 1, 2019 10:00',
'date_range': 'Tue, Jan. 1st, 2019 10:00',
'event_url': 'http://example.com/ccc/present/',
'name': 'Present',
'location': '',
@@ -892,7 +892,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
'time': '10:00'},
{'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'continued': False,
'date_range': 'Jan. 1, 2019 11:00',
'date_range': 'Tue, Jan. 1st, 2019 11:00',
'event_url': 'http://example.com/ccc/30c3/',
'name': 'Present',
'location': '',
@@ -904,7 +904,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
'day': 4,
'events': [{'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'continued': False,
'date_range': 'Jan. 4, 2019 10:00',
'date_range': 'Fri, Jan. 4th, 2019 10:00',
'event_url': 'http://example.com/ccc/future/',
'name': 'Future',
'location': '',
@@ -912,7 +912,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
'time': '10:00'},
{'availability': {'color': 'none', 'text': 'More info', 'reason': 'unknown'},
'continued': False,
'date_range': 'Jan. 4, 2019 11:00',
'date_range': 'Fri, Jan. 4th, 2019 11:00',
'event_url': 'http://example.com/ccc/30c3/',
'name': 'Future',
'location': '',