Commit Graph
1407 Commits
Author SHA1 Message Date
Raphael MichelandGitHub 3ddf759a1b Helper and docs for offlinesales API (#5302) 2025-07-17 17:01:23 +02:00
Raphael MichelandGitHub 04e92e9f2f Order import: Allow to create multiple multi-ticket orders (#5304)
* Order import: Allow to create multiple multi-ticket orders

* Update src/pretix/base/modelimport_orders.py

* Fix failing test
2025-07-14 10:03:16 +02:00
a381adac33 API: Add transactions (#5292)
* API: Add transactions

* Apply suggestions from code review

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-07-08 14:11:53 +02:00
14ed6982a5 New data model for default tax rule and new options for cancellation fees (#4962)
* New data model for default tax rule

* Remove misleading empty label when field is not optional

* Allow to split cancellation fee

* Fix API and tests

* Update migration

* Update src/tests/api/test_taxrules.py

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

* Update src/tests/api/test_taxrules.py

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

* Review note

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

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

* Flip API behaviour for default

* Fix failing tests

* Fix failing test

* Split migration

---------

Co-authored-by: luelista <weller@rami.io>
2025-06-30 16:47:09 +02:00
Richard SchreiberandGitHub 9bf302e5ae Widget: deprecate v1 and deliver v2 instead (#5273)
* Widget: deprecate v1 and redirect to v2

* Make redirect permanent

* remove v1 files

* do not redirect, just serve version_min

* add version-comment to delivered css/js-file

* fix tests
2025-06-25 11:20:34 +02:00
5d3fc62ba4 Questions: Validate type changes (Z#23197118) (#5259)
* Questions: Validate type changes (Z#23197118)

* Update src/pretix/base/forms/questions.py

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

* Update src/pretix/base/forms/questions.py

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

* Update src/pretix/base/forms/questions.py

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

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

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

* Fix failing test

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-24 17:54:28 +02:00
Raphael Michel 512ca1966d Remove a cache isolation issue during tests 2025-06-23 15:40:54 +02:00
Raphael MichelandGitHub eba5c1b36d API: Fix crash on distributing a fee over tax rates with zero value (Z#23196669) (#5226) 2025-06-12 14:03:25 +02:00
7d30ecf527 API: Add items__in filter for quotas (Z#23195926) (#5232)
* API: Add items__in filter for quotas (Z#23195926)

* Update doc/api/resources/quotas.rst

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-12 12:24:45 +02:00
luelistaandGitHub df48adef1b Filter payment method sales channels when cloning event to new organizer (Z#23196085) (#5220) 2025-06-11 10:56:58 +02:00
66a4a34383 [A11y] fix giftcard-checkout error messages (#5175)
* [A11y] fix giftcard-checkout error messages

* move validation to payment_form

* Update checkout_payment.html

* move already-used check to clean as well

* fix tests

* fix code style issue

* fix giftcard-payment in redeem-view

* Fix responsiveness on checkout

* Fix paying for existing orders

* fix cart.py for new GiftCardPaymentForm-signature

* fix order_tests

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-30 13:29:33 +02:00
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
c2d5d40be6 OrderChangeManager: Respect addons on cancellation check (Z#23193427) (#5132)
* OrderChangeManager: Respect addons on cancellation check (Z#23193427)

* Update src/tests/base/test_orders.py

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

---------

Co-authored-by: luelista <weller@rami.io>
2025-05-22 16:04:50 +02:00
luelistaandGitHub 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
Raphael MichelandGitHub 1caa71cdbe Improve validation of Norwegian VAT IDs (#5089) 2025-05-12 17:04:58 +02:00
Raphael MichelandGitHub 5522d67f9b API: Fix old meta values being returned when updating event (fixes #5077) (#5080) 2025-05-09 08:59:40 +02:00
Richard SchreiberandGitHub 2b735bec0b [A11y] Improve customer account forms (#5034) 2025-05-09 08:36:09 +02:00
Raphael MichelandGitHub e1027e3e8c OrderChangeManager: Re-use same instances of OrderPosition/OrderFee 2025-04-29 12:38:41 +02:00
Raphael MichelandRaphael Michel 384d0c4824 Order changes: Correctly respect tax rules when adding or changing items (Z#23190086) 2025-04-28 13:06:45 +02:00
Raphael MichelandGitHub 025ee6710c Fix #4982 -- API: Do not parse decimal input to float (#5012) 2025-04-22 17:36:04 +02:00
Raphael MichelandGitHub 9844ffca98 Discounts: Fix incorrect test for subevent date limitation (#4991)
If two discounts match the same products, the first one wins. Therefore,
the one we want to win in the test must always come last, otherwise the
test is not actually testing anything. In this case, this is highlighted
by the fact that the test does not pass in diffrent orders of discounts
unless we subtract a second from the date, because we compare with <=,
not <.
2025-04-07 17:37:55 +02:00
Richard SchreiberandGitHub 12f4473fbd Fix checkin-list-filter test randomly matching secret 2025-04-07 15:31:07 +02:00
luelistaandGitHub 277a5bffa8 Allow changing ticket secret via API (Z#23188201) (#4989) 2025-04-07 13:49:19 +02:00
luelistaandGitHub d8ec489b13 OrderChangeManager: Fix for change_tax_rule and recalculate_taxes in same transaction (Z#23187299) (#4964)
* Add test case

* Do not overwrite tax_rule in PriceOperation
2025-03-31 12:27:45 +02:00
Raphael MichelandGitHub 804b048dbb Check-in API: Return order locale, and allow to use order locale for … (#4969)
* Check-in API: Return order locale, and allow to use order locale for reasons

* Fix failing tests
2025-03-31 12:26:46 +02:00
0b8a7349c7 Discounts: Add applicability date ranges (Z#23151897) (#4927)
* Add event date fields, add preliminary range check

* Remove function, use filtered queryset for subevent id limit

* Improve and fix date range check

* Add formfields

* Add tests

* Improve tests

* Add new fields to API and documentation

* Add migration

* Change description according to suggestion

* Change discount apply signature, remove unnecessary query

* Rename new fields, simplify range check

* Rename fields in template

* Apply suggestions from code review

Co-authored-by: Raphael Michel <michel@rami.io>

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-03-27 15:36:20 +01:00
Richard SchreiberandGitHub 1a1948e3fa [A11y] Improve HTML-output for date-ranges 2025-03-27 13:21:25 +01:00
Raphael MichelandGitHub 7652f48dc1 New consistent representation of date ranges with times (Z#23184657) 2025-03-18 14:40:38 +01:00
11632e082f API: Allow to add a fee to an order (#4806) (#4829)
* API: Allow to add a fee to an order (#4806)

* Fix example in docs

* Consistent order of examples

* Add create_fees to example

* docs: None -> null

* docs: update fee_type options

---------

Co-authored-by: Mira Weller <weller@rami.io>
2025-02-25 14:41:28 +01:00
fb6117a307 Fix voucher application on "free price" items (Z#23183254) (#4863)
* Do not apply vouchers on "free price" items where more than minimum price is selected

* Do apply vouchers on "free price" items if exactly the minimum price is selected

* Update cart.py

* Add test cases, fix bug in adjacent test

* Fix code style

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-02-24 17:14:49 +01:00
Raphael MichelandGitHub 67db230f72 OIDC: Implement PKCE in OP and RP 2025-02-21 13:23:17 +01:00
Raphael Michel 4ad9bcf6e7 API: Fix locale accidentally being a required field 2025-02-12 17:55:30 +01:00
Raphael MichelandGitHub 7afe2e66d7 API: Validate input locales (Z#23182219) (#4833) 2025-02-12 12:50:13 +01:00
0079be68d3 Allow plugins to add data to the order API (Z#23179688) (#4822)
* Allow plugins to add data to the order API (Z#23179688)

* Update src/pretix/api/serializers/media.py

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

* Fix failing test

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-02-10 14:06:20 +01:00
Kian CrossandGitHub 5bf6980a7b Improve date format heuristic for bank statement import (#4814)
When dates are ambiguous, use the event's locale to infer whether the
day or month comes first. Since regions follow certain date format
conventions, this helps make more accurate guesses.
2025-02-10 11:33:14 +01:00
b6c903a7ba Invoice renderer: Group invoice lines even with addons (Z#23173618) (#4744)
* Invoice renderer: Group invoice lines even with addons (Z#23173618)

* Add unit test

* Update src/pretix/base/invoice.py

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

---------

Co-authored-by: Mira Weller <weller@rami.io>
2025-02-06 10:55:09 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Raphael Michel
4e4e187a84 Update beautifulsoup4 requirement from ==4.12.* to ==4.13.* (#4804)
* Update beautifulsoup4 requirement from ==4.12.* to ==4.13.*

Updates the requirements on [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Replace findAll with find_all

---------

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@rami.io>
2025-02-05 17:39:23 +01:00
Kian CrossandGitHub 5d4b218aa6 Banktransfer: Handle trailing commas in headers for Lloyds Bank CSV files (#4782)
Lloyds Bank (UK) CSV files include a trailing comma in the header row
but not in the data rows, causing the `csvimport.parse` function to
skip the data rows. This occurs because the header length exceeds the
row length, making them unequal to `hint.cols`.

This commit adjusts the length check to allow a range of acceptable row
lengths, from the index of the last non-empty column in the header to
`hint.cols`. This ensures compatibility with headers containing one or
more trailing commas without affecting rows with correctly labelled columns.

The solution avoids breaking changes by leaving underlying data structures
untouched. Alternative approaches, such as dropping trailing commas before
parsing or removing empty elements after parsing, were avoided due to
potential risks. Specifically, trailing columns might contain data that
banks provide but fail to label in the header row.
2025-02-05 16:56:28 +01:00
Raphael MichelandGitHub 58db550e23 Do not allow to cancel pending payments by default (Z#23179178) 2025-02-03 17:07:19 +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
MiraandGitHub b847612e1a Implement hidden_if_item_available_mode option (Z#23177008) (#4776) 2025-01-24 11:24:50 +01:00
Raphael MichelandGitHub 1635118772 Copy ItemVariation.limit_sales_channels when copying items (#4752) 2025-01-21 15:01:28 +01:00
c8d4815c9e LogEntryType registry (#4235)
Move display of LogEntry details from the `logentry_display` and 
`logentry_object_link` signals to a class hierarchy based approach. 
For each action_type, an instance of a subclass of `LogEntryType` 
is registered in the `log_entry_types` registry.

Analogous to EventPluginSignal, this registry is an `EventPluginRegistry`, 
so it keeps track of the plugin the LogEntryType is defined in.

---------

Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-01-16 13:05:57 +01:00
Raphael MichelandGitHub 5cf2f1beef New invoice generation setting: User request but paid only (#4740) 2025-01-14 13:54:25 +01:00
Raphael MichelandGitHub 62c028d9ac Fix order availability with blocked seeat (Z#23178286) (#4734) 2025-01-13 12:49:49 +01:00
Raphael Michel 595c042624 Regenerate OrderPosition.web_secret when chaning other secrets 2025-01-03 15:21:45 +01:00
Raphael Michel 5a5a551c21 Fix tests failing after 2025-01-01 2025-01-03 15:21:32 +01:00
Raphael Michel 13c40f9bb7 API: Fix sales channels when copying events (Z#23177154, Z#23169537) 2024-12-20 14:09:10 +01:00
Raphael MichelandGitHub 20f171b790 Order import: Respect sales channel when validating seats (#4707) 2024-12-18 13:57:29 +01:00