Compare commits

..

1 Commits

Author SHA1 Message Date
Raphael Michel 70a304d37c Overview export: Allow to skip empty lines (Z#23219200) 2026-01-20 12:31:34 +01:00
14 changed files with 1329 additions and 1033 deletions
+3 -3
View File
@@ -65,7 +65,7 @@ dependencies = [
"kombu==5.6.*",
"libsass==0.23.*",
"lxml",
"markdown==3.10.1", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
"markdown==3.10", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
"mt-940==4.30.*",
"oauthlib==3.3.*",
@@ -80,7 +80,7 @@ dependencies = [
"protobuf==6.33.*",
"psycopg2-binary",
"pycountry",
"pycparser==3.0",
"pycparser==2.23",
"pycryptodome==3.23.*",
"pypdf==6.5.*",
"python-bidi==0.6.*", # Support for Arabic in reportlab
@@ -92,7 +92,7 @@ dependencies = [
"redis==7.1.*",
"reportlab==4.4.*",
"requests==2.32.*",
"sentry-sdk==2.50.*",
"sentry-sdk==2.49.*",
"sepaxml==2.7.*",
"stripe==7.9.*",
"text-unidecode==1.*",
-1
View File
@@ -966,7 +966,6 @@ class CheckinRPCSearchView(ListAPIView):
def get_serializer_context(self):
ctx = super().get_serializer_context()
ctx['expand'] = self.request.query_params.getlist('expand')
ctx['organizer'] = self.request.organizer
ctx['pdf_data'] = False
return ctx
-2
View File
@@ -617,7 +617,6 @@ class OrderListExporter(MultiSheetListExporter):
_('Country'),
pgettext('address', 'State'),
_('Voucher'),
_('Voucher budget usage'),
_('Pseudonymization ID'),
_('Ticket secret'),
_('Seat ID'),
@@ -735,7 +734,6 @@ class OrderListExporter(MultiSheetListExporter):
op.country if op.country else '',
op.state_for_address or '',
op.voucher.code if op.voucher else '',
op.voucher_budget_use if op.voucher_budget_use else '',
op.pseudonymization_id,
op.secret,
]
+1 -1
View File
@@ -141,7 +141,7 @@ def get_babel_locale():
for locale in try_locales:
if localedata.exists(locale):
return localedata.normalize_locale(locale)
return locale
return "en"
+4 -4
View File
@@ -1315,10 +1315,10 @@ class QuestionAnswerFilterForm(forms.Form):
if date_range is not None:
d_start, d_end = resolve_timeframe_to_datetime_start_inclusive_end_exclusive(now(), date_range, self.event.timezone)
if d_start:
opqs = opqs.filter(subevent__date_from__gte=d_start)
if d_end:
opqs = opqs.filter(subevent__date_from__lt=d_end)
opqs = opqs.filter(
subevent__date_from__gte=d_start,
subevent__date_from__lt=d_end
)
s = fdata.get("status", Order.STATUS_PENDING + Order.STATUS_PAID)
if s != "":
+12 -12
View File
@@ -2790,16 +2790,7 @@ class ExportView(EventPermissionRequiredMixin, ExportMixin, ListView):
@transaction.atomic()
def post(self, request, *args, **kwargs):
if request.POST.get("schedule") == "save":
if not self.has_permission():
messages.error(
self.request,
_(
"Your user account does not have sufficient permission to run this report, therefore "
"you cannot schedule it."
)
)
return super().get(request, *args, **kwargs)
elif self.exporter.form.is_valid() and self.rrule_form.is_valid() and self.schedule_form.is_valid():
if self.exporter.form.is_valid() and self.rrule_form.is_valid() and self.schedule_form.is_valid():
self.schedule_form.instance.export_identifier = self.exporter.identifier
self.schedule_form.instance.export_form_data = self.exporter.form.cleaned_data
self.schedule_form.instance.schedule_rrule = str(self.rrule_form.to_rrule())
@@ -2878,8 +2869,17 @@ class ExportView(EventPermissionRequiredMixin, ExportMixin, ListView):
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
if "schedule" in self.request.POST or self.scheduled:
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
if "schedule" in self.request.POST and not self.has_permission():
messages.error(
self.request,
_(
"Your user account does not have sufficient permission to run this report, therefore "
"you cannot schedule it."
)
)
else:
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
elif not self.exporter:
for s in ctx['scheduled']:
try:
+12 -12
View File
@@ -2113,16 +2113,7 @@ class ExportView(OrganizerPermissionRequiredMixin, ExportMixin, ListView):
@transaction.atomic()
def post(self, request, *args, **kwargs):
if request.POST.get("schedule") == "save":
if not self.has_permission():
messages.error(
self.request,
_(
"Your user account does not have sufficient permission to run this report, therefore "
"you cannot schedule it."
)
)
return super().get(request, *args, **kwargs)
elif self.exporter.form.is_valid() and self.rrule_form.is_valid() and self.schedule_form.is_valid():
if self.exporter.form.is_valid() and self.rrule_form.is_valid() and self.schedule_form.is_valid():
self.schedule_form.instance.export_identifier = self.exporter.identifier
self.schedule_form.instance.export_form_data = self.exporter.form.cleaned_data
self.schedule_form.instance.schedule_rrule = str(self.rrule_form.to_rrule())
@@ -2209,8 +2200,17 @@ class ExportView(OrganizerPermissionRequiredMixin, ExportMixin, ListView):
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
if "schedule" in self.request.POST or self.scheduled:
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
if "schedule" in self.request.POST and not self.has_permission():
messages.error(
self.request,
_(
"Your user account does not have sufficient permission to run this report, therefore "
"you cannot schedule it."
)
)
else:
ctx['schedule_form'] = self.schedule_form
ctx['rrule_form'] = self.rrule_form
elif not self.exporter:
for s in ctx['scheduled']:
try:
+7 -5
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-05 12:12+0000\n"
"PO-Revision-Date: 2026-01-21 21:00+0000\n"
"PO-Revision-Date: 2026-01-11 22:00+0000\n"
"Last-Translator: Jiří Pastrňák <jiri@pastrnak.email>\n"
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix/cs/>"
"\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.15.2\n"
"X-Generator: Weblate 5.15.1\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -1623,7 +1623,7 @@ msgstr "Čas konce události"
#: pretix/base/models/event.py:1536 pretix/control/forms/subevents.py:494
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:274
msgid "Admission time"
msgstr "Vstup"
msgstr "Vstupní čas"
#: pretix/base/exporters/events.py:65 pretix/base/models/event.py:634
#: pretix/base/models/event.py:1545 pretix/control/forms/subevents.py:93
@@ -14592,7 +14592,7 @@ msgstr "Zaplaceno do"
#: pretix/plugins/reports/exporters.py:396
#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:23
msgid "Paid"
msgstr "Zaplaceno"
msgstr "Placené"
#: pretix/control/forms/filter.py:1304
msgctxt "subevent"
@@ -35218,8 +35218,10 @@ msgid "Save selection"
msgstr "Uložit volbu"
#: pretix/presale/templates/pretixpresale/fragment_modals.html:145
#, fuzzy
#| msgid "You did not select any products."
msgid "You didn't select any ticket."
msgstr "Nevybrali jste žádné vstupenky."
msgstr "Nevybrali jste žádné produkty."
#: pretix/presale/templates/pretixpresale/fragment_modals.html:146
msgid ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,8 +7,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-05 12:13+0000\n"
"PO-Revision-Date: 2026-01-22 19:00+0000\n"
"Last-Translator: Ruud Hendrickx <ruud@leckxicon.eu>\n"
"PO-Revision-Date: 2025-06-10 04:00+0000\n"
"Last-Translator: Tim Maurizio Dullaart <Tim.maurizio@gmail.com>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
"nl/>\n"
"Language: nl\n"
@@ -16,7 +16,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.15.2\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -63,7 +63,7 @@ msgstr "iDEAL"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"
msgstr "SEPA-incasso"
msgstr "SEPA Automatische Incasso"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43
msgid "Bancontact"
@@ -160,7 +160,7 @@ msgstr "Betaalde bestellingen"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:27
msgid "Total revenue"
msgstr "Totale omzet"
msgstr "Totaal omzet"
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:15
msgid "Contacting Stripe …"
@@ -180,7 +180,7 @@ msgstr "Kies een inchecklijst"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:31
msgid "No active check-in lists found."
msgstr "Geen actieve check-inlijsten gevonden."
msgstr "Geen actieve inchecklijsten gevonden."
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:32
msgid "Switch check-in list"
@@ -245,7 +245,7 @@ msgstr "Goedkeuring in afwachting"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed"
msgstr "Ingewisseld"
msgstr "Gebruikt"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:49
msgid "Cancel"
@@ -564,11 +564,11 @@ msgstr "afwezig"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:289
msgid "Error: Product not found!"
msgstr "Fout: product niet gevonden!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:296
msgid "Error: Variation not found!"
msgstr "Fout: variant niet gevonden!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
@@ -1125,31 +1125,31 @@ msgstr "Zo"
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr "maandag"
msgstr "Maandag"
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr "dinsdag"
msgstr "Dinsdag"
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr "woensdag"
msgstr "Woensdag"
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr "donderdag"
msgstr "Donderdag"
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr "vrijdag"
msgstr "Vrijdag"
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr "zaterdag"
msgstr "Zaterdag"
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr "zondag"
msgstr "Zondag"
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
File diff suppressed because it is too large Load Diff
+4 -6
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-05 12:12+0000\n"
"PO-Revision-Date: 2026-01-16 22:00+0000\n"
"Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
"PO-Revision-Date: 2026-01-16 09:22+0000\n"
"Last-Translator: Richard Schreiber <schreiber@rami.io>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/"
"sv/>\n"
"Language: sv\n"
@@ -35839,11 +35839,9 @@ msgid "A payment of %(total)s is still pending for this order."
msgstr "Tack för din bokning på %(total)s."
#: pretix/presale/templates/pretixpresale/event/order.html:97
#, python-format
#, fuzzy, python-format
msgid "Please complete your payment before %(date)s"
msgstr ""
"Om din betalning inte gick igenom, se till att uppdatera din "
"betalningsinformation innan %(date)s via knappen nedan."
msgstr "Tack för din bokning!"
#: pretix/presale/templates/pretixpresale/event/order.html:108
msgid "Re-try payment or choose another payment method"
-6
View File
@@ -932,12 +932,6 @@ def test_search(token_client, organizer, event, clist, clist_all, item, other_it
assert resp.status_code == 200
assert [p1] == resp.data['results']
with django_assert_max_num_queries(25):
resp = token_client.get(
'/api/v1/organizers/{}/checkinrpc/search/?list={}&search=z3fsn8jyu&expand=item'.format(organizer.slug, clist_all.pk))
assert resp.status_code == 200
assert resp.data['results'][0]['item']['name']
@pytest.mark.django_db
def test_search_no_list(token_client, organizer, event, clist, clist_all, item, other_item, order):
-1
View File
@@ -59,7 +59,6 @@ def test_get_locale():
("pt-pt", "PT", "pt-pt", "pt-pt", "pt_PT"),
("es", "MX", "es-mx", "es", "es_MX"),
("es-419", "MX", "es-419", "es-419", "es_MX"),
("zh-hans", "US", "zh-hans", "zh-hans", "zh_Hans"),
("zh-hans", "CN", "zh-hans", "zh-hans", "zh_Hans_CN"),
("zh-hant", "TW", "zh-hant", "zh-hant", "zh_Hant_TW"),
],