Commit Graph

757 Commits

Author SHA1 Message Date
Raphael Michel
c10e96795f Widget: Respect order_max of voucher (#5167)
* Widget: Respect order_max of voucher

* fix tests, make voucher.max_usages explicit

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-28 13:21:21 +02:00
luelista
5962536a11 Dialog for cart renewal, async task without page refresh (#5148)
* async_task: deduplicate response handling code

* extend cart without full page reload

* update dialog markup

* fix error response from CartExtend

* refactor asynctask, make sure waitingDialog.show() re-initializes dialog contents

* add cart expiry notification

* add aria references to other dialogs

* improve error handling

* fix error if max_extend=None

* different message for expiring soon and expired carts

* refactor dialog css

* add classes to further dialog elements

* switch extend-cart-dialog and loadingmodal to <dialog>

* Backport simple_block_tag from Django 5.2

* Use simple_block_tag for {% dialog %} tag

* add alertdialog role

* Update src/pretix/static/pretixbase/scss/_dialogs.scss

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* fix mobile dialog styles not being overwritten

* asynctask dialog: prevent close by escape on chrome

* remove dynamic aria-live from #cart-deadline

dynamic aria-live is generally not well supported and as we have the dialog now anyways, we can remove it

* move continue-button to right

* Update src/pretix/static/pretixpresale/js/ui/cart.js

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Fix CSS for old-style dialog

* fix heading display/level

* align dialogs at the top as they originally were

* fix </div> from merge-conflict

* fix missing grow for dialog-content

* improve cart-extend-button ui

* do not show cart-extend-dialog onload

* improve message if 0 minutes

* do not save messae in session if ajax_dont_redirect

* add ajax_dont_redirect to async_task_check_url

* improve draw_deadline to only update #cart-deadline if necessary

* add renew-confirmation-message

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-27 07:17:50 +02:00
luelista
a84beef269 [A11y] Cart renewal (#5109)
Allow customers to extend their cart reservation up to 11 times the configured reservation time
2025-05-21 17:02:21 +02:00
Richard Schreiber
2b735bec0b [A11y] Improve customer account forms (#5034) 2025-05-09 08:36:09 +02:00
Phin Wolkwitz
3e335bcbfe Presale: Hide subevent lists if subevents exist but none are visible (Z#23186153) (#5054)
* Hide subevent lists (but not calendars) if subevents exist but none are visible, to avoid confusion during checkout
2025-05-07 13:36:50 +02:00
Richard Schreiber
2605fe93d9 Fix unhandled error when parsing date in calendar-view (#5072) 2025-05-05 15:33:22 +02:00
luelista
d926030bf6 Event list: fix parsing of date query parameter (#5047)
Use the same localization formats as used when generating the value
2025-05-02 10:22:04 +02:00
Richard Schreiber
1a1948e3fa [A11y] Improve HTML-output for date-ranges 2025-03-27 13:21:25 +01:00
Mira
b7caf7769e Don't ignore free price input in the cross-selling step in an event series (issue #4850) (#4933) 2025-03-19 10:26:37 +01:00
Mira
2186a17530 Pass widget_data to new tab even if 3rd-party cookies are disabled (Z#23176995) (#4899)
* Pass widget_data to new tab even if 3rd-party cookies are disabled (Z#23176995)

* Perform cookie check earlier

* Deduplicate redirect code

* Don't forget the subevent id

* We still need to pass thru the widget_data parameter
because for an empty cart, take_cart_id will do nothing.

* pass through "consent" as GET-param as well

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-03-18 14:25:29 +01:00
Raphael Michel
d9e8dd70e4 New mechanism to transfer cookie consent from the widget (Z#23181715) (#4875)
* Cookie consent: Add separate storage layer for widget

* Widget: Move cookie consent out of widget_data

* Add consent parameter to forms
2025-03-04 15:28:03 +01:00
Raphael Michel
67db230f72 OIDC: Implement PKCE in OP and RP 2025-02-21 13:23:17 +01:00
Raphael Michel
cfae2c62c3 OIDC: Fix incorrect error handling in server implementation 2025-02-07 18:04:46 +01:00
Raphael Michel
c820d742d4 Generate invoice earlier in payment method change process (Z#23179304) (#4763)
* Generate invoice earlier in payment method change process (Z##23179304)

* Resolve review note
2025-02-03 17:39:46 +01:00
Raphael Michel
2a3cdd85e8 Prevent order changes that interfer with a pending payment that can't be aborted (Z#23179178) (#4765) 2025-02-03 17:09:17 +01:00
Mira Weller
f014a9bbd3 Reapply "Implement hidden_if_item_available_mode option (Z#23177008) (#4776)"
This reverts commit 5cd7959e86.
2025-01-24 14:48:28 +01:00
Mira Weller
5cd7959e86 Revert "Implement hidden_if_item_available_mode option (Z#23177008) (#4776)"
This reverts commit b847612e1a.
2025-01-24 14:07:55 +01:00
Mira
b847612e1a Implement hidden_if_item_available_mode option (Z#23177008) (#4776) 2025-01-24 11:24:50 +01:00
Mira
bc32fe91a6 Make "Show in backend" button on ticket pages available on custom domains (#4743) 2025-01-14 18:37:38 +01:00
Raphael Michel
5cf2f1beef New invoice generation setting: User request but paid only (#4740) 2025-01-14 13:54:25 +01:00
Raphael Michel
e74793994a Fix invalid usage of re.split() on Python 3.13 2025-01-03 15:21:15 +01:00
Richard Schreiber
5b99788354 Unify event list view on organizer and event-series (#4702) 2024-12-18 13:32:26 +01:00
Raphael Michel
53f129d5d3 Add codification of tax rates (#4372)
* draft

* .

* Rebase migration

* Update src/pretix/base/models/tax.py

Co-authored-by: Mira <weller@rami.io>

* Test, isort, flake, migration rebase

* carry data & API

* Fix failing tests

* docs fixes

* Improve validation

* Tests

* More fixes

---------

Co-authored-by: Mira <weller@rami.io>
2024-12-13 12:04:38 +01:00
Raphael Michel
6b199a2b9c Allow to enter gift cards into the voucher input (Z#23171961) (#4670) 2024-12-05 13:43:46 +01:00
Raphael Michel
e99ee91573 Allow to use custom domains for some but not all events (Z#23153875) (#4627)
* Allow to use custom domains for some but not all events

* Update src/pretix/multidomain/urlreverse.py

* Apply suggestions from code review

Co-authored-by: Mira <weller@rami.io>

* Logging for domain config changes

---------

Co-authored-by: Mira <weller@rami.io>
2024-12-02 15:58:50 +01:00
Richard Schreiber
a1bf7be244 [A11y] Improve customer account pages (#4654) 2024-11-29 14:16:40 +01:00
Mira
27f964f3ae Checkout flow: Observe direction when skipping AddOnsStep (#4658) 2024-11-27 11:13:07 +01:00
Raphael Michel
0cd1290624 Tests: Fix two flaky tests (#4557)
* Test: Fix test that relies on unstable database result order

* Tests: Fix test that fails between 0am and 1am
2024-10-25 17:04:16 +02:00
Mira
359df1f51e Cross selling (#4185)
Product categories can now be marked as "cross-selling categories", causing them to 
appear in the add-on checkout step as additional recommendations, depending on 
their cross-selling visibility (always, only if certain products are already in the cart, or 
only if they qualify for a discount according to discount rules).

---------

Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2024-10-14 14:39:49 +02:00
Raphael Michel
7607cc5d2f Fix indentation 2024-10-14 09:26:56 +02:00
Raphael Michel
40c8d014df Waiting list: Redirect to shop if no products can be awaited (Z#23168172) (#4517)
* Waiting list: Redirect to shop if no products can be awaited (Z#23168172)

* Update src/pretix/presale/views/waiting.py

Co-authored-by: Mira <weller@rami.io>

---------

Co-authored-by: Mira <weller@rami.io>
2024-10-14 09:26:06 +02:00
Raphael Michel
1334a570e4 Generate email confirmation secret from tagged_secret (#4480) 2024-10-07 13:58:08 +02:00
Raphael Michel
a07d5aaf05 Add-on step: Minimal performance improvement 2024-09-27 13:26:30 +02:00
Raphael Michel
b059995eff Widget: Fix waiting list disable time based on subevent 2024-09-17 17:39:22 +02:00
Raphael Michel
98709286c6 Order cancellation: Fix crash on deleted order (PRETIXEU-AHP) 2024-09-10 14:00: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
Mira
a0b046d204 Fix #4201, Fix #4271 -- Time machine issues (#4371)
* Fix issue #4201

* Fix issue #4271

* Use time_machine_now() for subevent calendar display
2024-08-02 09:11:07 +02:00
Raphael Michel
13720e731e Easier PCI DSS compliance for payment pages (#4273)
* Assign names to compressed scripts

* Make PCI-relevant pages detectable

* Make payment summary markup more consistant to easy work in tracking plugin

* Add docs note
2024-07-31 13:11:38 +02:00
Mira
858a448db5 Fix voucher redemption with time machine [Z#23159226] (#4352)
Redeeming a voucher failed if current time is outside the booking period and the shop was accessed via time machine.
2024-07-30 09:14:36 +02:00
Raphael Michel
b8ea93de1e Fix ticket_download_require_validated_email after sales channel change 2024-07-22 09:38:35 +02:00
Raphael Michel
a173e347ea Optimize availability queries 2024-07-02 18:29:44 +02:00
Raphael Michel
4fb5c6bef0 New implementation of sales channels (#4111)
Co-authored-by: Martin Gross <gross@rami.io>
2024-06-30 19:24:30 +02:00
Richard Schreiber
25ba2f1145 Add signal seatingframe_html_head (#4270) 2024-06-27 10:46:26 +02:00
Raphael Michel
f0a06cd9fe Replace SCSS compilation with CSS variables (#4191)
* Replace SCSS compilation with CSS variables

* Update tests

* Update src/pretix/presale/style.py

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/presale/context.py

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/presale/views/widget.py

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/presale/context.py

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/static/pretixbase/scss/_variables.scss

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Last minor changes

* Rename file

---------

Co-authored-by: Mira <weller@rami.io>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2024-06-25 13:01:20 +02:00
Raphael Michel
d463878514 Do not use price suggestion if voucher is used (Z#23155018) (#4195) 2024-06-04 11:57:26 +02:00
Mira
05a2f411db Improve order secret handling (#4139)
- use hmac.compare_digest for all secret comparisons
- use salted_hmac with sha256 instead of plain sha1 for hashed secrets
- move secret handling into helper functions
2024-05-23 14:30:16 +02:00
Raphael Michel
86ddca15ca Keep Python 3.9 compatibility for now / Revert "Fix more Python 3.12 warnings"
This reverts commit 294b3966b0.
2024-05-22 09:02:25 +02:00
Raphael Michel
294b3966b0 Fix more Python 3.12 warnings 2024-05-21 14:40:41 +02:00
Mira
b638c00952 Time machine mode [Z#23129725] (#3961)
Allows organizers to test their shop as if it were a different date and time.

Implemented using a time_machine_now() function which is used instead of regular now(), which can overlay the real date time with a value from a ContextVar, assigned from a session value in EventMiddleware.

For more information, see doc/development/implementation/timemachine.rst

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
Co-authored-by: Raphael Michel <michel@rami.io>
2024-05-17 10:52:17 +02:00
Raphael Michel
e8f7cea1bf Allow attendees to modify their data (Z#23152886) (#4138)
* Allow attendees to modify their data

* Allow attendees to change ticket information

* Update src/pretix/control/templates/pretixcontrol/event/settings.html

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/presale/views/order.py

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/base/services/placeholders.py

Co-authored-by: Mira <weller@rami.io>

* Tests fix

* Fix test

---------

Co-authored-by: Mira <weller@rami.io>
2024-05-08 15:18:33 +02:00