Commit Graph

1286 Commits

Author SHA1 Message Date
Raphael Michel
9d2ef94389 Invoicing: Configurable service date 2025-09-29 13:15:42 +02:00
Richard Schreiber
34dbbdd82f PDF-Editor: fix missing maxlength for layout name (#5473) 2025-09-24 09:58:02 +02:00
Raphael Michel
baab35b81f Items: Allow plugins to put forms above a formset (#5460) 2025-09-15 18:11:18 +02:00
luelista
49c0f6b967 Organizer plugins: Do not show plugins as active if they are inactive on org-level (#5396) 2025-08-22 09:31:01 +02:00
Raphael Michel
fe9a7eaa24 Order overview: Try to make linked filters behave as expected for line-level cancellations (Z#23203500) 2025-08-22 09:30:34 +02:00
Raphael Michel
c200072471 Improve string quality and consistency 2025-08-19 18:35:35 +02:00
Raphael Michel
cbee131378 Fix typos 2025-08-19 18:01:46 +02:00
Raphael Michel
05c74b7ad6 Pluggable invoice transmission methods (#5020)
* Flexible invoice transmission

* UI work

* Add peppol and output

* API support

* Profile integration

* Simplify form for individuals

* Remove sent_to_customer usage

* more steps

* Revert "Bank transfer: Allow to send the invoice direclty to the accounting department (#2975)"

This reverts commit cea6c340be.

* minor fixes

* Fixes after rebase

* update stati

* Backend view

* Transmit and show status

* status, retransmission

* API retransmission

* More fields

* API docs

* Plugin docs

* Update migration

* Add missing license headers

* Remove dead code, fix current tests

* Run isort

* Update regex

* Rebase migration

* Fix migration

* Add tests, fix bugs

* Rebase migration

* Apply suggestion from @luelista

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

* Apply suggestion from @luelista

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

* Apply suggestion from @luelista

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

* Apply suggestion from @luelista

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

* Apply suggestion from @luelista

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

* Make migration reversible

* Add TransmissionType.enforce_transmission

* Fix registries API usage after rebase

* Remove code I forgot to delete

* Update transmission status display depending on type

* Add testmode_supported

* Update src/pretix/static/pretixbase/js/addressform.js

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

* Update src/pretix/static/pretixbase/js/addressform.js

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

* Update src/pretix/static/pretixbase/js/addressform.js

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

* New mechanism for non-required invoice forms

* Update src/pretix/base/invoicing/transmission.py

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

* Declare testmode_supported for email

* Make transmission_email_other an implementation detail

* Fix failing tests and add new ones

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

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

* Add emails to email history

* Fix comma error

* More generic default email text

* Cleanup

* Remove "email invoices" button and refine logic

* Rebase migration

* Fix edge case

---------

Co-authored-by: luelista <weller@rami.io>
2025-08-19 17:59:45 +02:00
Raphael Michel
a51a6123f5 Organizer-level plugins (#5305)
* Add version notes to the docs

* Adapt signal handling

* Add UI

* Add API

* API and tests

* Fix registry

* Update doc/development/api/plugins.rst

Co-authored-by: Felix Rindt <felix@rindt.me>

* Fix failing tests

* Apply suggestions from code review

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

* Update src/pretix/control/templates/pretixcontrol/organizers/plugin_events.html

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

* Update src/pretix/control/templates/pretixcontrol/organizers/plugins.html

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

* Update src/pretix/control/templates/pretixcontrol/organizers/plugins.html

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

* Update src/pretix/control/navigation.py

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

* Update src/pretix/control/urls.py

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

* Apply suggestion from @wiffbi

* REbase migration

* Fix review note

* Fix test cases

* Remove plugin from all events if disabled on org level

* Update doc/development/api/plugins.rst

* Unify registries

* Rebase migration

---------

Co-authored-by: Felix Rindt <felix@rindt.me>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
Co-authored-by: luelista <weller@rami.io>
2025-08-19 11:33:34 +02:00
luelista
d5bccf8726 Queueing and mapping utilities for outbound data sync (#4881)
Add a registry for datasync providers and an associated sync queue, to be used by 
plugins that transfer data from pretix orders to external systems. 
Additionally, provide a generic data mapping interface to be used in settings pages 
of such plugins, to let users configure which information from pretix to fill into
which data fields of the external system.

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-08-06 14:34:04 +02:00
Raphael Michel
9a119c35a8 Add a system-wide style for admin-only things (#5311)
* Add a system-wide style for admin-only things

* change stripe-color to a red-ish tone

* add stripes to button end-admin-session

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-08-04 16:18:29 +02:00
Raphael Michel
423f0cbb90 Add button to reset entire check-in stack (Z#23188730) (#5312)
* Show print logs to admins

* Add button to reset entire check-in stack (Z#23188730)

* isort

* Update src/pretix/control/templates/pretixcontrol/checkin/reset.html

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

* Update src/pretix/control/templates/pretixcontrol/checkin/reset.html

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

* Update src/pretix/control/templates/pretixcontrol/checkin/reset.html

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

* Update src/pretix/control/templates/pretixcontrol/checkin/lists.html

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-07-18 10:02:18 +02:00
Richard Schreiber
14d6013292 FormFields: remove placeholders duplicating labels (#5135) 2025-07-10 16:06:36 +02:00
Raphael Michel
415bff5c72 Device connection: Add copy buttons for manual setup 2025-07-10 14:46:24 +02:00
Richard Schreiber
a5f7f2bd0c Control: add event slug errors as help-text (#5288) 2025-07-08 13:49:41 +02:00
Raphael Michel
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 Schreiber
090358833d Remove browserconfig.xml (#5280)
* Remove meta-elements

* remove url-route
2025-06-30 11:25:18 +02:00
Richard Schreiber
a4c74f6310 PDF-Editor: use panel-head as topbar for common commands/tools and preview/save (#4977) 2025-06-30 11:19:39 +02:00
Richard Schreiber
f66a41f6a7 Presale: remove webmanifest (#5275)
* Remove webmanifest from presale

* move webmanifest from presale to base urls
2025-06-30 09:33:42 +02:00
Richard Schreiber
7bb2e4c170 Improve stats-UI fix (#5243)
* Improve stats-UI fix

* remove unused stats_json
2025-06-18 09:11:16 +02:00
Raphael Michel
8418d03add Questions: Express percentage of tickets (Z#23196542) (#5239)
* Questions: Express percentage of tickets (Z#23196542)

* add missing td for sum

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-13 11:01:37 +02:00
luelista
b5f8438c18 Show warning on incompatible waiting list options (#5218)
If "Hide all products that are sold out" is enabled, the waiting list won't work.
2025-06-13 11:01:18 +02:00
Raphael Michel
5420f57aa2 Subevent bulk editing: Warn about deleted quotas (#5238)
* Subevent bulk editing: Warn about deleted quotas

* Fix condition

* Update alerts
2025-06-13 11:01:00 +02:00
Richard Schreiber
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
Richard Schreiber
92f7456eca Widget: add versioning support and add v2 with improved a11y-support (#5136)
* Add support for versioning widget.js

* add versionable css

* add version deprecation + redirect

* use dynamic template_path instead of dynamic css_path

* remove dummy code from widget.v1.scss

* fix typo

* [A11y] fix input border & focus style (#5149)

* [A11y] fix input border & focus style

* Fix double semi-colon

* [A11y] make collapse-indicator a button (#5150)

* Fix source order for cart-exists-message (#5152)

* [A11y] underline links (#5151)

* [A11y] Move modal-dialogs to HTMLDialogElement (#5147)

* [A11y] move widget/iframe to html-dialog

* make lightbox a dialog

* move error-alert to dialog

* re-add crossorigin

* fix esc-handling and move animation to icon to enable focusing the button

* fix code-style issues

* block canceling loading iframe

* Escape/cancel blocking fix for Chrome

* add round focus-outline when dialog is loading

* Widget v2: change voucher-link to hash-based link (#5161)

* Fix variants toggle-button being submit-button

* Widget v2: make single-item-select button and always show custom-spinners (#5165)

* Widget v2: make single-item-select=button default

* remove native-spinners and single_item_select

* Stop suggesting old parameter

---------

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

* Widget v2: add filter button to events metadata-filter (#5162)

* Widget v2: do not underline events in list and calendar (#5163)

* Fix checkbox button missing border radius (#5158)

* Widget v2: turn add-to-cart-button into resume-button if cart-exists and no items selected (#5160)

* Widget v2: make cart-alert live=polite

* Add resume-button if cart-exists and no items selected

* fix error handling with new-tab and later returning to old window

* Fix cart-message button being full height

* fix amount_selected recalc

* Fix broken v-model

* fix merge

* Widget v2: Remove link from variation-product title (#5159)

* Remove link from variation-product, focus associated input

* open variations onclick on product-title

* clickable elements should be focussable and interactive, so better remove click-handler on product-title

* Widget v2: Fix calendar events color contrast (#5164)

* Widget v2: Fix calendar events color contrast

* fix status-bubbles in list-view

* fix color in mobile

* add striped-background to calendar and week

* improve display of calendar for super small screens

* Fix meta-filter legend not being screen-reader accessible

* update version_default to 2

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

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-28 15:02:39 +02:00
Raphael Michel
e46e689f01 Allow to add declaration of accessibility (#5140)
* Allow to add declaration of accessibility

* add fallback for empty accessibility_title

* unify label format (not "Title for")

* move title to top and set helptext before text

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-28 13:23:04 +02:00
Raphael Michel
5fb1fc23ce Refactor stubs for gettext JS function (#5170) 2025-05-27 17:24:04 +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
Martin Gross
465171f323 WebAuthN: Replace sr-only with hidden css-class 2025-05-22 17:13:44 +02:00
Richard Schreiber
7756b6745c [A11y] move timezone info inline instead of tooltip (#5130)
* [A11y] move timezone info inline instead of tooltip

* Update text as suggested from code review

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

* Rebase migration

* Delete src/pretix/base/migrations/0280_event_is_remote.py

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-22 16:48:11 +02:00
Richard Schreiber
1f2a0278c0 [A11y] replace b with strong for better semantics (#5086) 2025-05-12 16:43:08 +02:00
Raphael Michel
31bb0f4a91 Product list: Show icon for seated products (#5015)
* Product list: Show icon for seated products

* Use updated seat icon

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

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-06 11:14:28 +02:00
Raphael Michel
c1656158f2 Item categories: Show IDs (required for widget usage) 2025-04-19 20:35:33 +02:00
Raphael Michel
b4d8e9ccc4 Backend event list: Sort event series by their actual dates, like in the frontend (Z#23187301) (#4993) 2025-04-07 14:34:32 +02:00
Richard Schreiber
9447e5802d PDF-Editor: improve UI for page-size and background PDF (#4959)
* PDF-Editor: improve UI for page-size and background PDF

* Update src/pretix/control/templates/pretixcontrol/pdf/index.html

Co-authored-by: leiascyr <156191181+leiascyr@users.noreply.github.com>

* Update src/pretix/control/templates/pretixcontrol/pdf/index.html

Co-authored-by: leiascyr <156191181+leiascyr@users.noreply.github.com>

* Update label text

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

---------

Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: leiascyr <156191181+leiascyr@users.noreply.github.com>
2025-03-31 12:11:49 +02:00
Phin Wolkwitz
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
Raphael Michel
ff76fe38e3 Do not show ticket attachments as information is not reliable (refs #4945) 2025-03-26 15:57:27 +01:00
luelista
5375e22781 Add search and links to plugin settings (#4854)
* Show links to plugin views and settings in plugin list and in success message after activating a plugin
* Fix menu highlighting in payment provider settings
* Specify settings_links and navigation_links for built-in plugins
* Add link to payment plugins from payment settings
* Add client-side search and "View only active plugins" for plugins page
2025-03-24 15:04:35 +01:00
Raphael Michel
7652f48dc1 New consistent representation of date ranges with times (Z#23184657) 2025-03-18 14:40:38 +01:00
Raphael Michel
745929b625 Order email: Allow to attach default attachment (Z#23185463, #4903) (#4915) 2025-03-18 13:52:50 +01:00
Raphael Michel
0236911a88 Order search: Proper input validation with error feedback for advanced search (#4920) 2025-03-18 09:01:13 +01:00
Raphael Michel
f475781a89 Order email history: Record more information about attachments (Z#23185463) (#4914) 2025-03-18 08:58:54 +01:00
Raphael Michel
d0d17a1d0a Order: Use different icon for non-consuming check-in list (Z#23184645) (#4916) 2025-03-17 11:25:48 +01:00
Raphael Michel
0cca053d45 Address form: Add provinces for Italy 2025-03-17 10:36:29 +01:00
Renne Rocha
88bc144028 Add missing question mark to delete check-ins confirmation form (#4908)
It is a question, so it needs to end with a question mark.
2025-03-14 17:07:32 +01:00
Richard Schreiber
018569a0d6 [A11y] Remove all autofocus in control except login/auth and dashboard 2025-02-28 08:56:54 +01:00
Kian Cross
352d4e29f1 Allow ticket QR code colour to be configured (#4726)
* Allow ticket QR code colour to be configured

This commit introduces a feature enabling users to customise the QR
code colour in the ticket editor.

* Remove redundant argument from `Dict.get` call

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>

---------

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2025-02-24 17:28:59 +01:00
Kian Cross
7e8ef47537 Add delete button to voucher details page (#4815) 2025-02-10 11:32:24 +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