Raphael Michel
8fe436cb25
Rebase migration
2026-07-14 09:27:10 +02:00
Raphael Michel
3d82b79cc9
Add uncommitted tests
2026-07-14 09:26:40 +02:00
Raphael Michel
40959ee24a
More tax rate handling
2026-07-14 09:26:39 +02:00
Raphael Michel
b3eec43645
Fix normalization
2026-07-14 09:25:46 +02:00
Raphael Michel and Raphael Michel
b46956ba0a
Allow more decimal places for tax rates
2026-07-14 09:25:46 +02:00
Raphael Michel and GitHub
ffca102a8a
Question form: Do not store invalid False values for required boolean questions (Z#23239887) ( #6366 )
2026-07-10 16:42:10 +02:00
luelista and GitHub
78f8830f90
Hotfix: fix order_position_buttons receiver
2026-07-10 15:08:10 +02:00
Raphael Michel
eb594266a7
Hotfix: Add missing mark_safe after strip
2026-07-10 14:56:48 +02:00
76e6803eac
Fix customer views using wrong csrf middleware ( #6027 )
...
* Fix customer views using wrong csrf middleware
This lead to persistent csrf validation errors if the token from the cookie expired, which could only be solved by clearing cookies.
* Remove unneccesary csrf_protect decorators
* Fix typo
Co-authored-by: Raphael Michel <michel@pretix.eu >
---------
Co-authored-by: Raphael Michel <michel@pretix.eu >
2026-07-10 13:25:40 +02:00
Richard Schreiber and pajowu
e19908571c
Fix delete_cookie for partitioned legacy CSRF cookie
2026-07-10 13:25:40 +02:00
779ab360df
Bump django-formtools from 2.6.1 to 2.7 ( #6371 )
...
Bumps [django-formtools](https://github.com/jazzband/django-formtools ) from 2.6.1 to 2.7.
- [Changelog](https://github.com/jazzband/django-formtools/blob/master/docs/changelog.rst )
- [Commits](https://github.com/jazzband/django-formtools/compare/2.6.1...2.7 )
---
updated-dependencies:
- dependency-name: django-formtools
dependency-version: '2.7'
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 12:17:12 +02:00
Raphael Michel and GitHub
723c63008d
Team invite: Improve error message (Z#23239860) ( #6368 )
2026-07-10 12:13:44 +02:00
15c194c0a3
Add base class for historical payment providers ( #6336 )
...
* Add base class for historical payment providers
* Update src/pretix/base/payment.py
Co-authored-by: pajowu <engelhardt@pretix.eu >
---------
Co-authored-by: pajowu <engelhardt@pretix.eu >
2026-07-10 11:10:32 +02:00
pajowu and GitHub
7f847c3dd2
Fix TypeError if task.request.headers is None ( #6367 )
2026-07-09 18:52:49 +02:00
luelista and GitHub
430c6dd269
Use SafeStrings for plugin signals returning HTML that should be rendered ( #6343 )
...
As a security precaution, we change the contract of some signals such that a
SafeString needs to be returned if HTML should be rendered without further
escaping.
Before, the `{% signal ... %}` and `{% eventsignal ... %}` template tags
called mark_safe themselves on all strings returned from signals. That could
lead to unsafe coding practices, where untrusted values are interpolated into
HTML format strings. However, such interpolations should usually be performed
using helpers such Django's format_html, which automatically escapes inputs
and returns a SafeString.
Now, we call conditional_escape on signal results, so that any HTML not explicitly
marked as safe gets escaped.
Most plugins are not affected by this change as they return a SafeString as a
result of Template.render already.
2026-07-09 17:50:26 +02:00
Raphael Michel
6411648457
Revert "Update redis requirement from ==7.4.* to ==8.0.* ( #6226 )"
...
This reverts commit 005b3864b1 .
2026-07-09 00:45:32 +02:00
005b3864b1
Update redis requirement from ==7.4.* to ==8.0.* ( #6226 )
...
* Update redis requirement from ==7.4.* to ==8.0.*
Updates the requirements on [redis](https://github.com/redis/redis-py ) to permit the latest version.
- [Release notes](https://github.com/redis/redis-py/releases )
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES )
- [Commits](https://github.com/redis/redis-py/compare/v7.4.0...v8.0.0 )
---
updated-dependencies:
- dependency-name: redis
dependency-version: 8.0.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
* Remove setex calls
* Update src/pretix/presale/views/user.py
Co-authored-by: luelista <weller@rami.io >
* Fix tests
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Raphael Michel <michel@pretix.eu >
Co-authored-by: Raphael Michel <michel@rami.io >
Co-authored-by: luelista <weller@rami.io >
2026-07-08 12:07:54 +02:00
Raphael Michel and GitHub
1ee1c604cf
Tax rules: Correctly write log when changing custom rules ( #6358 )
2026-07-08 11:33:06 +02:00
luelista and GitHub
e425105dbf
Fix link from voucher tag to filtered voucher list ( #6362 )
2026-07-08 11:26:37 +02:00
Martin Gross
738b375042
DevDocs: Bump nodejs to 24
2026-07-08 10:53:14 +02:00
sweenu and GitHub
d09572d999
Remove leftovers from contact url in quick setup ( #6359 )
2026-07-07 19:23:48 +02:00
Lukas Bockstaller and GitHub
634754aacb
repair sendmail rules so we don't send emails to all positions in order independent of checkin status (Z#23235255) ( #6340 )
...
* add repro for Z#23235255
* add testcase for fallback to order.email
* only send to orderpositions included in op_qs
* codestyle
2026-07-07 17:46:52 +02:00
14c3baa2aa
Drop nullability on Order.organizer and OrderPosition.organizer ( #4278 )
...
* Drop nullability on Order.organizer and OrderPosition.organizer
* Rebase migration and add autoclean
* Utilize new relationship for scopes
* Declare reverse noop
* Update src/pretix/base/migrations/0302_resolve_duplicate_codes_and_secrets.py
Co-authored-by: Martin Gross <gross@rami.io >
* Update src/pretix/base/migrations/0302_resolve_duplicate_codes_and_secrets.py
Co-authored-by: Martin Gross <gross@rami.io >
---------
Co-authored-by: Martin Gross <gross@rami.io >
2026-07-07 17:44:19 +02:00
dc1b62fc56
Vouchers: Allow to bulk-update ( #6096 )
...
* Vouchers: Allow to bulk-delete larger numbers
* [DRAFT] voucher bulk update
* untested draft
* Minor fixes
* some tests and fixes
* More tests
* Bulk vouchers - refactor (#6353 )
* Reuse parse_itemvar from VoucherForm
* Refactor: Method for _bulk update check
* remove unused parameter
* Refactor: Deduplicate get_affected_quotas code
* Remove unused delete button
* Prevent accidental update of *all* vouchers (cf PR #4960 )
* Make sure we actually edit the selected items
* Use dataclass for bulk-edit data, deduplicate quota-blocking logic
* Move dataclass to models.py
* Fix linter errors
* Fix tests
* Fix tests
---------
Co-authored-by: luelista <weller@rami.io >
2026-07-07 17:03:25 +02:00
Raphael Michel and GitHub
ea2c81e6dc
Improve handling of logout during asynchronous tasks (Z#23238978) ( #6341 )
...
* Handle logout during async task requests properly
* Handle fragments safely on webcheckin logout
* Remove unnecessary comment
* Revert hash change
2026-07-07 16:14:00 +02:00
Raphael Michel
2bd5e90a86
Fix isort
2026-07-07 15:43:00 +02:00
Raphael Michel
8095134400
Add query tagging for periodic tasks
2026-07-07 14:55:32 +02:00
62f2ed55b2
Update webauthn requirement from ==2.8.* to ==3.0.* ( #6350 )
...
Updates the requirements on [webauthn](https://github.com/duo-labs/py_webauthn ) to permit the latest version.
- [Release notes](https://github.com/duo-labs/py_webauthn/releases )
- [Changelog](https://github.com/duo-labs/py_webauthn/blob/master/CHANGELOG.md )
- [Commits](https://github.com/duo-labs/py_webauthn/compare/v2.8.0-alpha1...v3.0.0 )
---
updated-dependencies:
- dependency-name: webauthn
dependency-version: 3.0.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 12:13:40 +02:00
3533450601
Add trace IDs from request to celery task ( #6333 )
...
* Add trace IDs from request to celery task
Celery tasks will log the request ID they were triggered from:
[2026-07-02 10:33:17,614: INFO/MainProcess] Task pretix.base.services.orders.cancel_order[5f3104b3-0a54-4e49-921e-c866c4dc4c6d] received
[2026-07-02 10:33:17,614: INFO/MainProcess] Task 5f3104b3-0a54-4e49-921e-c866c4dc4c6d has trace 4d389638-00ab-4c4d-bdec-d73ac322bf44
Nested celery tasks will then contain both the request ID as well as the previous tasks:
[2026-07-02 10:33:18,354: INFO/MainProcess] Task pretix.base.services.notifications.notify[d52a3a49-9c89-4f67-bdde-9f773586fc07] received
[2026-07-02 10:33:18,354: INFO/MainProcess] Task d52a3a49-9c89-4f67-bdde-9f773586fc07 has trace 4d389638-00ab-4c4d-bdec-d73ac322bf44 5f3104b3-0a54-4e49-921e-c866c4dc4c6d
* Apply suggestion from @luelista
Co-authored-by: luelista <weller@rami.io >
---------
Co-authored-by: luelista <weller@rami.io >
2026-07-07 12:09:27 +02:00
pajowu and GitHub
5fb827c8f5
CheckInListPDF export: remove double html escaping with PlainTextParagraph (Z#23239571) ( #6347 )
2026-07-07 12:00:17 +02:00
Raphael Michel and Raphael Michel
af6727bbe2
Translations: Update German (informal) (de_Informal)
...
Currently translated at 100.0% (6362 of 6362 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/
powered by weblate
2026-07-07 11:57:51 +02:00
Raphael Michel and Raphael Michel
f0d2733e8d
Translations: Update German
...
Currently translated at 100.0% (6362 of 6362 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/
powered by weblate
2026-07-07 11:57:51 +02:00
Raphael Michel
90bca935de
Update po files
...
[CI skip]
Signed-off-by: Raphael Michel <michel@rami.io >
2026-07-07 11:34:15 +02:00
Raphael Michel
9c752b7263
Translations: Fix typo
2026-07-07 11:29:03 +02:00
CVZ-es and Raphael Michel
bfdd61a14c
Translations: Update French
...
Currently translated at 99.9% (6355 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/
powered by weblate
2026-07-07 11:28:33 +02:00
CVZ-es and Raphael Michel
6aca806239
Translations: Update Spanish
...
Currently translated at 100.0% (6360 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/
powered by weblate
2026-07-07 11:28:33 +02:00
CVZ-es and Raphael Michel
8512a8c4a5
Translations: Update French
...
Currently translated at 99.9% (6354 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/
powered by weblate
2026-07-07 11:28:33 +02:00
Raphael Michel and Raphael Michel
ecee6f6c30
Translations: Update German (informal) (de_Informal)
...
Currently translated at 99.9% (6359 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/
powered by weblate
2026-07-07 11:28:33 +02:00
Raphael Michel and Raphael Michel
846ec77c50
Translations: Update German
...
Currently translated at 99.9% (6359 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/
powered by weblate
2026-07-07 11:28:33 +02:00
CVZ-es and Raphael Michel
49c69c816c
Translations: Update French
...
Currently translated at 99.8% (6348 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/
powered by weblate
2026-07-07 11:28:33 +02:00
Hijiri Umemoto and Raphael Michel
f3868576c5
Translations: Update Japanese
...
Currently translated at 100.0% (260 of 260 strings)
Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ja/
powered by weblate
2026-07-07 11:28:33 +02:00
Hijiri Umemoto and Raphael Michel
3857361559
Translations: Update Japanese
...
Currently translated at 100.0% (6360 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/
powered by weblate
2026-07-07 11:28:33 +02:00
CVZ-es and Raphael Michel
b0c50de331
Translations: Update Spanish
...
Currently translated at 100.0% (6360 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/
powered by weblate
2026-07-07 11:28:33 +02:00
CVZ-es and Raphael Michel
1dad6bf801
Translations: Update French
...
Currently translated at 99.7% (6347 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/
powered by weblate
2026-07-07 11:28:33 +02:00
Raphael Michel and Raphael Michel
d94d4bd57e
Translations: Update German (informal) (de_Informal)
...
Currently translated at 99.9% (6358 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/
powered by weblate
2026-07-07 11:28:33 +02:00
CVZ-es and Raphael Michel
2437f768c9
Translations: Update German (informal) (de_Informal)
...
Currently translated at 99.9% (6358 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/
powered by weblate
2026-07-07 11:28:33 +02:00
Raphael Michel and Raphael Michel
ab621890a2
Translations: Update German
...
Currently translated at 99.9% (6359 of 6360 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/
powered by weblate
2026-07-07 11:28:33 +02:00
Raphael Michel
a9135919a1
Translations: Update wordlists
2026-07-07 11:21:59 +02:00
Raphael Michel
e2c437fd43
Update confusing verbiage after #6216
2026-07-07 10:58:27 +02:00
Raphael Michel and GitHub
ba10fc8041
Event product list: Fix another performance issue for large series ( #6331 )
...
This is a follow-up for #6318 , basically the same problem but in a
neighboring query.
Performance comparison for real-world event with 13k subevents:
In [15]: %time get_grouped_items(e, subevent=se, channel=e.organizer.sales_channels.get(identifier="web"))
CPU times: user 49.1 ms, sys: 3.79 ms, total: 52.9 ms
Wall time: 1.12 s
Out[15]: ([<Item: xxx>], True
In [16]: %time get_grouped_items_patched(e, subevent=se, channel=e.organizer.sales_channels.get(identifier="web"))
CPU times: user 30.2 ms, sys: 445 μs, total: 30.6 ms
Wall time: 45.3 ms
Out[16]: ([<Item: xxx>], True)
2026-07-07 10:48:50 +02:00