All of our API endpoints that do something in the system do at least two
SQL queries, one for the actual change and one for the log entry. Often
many more. We want all of this to happen in a transaction so we know an
API call was executed or not at all, not half-way.
* Data model draft
* Refactor query and assignment usages of old permissions
* Backend UI
* API serializer
* Big string replace
* Docs, tests and fixes for teams api
* Update docs for device auth
* Eliminate old names
* Make tests pass
* Use new permissions, remove inconsistencies
* Add test for translations
* Show plugin permissions
* Add permission for seating plans
* Fix plugin activation
* Fix failing test
* Refactor to permission groups
* Update doc/api/resources/devices.rst
Co-authored-by: luelista <weller@rami.io>
* Update doc/api/resources/events.rst
Co-authored-by: luelista <weller@rami.io>
* Update src/pretix/api/serializers/organizer.py
Co-authored-by: luelista <weller@rami.io>
* Fix typo
* Fix python version compat
* Replacement after rebase
* Add proper permission handling for exports
* Docs for exporters
* Runtime linting of permission names
* Fix typos
* Show export page even without orders permission
* More legacy compat
* Do not strongly validate before plugins are loaded
* Rebase migration
* Add permission for outgoing mails
* Review notes
* Update doc/api/resources/teams.rst
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* Clean up logic around exporters
* Review and failures
* Fix migration leading to forbidden combination
* Handle permissions on event copying
* Remove print-statements
* Make test clearer
* Review feedback
* Add AnyPermissionOf
* migration safety
---------
Co-authored-by: luelista <weller@rami.io>
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
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>
* Add the option to introduce rich-text placeholders
* Add tests in test_format
* Add some css
* Block vs inline
* Some fixed css
* Update src/pretix/control/forms/event.py
Co-authored-by: Mira <weller@rami.io>
* Add missing docstring prat
---------
Co-authored-by: Mira <weller@rami.io>
* remove duplicate context generation
* allow text templates in frontpage_text
* refactor: move placeholder functionality to separate file
* fix wrong class name, code style
* update year in license header
* undo license header update
* use new function name
* render only the placeholders that are actually used in the message
* refactoring
* add str(...) call
* Update doc/development/api/placeholder.rst
Co-authored-by: Raphael Michel <michel@rami.io>
* rename register_mail_placeholders to register_template_placeholders
(deprecate old name)
* isort
* add signals to docs
---------
Co-authored-by: Raphael Michel <michel@rami.io>
To create automated mail rules for specific subevents only, this adds a selection widget to choose which, only appearing if there are any subevents to select.