Compare commits

..

4 Commits

Author SHA1 Message Date
Mira Weller
feb2ec0d48 Adapt remaining tests 2024-08-27 22:01:05 +02:00
Mira Weller
f3eb6b33e6 Adapt test cases 2024-08-27 22:01:05 +02:00
Mira Weller
3a774db641 Refactor 2024-08-27 22:01:05 +02:00
Mira Weller
6245d1f286 Show weekday in subevent dates 2024-08-27 22:01:04 +02:00
28 changed files with 1686 additions and 2316 deletions

View File

@@ -203,8 +203,7 @@ checkins list of objects List of **succe
├ datetime datetime Time of check-in
├ type string Type of scan (defaults to ``entry``)
├ gate integer Internal ID of the gate. Can be ``null``.
├ device integer Internal ID of the device. Can be ``null``. **Deprecated**, since this ID is not otherwise used in the API and is therefore not very useful.
├ device_id integer Attribute ``device_id`` of the device. Can be ``null``.
├ device integer Internal ID of the device. Can be ``null``.
└ auto_checked_in boolean Indicates if this check-in been performed automatically by the system
downloads list of objects List of ticket download options
├ output string Ticket output provider (e.g. ``pdf``, ``passbook``)

View File

@@ -175,7 +175,7 @@ without any special behavior.
Connecting SSO providers (pretix as the SSO client)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To connect an external application as a SSO provider, go to "Customer accounts" → "SSO providers" → "Create a new SSO provider"
To connect an external application as a SSO client, go to "Customer accounts" → "SSO providers" → "Create a new SSO provider"
in your organizer account.
.. thumbnail:: ../../screens/organizer/customer_ssoprovider_add.png

View File

@@ -76,7 +76,7 @@ dependencies = [
"phonenumberslite==8.13.*",
"Pillow==10.4.*",
"pretix-plugin-build",
"protobuf==5.28.*",
"protobuf==5.27.*",
"psycopg2-binary",
"pycountry",
"pycparser==2.22",

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.9.0.dev0"
__version__ = "2024.8.0.dev0"

View File

@@ -80,7 +80,6 @@ ALL_LANGUAGES = [
('de', _('German')),
('de-informal', _('German (informal)')),
('ar', _('Arabic')),
('eu', _('Basque')),
('ca', _('Catalan')),
('zh-hans', _('Chinese (simplified)')),
('zh-hant', _('Chinese (traditional)')),

View File

@@ -896,7 +896,6 @@ class DeviceEventSettingsSerializer(EventSettingsSerializer):
'locale',
'last_order_modification_date',
'show_quota_left',
'show_dates_on_frontpage',
'max_items_per_order',
'attendee_names_asked',
'attendee_names_required',

View File

@@ -273,15 +273,9 @@ class AnswerSerializer(I18nAwareModelSerializer):
class CheckinSerializer(I18nAwareModelSerializer):
device_id = serializers.SlugRelatedField(
source='device',
slug_field='device_id',
read_only=True,
)
class Meta:
model = Checkin
fields = ('id', 'datetime', 'list', 'auto_checked_in', 'gate', 'device', 'device_id', 'type')
fields = ('id', 'datetime', 'list', 'auto_checked_in', 'gate', 'device', 'type')
class FailedCheckinSerializer(I18nAwareModelSerializer):

View File

@@ -377,7 +377,7 @@ def _checkin_list_position_queryset(checkinlists, ignore_status=False, ignore_pr
Prefetch(
'positions',
OrderPosition.objects.prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related('device')),
Prefetch('checkins', queryset=Checkin.objects.all()),
'item', 'variation', 'answers', 'answers__options', 'answers__question',
)
)

View File

@@ -78,7 +78,7 @@ class ReusableMediaViewSet(viewsets.ModelViewSet):
queryset=OrderPosition.objects.select_related(
'order', 'order__event', 'order__event__organizer', 'seat',
).prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related('device')),
Prefetch('checkins', queryset=Checkin.objects.all()),
'answers', 'answers__options', 'answers__question',
)
),

View File

@@ -258,7 +258,7 @@ class OrderViewSetMixin:
return Prefetch(
'positions',
opq.all().prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related('device')),
Prefetch('checkins', queryset=Checkin.objects.all()),
Prefetch('item', queryset=self.request.event.items.prefetch_related(
Prefetch('meta_values', ItemMetaValue.objects.select_related('property'), to_attr='meta_values_cached')
)),
@@ -279,7 +279,7 @@ class OrderViewSetMixin:
return Prefetch(
'positions',
opq.all().prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related('device')),
Prefetch('checkins', queryset=Checkin.objects.all()),
'item', 'variation',
Prefetch('answers', queryset=QuestionAnswer.objects.prefetch_related('options', 'question').order_by('question__position')),
'seat',
@@ -1092,7 +1092,7 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
'item_meta_properties',
)
qs = qs.prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related("device")),
Prefetch('checkins', queryset=Checkin.objects.all()),
Prefetch('item', queryset=self.request.event.items.prefetch_related(
Prefetch('meta_values', ItemMetaValue.objects.select_related('property'),
to_attr='meta_values_cached')
@@ -1111,7 +1111,7 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
Prefetch(
'positions',
qs.prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related('device')),
Prefetch('checkins', queryset=Checkin.objects.all()),
Prefetch('item', queryset=self.request.event.items.prefetch_related(
Prefetch('meta_values', ItemMetaValue.objects.select_related('property'),
to_attr='meta_values_cached')
@@ -1135,7 +1135,7 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
)
else:
qs = qs.prefetch_related(
Prefetch('checkins', queryset=Checkin.objects.select_related("device")),
Prefetch('checkins', queryset=Checkin.objects.all()),
'answers', 'answers__options', 'answers__question',
).select_related(
'item', 'order', 'order__event', 'order__event__organizer', 'seat'

View File

@@ -1295,8 +1295,7 @@ DEFAULTS = {
'form_kwargs': dict(
label=_("Show event times and dates on the ticket shop"),
help_text=_("If disabled, no date or time will be shown on the ticket shop's front page. This settings "
"also affects a few other locations, however it should not be expected that the date of the "
"event is shown nowhere to users."),
"does however not affect the display in other locations."),
)
},
'show_date_to': {

View File

@@ -102,24 +102,16 @@
</tr>
</thead>
<tbody>
{% for t in tokens %}
{% for t in team.active_tokens %}
<tr>
<td {% if not t.active %}class="text-muted"{% endif %}>
{% if not t.active %}
<del>
{% endif %}
<td>
{{ t.name }}
{% if not t.active %}
</del>
{% endif %}
</td>
<td class="text-right flip">
{% 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 %}
<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>
</td>
</tr>
{% endfor %}

View File

@@ -686,24 +686,14 @@ class TeamDeleteView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
try:
self.object.log_action('pretix.team.deleted', user=self.request.user)
self.object.delete()
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.'
)
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.'
)
)
return redirect(success_url)
messages.success(request, _('The selected team has been deleted.'))
@@ -733,7 +723,6 @@ 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):

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-09-03 00:00+0000\n"
"PO-Revision-Date: 2024-07-23 10:22+0000\n"
"Last-Translator: Alberto Ortega <ortega16.cieza@gmail.com>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
"es/>\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.7\n"
"X-Generator: Weblate 5.6.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -3984,9 +3984,8 @@ msgstr ""
#: pretix/base/models/customers.py:299 pretix/base/models/orders.py:1513
#: pretix/base/models/orders.py:3175 pretix/base/settings.py:1096
#, fuzzy
msgid "Company name"
msgstr "Razón Social / Organización"
msgstr "Nombre de la Compañía"
#: pretix/base/models/customers.py:303 pretix/base/models/orders.py:1517
#: pretix/base/models/orders.py:3182 pretix/base/settings.py:81

File diff suppressed because it is too large Load Diff

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-29 10:36+0000\n"
"PO-Revision-Date: 2024-08-26 15:00+0000\n"
"Last-Translator: Albizuri <oier@puntu.eus>\n"
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
"eu/>\n"
@@ -602,7 +602,7 @@ msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:913
#: pretix/static/pretixcontrol/js/ui/editor.js:673
msgid "Ticket design"
msgstr "Sarrera diseinua"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1250
#: pretix/static/pretixcontrol/js/ui/editor.js:972
@@ -720,12 +720,10 @@ msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
"Zure saskiko artikuluak ez daude zuretzat erreserbatuta. Oraindik ere zure "
"eskaera bete dezakezu, baldin eta eskuragarri badaude."
#: pretix/static/pretixpresale/js/ui/cart.js:45
msgid "Cart expired"
msgstr "Saskia iraungita"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
msgid "The items in your cart are reserved for you for one minute."

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-28 10:03+0000\n"
"PO-Revision-Date: 2024-07-01 16:00+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.7\n"
"X-Generator: Weblate 5.6.1\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -259,9 +259,10 @@ msgid "Unknown plugin: '{name}'."
msgstr "Nieznany plugin: '{name}'."
#: pretix/api/serializers/event.py:295
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Unknown plugin: '{name}'."
msgid "Restricted plugin: '{name}'."
msgstr "Plugin z ograniczeniami: '{name}'."
msgstr "Nieznany plugin: '{name}'."
#: pretix/api/serializers/item.py:86 pretix/api/serializers/item.py:148
#: pretix/api/serializers/item.py:359
@@ -504,8 +505,10 @@ msgid "Order denied"
msgstr "Zamówienie odrzucone"
#: pretix/api/webhooks.py:313
#, fuzzy
#| msgid "Order denied"
msgid "Order deleted"
msgstr "Zamówienie skasowane"
msgstr "Zamówienie odrzucone"
#: pretix/api/webhooks.py:317
msgid "Ticket checked in"
@@ -2284,8 +2287,10 @@ 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 ID"
msgstr "Dodatek do pozycji #%(posid)s"
#: pretix/base/exporters/orderlist.py:650 pretix/base/pdf.py:340
msgid "Invoice address street"
@@ -3868,10 +3873,6 @@ 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"
@@ -5710,8 +5711,10 @@ msgid "Meta information"
msgstr "Metadane"
#: pretix/base/models/orders.py:303
#, fuzzy
#| msgid "Meta information"
msgid "API meta information"
msgstr "Metadane API"
msgstr "Metadane"
#: pretix/base/models/orders.py:392 pretix/plugins/sendmail/forms.py:236
#: pretix/plugins/sendmail/forms.py:391 pretix/plugins/sendmail/views.py:272
@@ -8038,9 +8041,10 @@ 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 ""
"Prefiks ten został ustawiony w ustawieniach wydarzenia lub organizatora."
msgstr "Wybrany typ nośnika nie jest włączony w ustawieniach organizatora."
#: pretix/base/services/mail.py:278
#, python-brace-format
@@ -9671,11 +9675,6 @@ 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"
@@ -11706,9 +11705,10 @@ msgstr ""
"Data ostatniej płatności nie może przypadać przed końcem przedsprzedaży."
#: pretix/base/settings.py:3811
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid "Please enter a valid sales channel."
msgid "The value \"{identifier}\" is not a valid sales channel."
msgstr "Wartość \"{identifier} nie jest prawidłowym kanałem sprzedaży."
msgstr "Wprowadź dostępny kanał sprzedaży."
#: pretix/base/settings.py:3826
msgid "This needs to be disabled if other NFC-based types are active."
@@ -15034,14 +15034,19 @@ 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 "
"zawartość pliku CSV z kolumną tytułu i jedną lub kilkoma kolumnami \"e-mail\""
", \"numer\", \"nazwa\" lub \"tag\"."
"plik 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"
@@ -19182,12 +19187,17 @@ 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 "Oczekujący klienci"
msgstr "Oczekiwanie na"
#: pretix/control/templates/pretixcontrol/event/settings.html:383
#, fuzzy
#| msgid "Enable waiting list"
msgid "Manage waiting list"
msgstr "Zarządzaj listą oczekujących"
msgstr "Włącz listę oczekujących"
#: pretix/control/templates/pretixcontrol/event/settings.html:396
msgid "Item metadata"
@@ -21118,9 +21128,6 @@ 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
@@ -21171,9 +21178,6 @@ 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 ""
@@ -23939,24 +23943,30 @@ 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 "Automatyczne zmniejsz rozmiar czcionki w celu dopasowania do treści"
msgstr "Automatycznie zwróć pieniądze, jeśli to możliwe"
#: pretix/control/templates/pretixcontrol/pdf/index.html:458
msgid "Allow long words to be split (preview is not accurate)"
msgstr "Zezwalaj na dzielenie długich słów (podgląd nie jest dokładny)"
msgstr ""
#: 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 "Pole tekstowe"
msgstr "Kolor tekstu"
#: pretix/control/templates/pretixcontrol/pdf/index.html:478
#, fuzzy
#| msgid "Event created"
msgid "Text (deprecated)"
msgstr "Tekst (przestarzałe)"
msgstr "Wydarzenie utworzone"
#: pretix/control/templates/pretixcontrol/pdf/index.html:482
msgid "QR code for Check-In"
@@ -23995,9 +24005,6 @@ 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"
@@ -27216,99 +27223,133 @@ msgstr "Zespół Pretix"
#: pretix/plugins/autocheckin/apps.py:39
msgid "Automatically check-in specific tickets after they have been sold."
msgstr "Automatycznie odpraw określone bilety po ich sprzedaży."
msgstr ""
#: 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 "Tylko z uwzględnieniem korzystania z dostawców usług płatniczych"
msgstr "Wszyscy dostawcy płatności"
#: pretix/plugins/autocheckin/forms.py:120
#, fuzzy
#| msgid "All actions"
msgid "All variations"
msgstr "Wszystkie warianty"
msgstr "Wszystkie działania"
#: 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 "Po złożeniu zamówienia"
msgstr "Złożono zamówienie"
#: pretix/plugins/autocheckin/models.py:37
#, fuzzy
#| msgid "Mark order as paid"
msgid "After order was paid"
msgstr "Po opłaceniu zamówienia"
msgstr "Oznacz zamówienie jako opłacone"
#: 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 to pole pozostanie puste, użyte zostaną wszystkie listy pasujące do "
"zakupionego produktu."
"Jeśli pozostawisz to pole puste, wszystkie dane wejściowe będą dozwolone."
#: pretix/plugins/autocheckin/models.py:59
#, fuzzy
#| msgid "Add sales channel"
msgid "All sales channels"
msgstr "Wszystkie kanały sprzedaży"
msgstr "Dodaj kanał sprzedaży"
#: pretix/plugins/autocheckin/models.py:69
#, fuzzy
#| msgid "Product variations"
msgid "All products and variations"
msgstr "Wszystkie produkty i warianty produktu"
msgstr "Warianty produktu"
#: pretix/plugins/autocheckin/models.py:78
#, fuzzy
#| msgid "Enable payment method"
msgid "All payment methods"
msgstr "Wszystkie metody płatności"
msgstr "Aktywuj metodę 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 "Auto-odprawa"
msgstr "Automatyczna 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łę auto-odprawy"
msgstr "Utworzono regułę wiadomości e-mail"
#: pretix/plugins/autocheckin/signals.py:72
#, fuzzy
#| msgid "An email rule was updated"
msgid "An auto check-in rule was updated"
msgstr "Zaktualizowano regułę auto-odprawy"
msgstr "Zaktualizowano regułę wiadomości e-mail"
#: 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łę auto-odprawy"
msgstr "Usunięto regułę wiadomości e-mail"
#: 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 "Utwórz regułę auto-odprawy"
msgstr "Niestandardowa reguła 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 "Warunki"
msgstr "Stan"
#: 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ń regułę auto-odprawy"
msgstr "Usuń listę odpraw"
#: 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ąć regułę auto-odprawy?"
msgstr "Czy na pewno chcesz usunąć bramkę?"
#: 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 "Reguła auto-odprawy"
msgstr "Niestandardowa reguła 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 "Reguły auto-odprawy"
msgstr "Niestandardowa reguła odprawy"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:11
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:96
@@ -27317,12 +27358,16 @@ 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ą regułę odpraw"
msgstr "Utwórz nową listę odpraw"
#: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:32
#, fuzzy
#| msgid "Payment method"
msgid "Payment methods"
msgstr "Metody płatności"
msgstr "Metoda płatności"
#: pretix/plugins/autocheckin/views.py:119 pretix/plugins/sendmail/views.py:628
msgid "Your rule has been created."
@@ -28995,9 +29040,6 @@ 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"
@@ -30642,20 +30684,26 @@ 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 "Revolut Pay przez Stripe"
msgstr "WeChat Pay przez Stripe"
#: pretix/plugins/stripe/payment.py:1789
msgid "Revolut Pay"
msgstr "Revolut Pay"
msgstr ""
#: 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 aplikacji Revolut. "
"Prosimy o zachowanie danych logowania."
"Ta metoda płatności jest dostępna dla użytkowników chińskiej aplikacji "
"WeChat. Prosimy o zachowanie danych logowania."
#: pretix/plugins/stripe/payment.py:1807
msgid "PayPal via Stripe"

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-28 10:03+0000\n"
"PO-Revision-Date: 2024-06-27 17:00+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.7\n"
"X-Generator: Weblate 5.6.1\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -572,12 +572,16 @@ 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 (przestarzały)"
msgstr "Obiekt tekstowy"
#: pretix/static/pretixcontrol/js/ui/editor.js:901
#, fuzzy
#| msgid "Text object"
msgid "Text box"
msgstr "Pole tekstowe"
msgstr "Obiekt tekstowy"
#: pretix/static/pretixcontrol/js/ui/editor.js:903
msgid "Barcode area"

File diff suppressed because it is too large Load Diff

View File

@@ -162,21 +162,6 @@ def _handle_transaction(trans: BankTransaction, matches: tuple, event: Event = N
else:
trans.order = orders[0]
if len(orders) > 1:
# Multi-match! Can we split this automatically?
order_pending_sum = sum(o.pending_sum for o in orders)
if order_pending_sum != trans.amount:
# we can't :( this needs to be dealt with by a human
trans.state = BankTransaction.STATE_NOMATCH
trans.message = gettext_noop('Automatic split to multiple orders not possible.')
trans.save()
return
# we can!
splits = [(o, o.pending_sum) for o in orders]
else:
splits = [(orders[0], trans.amount)]
for o in orders:
if o.status == Order.STATUS_PAID and o.pending_sum <= Decimal('0.00'):
trans.state = BankTransaction.STATE_DUPLICATE
@@ -194,6 +179,21 @@ def _handle_transaction(trans: BankTransaction, matches: tuple, event: Event = N
trans.save()
return
if len(orders) > 1:
# Multi-match! Can we split this automatically?
order_pending_sum = sum(o.pending_sum for o in orders)
if order_pending_sum != trans.amount:
# we can't :( this needs to be dealt with by a human
trans.state = BankTransaction.STATE_NOMATCH
trans.message = gettext_noop('Automatic split to multiple orders not possible.')
trans.save()
return
# we can!
splits = [(o, o.pending_sum) for o in orders]
else:
splits = [(orders[0], trans.amount)]
trans.state = BankTransaction.STATE_VALID
for order, amount in splits:
info_data = {

View File

@@ -6,16 +6,13 @@
{% load eventsignal %}
{% load rich_text %}
{% for tup in items_by_category %}
{% if tup.0 %}
<section aria-labelledby="category-{{ tup.0.id }}"{% if tup.0.description %} aria-describedby="category-info-{{ tup.0.id }}"{% endif %}>
<section {% if tup.0 %}aria-labelledby="category-{{ tup.0.id }}"{% else %}aria-label="{% trans "Uncategorized items" %}"{% endif %}{% if tup.0.description %} aria-describedby="category-info-{{ tup.0.id }}"{% endif %}>
{% if tup.0 %}
<h3 id="category-{{ tup.0.id }}">{{ tup.0.name }}</h3>
{% if tup.0.description %}
<div id="category-info-{{ tup.0.id }}">{{ tup.0.description|localize|rich_text }}</div>
{% endif %}
{% else %}
<section aria-labelledby="category-none">
<h3 id="category-none" class="sr-only">{% trans "Uncategorized items" %}</h3>
{% endif %}
{% endif %}
{% for item in tup.1 %}
{% if item.has_variations %}
<article aria-labelledby="item-{{ item.pk }}-legend"{% if item.description %} aria-describedby="item-{{ item.pk }}-description"{% endif %} class="item-with-variations{% if event.settings.show_variations_expanded %} details-open{% endif %}" id="item-{{ item.pk }}">

View File

@@ -185,7 +185,7 @@
{% if waitinglist_seated %}
<aside class="front-page" aria-labelledby="waiting-list">
<h3 id="waiting-list" class="sr-only">{% trans "Waiting list" %}</h3>
<h3 id="waiting-list">{% trans "Waiting list" %}</h3>
<div class="row">
<div class="col-md-8 col-sm-6 col-xs-12">
<p>

View File

@@ -1,7 +1,6 @@
{% extends "pretixpresale/event/base.html" %}
{% load i18n %}
{% load eventurl %}
{% load rich_text %}
{% load money %}
{% block title %}{% trans "Change payment method" %}{% endblock %}
{% block custom_header %}
@@ -24,9 +23,6 @@
{% endif %}
<form method="post">
{% csrf_token %}
{% if event.settings.payment_explanation %}
{{ event.settings.payment_explanation|rich_text }}
{% endif %}
<div class="panel-group" id="payment_accordion">
{% for p in providers %}
<div class="panel panel-default" data-total="{{ p.total|money_numberfield:request.event.currency }}">

View File

@@ -186,23 +186,14 @@ 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', 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)),
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')),
)
if show_old:
if "old" in self.request.GET:
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(

View File

@@ -498,7 +498,6 @@ def test_list_all_items_positions(token_client, organizer, event, clist, clist_a
'datetime': c.datetime.isoformat().replace('+00:00', 'Z'),
'auto_checked_in': False,
'device': None,
'device_id': None,
'gate': None,
'type': 'entry',
}
@@ -541,7 +540,6 @@ def test_list_all_items_positions(token_client, organizer, event, clist, clist_a
'datetime': c.datetime.isoformat().replace('+00:00', 'Z'),
'auto_checked_in': False,
'device': None,
'device_id': None,
'gate': None,
'type': 'entry',
}

View File

@@ -959,7 +959,7 @@ def test_refund_cancel(token_client, organizer, event, order):
@pytest.mark.django_db
def test_orderposition_list(token_client, organizer, device, event, order, item, subevent, subevent2, question, django_assert_num_queries):
def test_orderposition_list(token_client, organizer, event, order, item, subevent, subevent2, question):
i2 = copy.copy(item)
i2.pk = None
i2.save()
@@ -1060,22 +1060,19 @@ def test_orderposition_list(token_client, organizer, device, event, order, item,
with scopes_disabled():
cl = event.checkin_lists.create(name="Default")
c = op.checkins.create(datetime=datetime.datetime(2017, 12, 26, 10, 0, 0, tzinfo=datetime.timezone.utc), list=cl, device=device)
c = op.checkins.create(datetime=datetime.datetime(2017, 12, 26, 10, 0, 0, tzinfo=datetime.timezone.utc), list=cl)
op.checkins.create(datetime=datetime.datetime(2017, 12, 26, 10, 0, 0, tzinfo=datetime.timezone.utc), list=cl, successful=False)
res['checkins'] = [{ # successful only
'id': c.pk,
'datetime': '2017-12-26T10:00:00Z',
'list': cl.pk,
'auto_checked_in': False,
'device': device.pk,
'device_id': device.device_id,
'device': None,
'gate': None,
'type': 'entry'
}]
with django_assert_num_queries(15):
resp = token_client.get(
'/api/v1/organizers/{}/events/{}/orderpositions/?has_checkin=true'.format(organizer.slug, event.slug)
)
resp = token_client.get(
'/api/v1/organizers/{}/events/{}/orderpositions/?has_checkin=true'.format(organizer.slug, event.slug))
assert [res] == resp.data['results']
op.subevent = subevent

View File

@@ -471,33 +471,6 @@ def test_split_payment_success(env, orga_job):
assert o4.payments.get().amount == Decimal('12.00')
@pytest.mark.django_db
def test_valid_plus_invalid_match(env, orga_job):
with scopes_disabled():
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
total=12,
sales_channel=env[0].organizer.sales_channels.get(identifier="web"),
)
o4.payments.create(
provider='paypal',
state=OrderPayment.PAYMENT_STATE_CONFIRMED,
amount=o4.total
)
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellungen DUMMY-1Z3AS DUMMY-99999',
'date': '2016-01-26',
'amount': '.00'
}])
with scopes_disabled():
job = BankImportJob.objects.last()
t = job.transactions.last()
assert t.state == BankTransaction.STATE_NOMATCH
@pytest.mark.django_db
def test_split_payment_mismatch(env, orga_job):
with scopes_disabled():

View File

@@ -773,7 +773,7 @@ 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': 'Jan. 1st 4th, 2019',
'date_range': 'Dec. 29, 2018 Jan. 4, 2019',
'event_url': 'http://example.com/ccc/30c3/',
'location': '',
'name': '30C3'},