Improve product list UI (allow move between categories, more useful columns and links)
and hide "move up/down" arrows in lists by default if drag-drop is available
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>
* 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>
* Introduce locking to prevent duplicate invoices
This is not a perfect solution as it does not handle all code paths to
create invoices, but it handles all that seem likely to be triggered
concurrently
* Review note
* Generalize import process from orders to more models
* Add voucher import
* Model import: Guess assignments of based on column headers
* Fix lock_seats being pointless
* Update docs
* Update doc/development/api/import.rst
Co-authored-by: Richard Schreiber <schreiber@rami.io>
* Update src/pretix/base/modelimport_vouchers.py
Co-authored-by: Richard Schreiber <schreiber@rami.io>
---------
Co-authored-by: Richard Schreiber <schreiber@rami.io>
* Memberships: Prefer valid_from over event date for .is_valid()
* Fix tests
* Add parameter description
* Use reasonable default for requested_valid_from if membership starts in the future
* Set datetimepicker viewDate to closest allowed date
* Keep current value on going back to QuestionsStep
* Fix min_date/max_date in SplitDateTimePickerWidget
* Remove unused import
* Update src/pretix/base/models/memberships.py
Co-authored-by: Mira <weller@rami.io>
* Respect variations
---------
Co-authored-by: Mira Weller <weller@rami.io>
* Treat partially paid expired orders as overpaid orders (Z#23147757)
* Use is_overpaid from annotate_overpayments in OrderFilterForm
* Revert change to pending sum
* Show warning on order page
---------
Co-authored-by: Mira Weller <weller@rami.io>
* Don't double file extension in clean_filename
* Don't use display_name as ClearableBasenameFileInput.FakeFile.name
Reason: it's used as the thumbnail source and therefore needs to be a valid file name and not some display name