* Update pretix logo to new version
* Make favicon transparent
* Update src/pretix/static/pretixcontrol/scss/main.scss
Co-authored-by: Richard Schreiber <schreiber@rami.io>
* Update src/pretix/static/pretixcontrol/scss/main.scss
Co-authored-by: Richard Schreiber <schreiber@rami.io>
---------
Co-authored-by: Richard Schreiber <schreiber@rami.io>
Move generation of QR code contents out of the HTML template and into Python code, so it can
be reused in plugins and tested with unit tests. Add the SPAYD QR code format which is used in
Czech Republic and Slovakia [1]. Display BezahlCode QR codes only for German IBANs.
[1] https://en.wikipedia.org/wiki/Short_Payment_Descriptor
* Bank transfer: Allow dashes in event slug to be missing (Z#23216859)
* Update src/pretix/plugins/banktransfer/tasks.py
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* Update src/pretix/plugins/banktransfer/tasks.py
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* Apply suggestions from code review
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
---------
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* Add support for 'Pay by bank (UK)' payment method via Stripe
* Add 'Pay by bank' payment provider to Stripe integration
* Enhance Stripe integration: Allow UK bank payments and update imports
* Remove UK-specific payment method options from StripePayByBank integration
* Remove some UK references
---------
Co-authored-by: Raphael Michel <michel@rami.io>
* replace manual form with QuestionFilterForm
* move form to form/item.py
* filter using a dateFrameField
* rename QuestionFilterForm to QuestionAnswerFilterForm
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* pass existing `opqs` into `filter_qs`
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* clean up filters
* fix view errors
* add labels
* display validation failures on field/label
* fix linting issues
* adjust datetime comparisons from lte to lt & gte to gt
* Change filter-form layout similar to order-filter-form
* improve label texts
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* use order constants
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* use Order Constants in Form where possible
* Change phrasing from Subevent to Date
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* include product variations in products filter
* repair time zone comparisons
* fix linting
* move filter form to form/filter.py
* remove references to timezone.utc
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* remove manual class statements
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* removes unnecessary check
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* fix datetime comparison
* Add full stop to error message to match style
* unify var-names and code-indent
---------
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
* OrderChangeManager: Add support for custom operations
* OrderChangeManager: Add callback to AddPosition operation
This is also meant as a way to fix#5548
* Refs #5557: Checkstyle fix
* Refs #5557: Added tests
* Refs #5557: Changes requested in the PR review
* Refs #5557: Fix error in previous merge conflict
* Refs #5557: PR review
* Add more log entry types to the org-level logs page
all_logentries() limits the QuerySet to LogEntrys whose content object
is an Organizer.
This change expands that to get any LogEntry linked to the current
Organization. It removes those that are linked directly to an Event,
since they are already served by the event-level logs page.
* Check active plugins with either Event or Organizer
* Add option to restrict anonymous access to order URLs
By default, users who place orders while logged in can still access
their order URLs without authentication. This raises potential
security risks, particularly if order confirmation emails are
forwarded.
This commit introduces an organiser-level setting to disable anonymous
access for such orders. When enabled, unauthenticated attempts to access
URLs starting with `/order/`, which are intended for the customer, are
redirected to the login page. Upon successful authentication, the user
is redirected back to the original order URL.
It is important to note that this change does not impact routes intended
for attendees (e.g., `/ticket/*`), which remain accessible without
authentication.
* Change name of setting for future clarity
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
* Update message wording
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
* Eliminate database query
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
* Rename feature flag to fix breaking tests
* Refactor order access verification code into `OrderDetailsMixin`
* Add test for logged-in customer accessing another customer's order
* Refactor order access conditions to remove nesting
* Handle case where customer is not yet verified
* Add additional information to help message
* Fix multidomain issue
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
* Merge order/position variants into single tests
* Add docstring explaining return type of `order` property
* Apply suggestion from @raphaelm
* Fix indentation
---------
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
Co-authored-by: Raphael Michel <michel@rami.io>
The 'placed orders by product' graph already includes orders that are pending,
expired, or fully cancelled without a fee. However, items cancelled with a fee
were omitted. This change ensures all placed orders are included in the graph,
including those cancelled with a fee.
Updates the help text for the revenue-over-time graph to clarify how fees are
treated. When viewing a subevent, revenue excludes all fees (including
cancellation fees). When viewing the full event, revenue includes all fees,
including cancellation fees from cancelled orders.
* Bank transfer: Do not show reference before it is as complete as possible (fixes#5296)
* Update src/pretix/plugins/banktransfer/payment.py
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
* Apply suggestion from @raphaelm
---------
Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
The 'paid orders' time series on the statistics page currently counts orders
that were paid and later cancelled.
Filter the paid-by-day queryset to `Order.STATUS_PAID` with at least one
non-cancelled position, leaving the placed orders series unchanged, and update
the help text to clarify this behaviour.
Discussion: https://github.com/pretix/pretix/discussions/5774
* Allow to combine language variant with region (fixes#3947, Z#23220951)
This only affects babel-based formatting (currently: currencies and phone numbers),
**not** Django-based formatting (currently: date and time formats).
* Remove tests where I don'T actually know whats right
* Fix lookup order
* Localize state names in js-helper
* localize statename in address-confirm
* add localized state_name to AbstractPosition and AttendeeProfile
* use state_for_address in order export
* baseline of 574 queries
* reuse event from wle for locked_wle
reduces amount of queries to 556
* keep event accross refresh from db
drops queries from 556 to 471, halving the amount of queries for direct fetches for the event
* make numbers of queries reproducible by prewarming ContentTypeCache
* fix oversight
* correct number of queries to 335
* remove debug tooling
* remove assert_num_queries
This error message mostly occurs when working in admin mode and this
change allows our support team to still see what the form looks like to
guide users through, even if they can't save.
* Invoices: Allow issuing invoices only to businesses
In situations where every invoice has a significant accounting cost and
consumers usually do not need invoices, this can save a lot of money or
effort.
* Improve backend UI if not qualified for invoice
* Send security notification when recovery code is used or created by admin
"Where to store recovery codes" is one of these problems there is no
right answer to, so many people store them in a less-than-optimal place.
If that's the reality we live in, this PR adds at least a little
security so one notices when they get used :)
* Add sentence
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
passt