From c53fc8df4eb6bf101fa21674957b9ec92d3426d3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 10 Jun 2025 12:20:41 +0200 Subject: [PATCH] Developer docs: Remove some ancient history (#5224) --- doc/api/resources/carts.rst | 5 - doc/api/resources/checkin.rst | 8 -- doc/api/resources/checkinlists.rst | 4 - doc/api/resources/customers.rst | 6 -- doc/api/resources/events.rst | 23 ----- doc/api/resources/giftcards.rst | 5 - doc/api/resources/invoices.rst | 12 --- doc/api/resources/item_variations.rst | 4 - doc/api/resources/items.rst | 22 ----- doc/api/resources/orders.rst | 53 ----------- doc/api/resources/organizers.rst | 4 - doc/api/resources/quotas.rst | 5 - doc/api/resources/shredders.rst | 4 - doc/api/resources/subevents.rst | 13 --- doc/api/resources/taxrules.rst | 4 - doc/api/resources/teams.rst | 4 - doc/development/api/customview.rst | 7 -- doc/development/api/index.rst | 1 - doc/development/api/payment_2.0.rst | 129 -------------------------- src/pretix/base/payment.py | 5 - 20 files changed, 318 deletions(-) delete mode 100644 doc/development/api/payment_2.0.rst diff --git a/doc/api/resources/carts.rst b/doc/api/resources/carts.rst index cf270edca8..74afdc4565 100644 --- a/doc/api/resources/carts.rst +++ b/doc/api/resources/carts.rst @@ -48,11 +48,6 @@ seat objects The assigned se └ seat_guid string Identifier of the seat within the seating plan ===================================== ========================== ======================================================= -.. versionchanged:: 4.14 - - This ``is_bundled`` attribute has been added and the cart creation endpoints have been updated. - - Cart position endpoints ----------------------- diff --git a/doc/api/resources/checkin.rst b/doc/api/resources/checkin.rst index 7f6861da8c..16e36424d1 100644 --- a/doc/api/resources/checkin.rst +++ b/doc/api/resources/checkin.rst @@ -9,14 +9,6 @@ This page describes special APIs built for ticket scanning apps. For managing ch please also see :ref:`rest-checkinlists`. The check-in list API also contains endpoints to obtain statistics or log failed scans. -.. versionchanged:: 4.12 - - The endpoints listed on this page have been added. - -.. versionchanged:: 4.18 - - The ``source_type`` parameter has been added. - .. _`rest-checkin-redeem`: Checking a ticket in diff --git a/doc/api/resources/checkinlists.rst b/doc/api/resources/checkinlists.rst index 0db56047d6..6090772b58 100644 --- a/doc/api/resources/checkinlists.rst +++ b/doc/api/resources/checkinlists.rst @@ -40,10 +40,6 @@ ignore_in_statistics boolean If ``true``, ch consider_tickets_used boolean If ``true`` (default), tickets checked in on this list will be considered "used" by other functionality, i.e. when checking if they can still be canceled. ===================================== ========================== ======================================================= -.. versionchanged:: 4.12 - - The ``addon_match`` attribute has been added. - .. versionchanged:: 2023.9 The ``ignore_in_statistics`` and ``consider_tickets_used`` attributes have been added. diff --git a/doc/api/resources/customers.rst b/doc/api/resources/customers.rst index 06f4ebd168..8431129627 100644 --- a/doc/api/resources/customers.rst +++ b/doc/api/resources/customers.rst @@ -34,12 +34,6 @@ password string Can only be set not be included in any responses. ===================================== ========================== ======================================================= -.. versionadded:: 4.0 - -.. versionchanged:: 4.3 - - Passwords can now be set through the API during customer creation. - .. versionchanged:: 2024.3 The attribute ``phone`` has been added. diff --git a/doc/api/resources/events.rst b/doc/api/resources/events.rst index 1fbe079f57..5064377b6a 100644 --- a/doc/api/resources/events.rst +++ b/doc/api/resources/events.rst @@ -61,25 +61,6 @@ public_url string The public, cus Endpoints --------- -.. versionchanged:: 4.0 - - The ``clone_from`` parameter has been added to the event creation endpoint. - -.. versionchanged:: 4.1 - - The ``with_availability_for`` parameter has been added. - - The ``search`` query parameter has been added to filter events by their slug, name, or location in any language. - -.. versionchanged:: 4.17 - - The ``public_url`` field has been added. - -.. versionchanged:: 5.0 - - The ``date_from_before``, ``date_from_after``, ``date_to_before``, and ``date_to_after`` query parameters have been - added. - .. http:get:: /api/v1/organizers/(organizer)/events/ Returns a list of all events within a given organizer the authenticated user/token has access to. @@ -630,10 +611,6 @@ organizer level. :statuscode 401: Authentication failure :statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource. - .. versionchanged:: 4.18 - - The ``readonly`` flag has been added. - .. http:patch:: /api/v1/organizers/(organizer)/events/(event)/settings/ Updates event settings. Note that ``PUT`` is not allowed here, only ``PATCH``. diff --git a/doc/api/resources/giftcards.rst b/doc/api/resources/giftcards.rst index d7ebb62481..1e43611137 100644 --- a/doc/api/resources/giftcards.rst +++ b/doc/api/resources/giftcards.rst @@ -47,11 +47,6 @@ acceptor string Organizer slug this field was added.) ===================================== ========================== ======================================================= -.. versionchanged:: 4.20 - - The ``owner_ticket`` and ``issuer`` attributes of the gift card and the ``info`` and ``acceptor`` attributes of the - gift card transaction resource have been added. - Endpoints --------- diff --git a/doc/api/resources/invoices.rst b/doc/api/resources/invoices.rst index a155405502..8e4aae6441 100644 --- a/doc/api/resources/invoices.rst +++ b/doc/api/resources/invoices.rst @@ -111,18 +111,6 @@ internal_reference string Customer's refe ===================================== ========================== ======================================================= -.. versionchanged:: 4.1 - - The attributes ``fee_type`` and ``fee_internal_type`` have been added. - -.. versionchanged:: 4.1 - - The attribute ``lines.event_location`` has been added. - -.. versionchanged:: 4.6 - - The attribute ``lines.subevent`` has been added. - .. versionchanged:: 2023.8 The ``event`` attribute has been added. The organizer-level endpoint has been added. diff --git a/doc/api/resources/item_variations.rst b/doc/api/resources/item_variations.rst index b687f4c064..83aba7daa2 100644 --- a/doc/api/resources/item_variations.rst +++ b/doc/api/resources/item_variations.rst @@ -64,10 +64,6 @@ hide_without_voucher boolean If ``true``, th meta_data object Values set for event-specific meta data parameters. ===================================== ========================== ======================================================= -.. versionchanged:: 4.16 - - The ``meta_data`` and ``checkin_attention`` attributes have been added. - .. versionchanged:: 2023.10 The ``free_price_suggestion`` attribute has been added. diff --git a/doc/api/resources/items.rst b/doc/api/resources/items.rst index 2214c54ba9..383da02d7d 100644 --- a/doc/api/resources/items.rst +++ b/doc/api/resources/items.rst @@ -211,28 +211,6 @@ bundles list of objects Definition of meta_data object Values set for event-specific meta data parameters. ======================================= ========================== ======================================================= -.. versionchanged:: 4.0 - - The attributes ``require_membership``, ``require_membership_types``, ``grant_membership_type``, ``grant_membership_duration_like_event``, - ``grant_membership_duration_days`` and ``grant_membership_duration_months`` have been added. - -.. versionchanged:: 4.4 - - The attributes ``require_membership_hidden`` attribute has been added. - -.. versionchanged:: 4.16 - - The ``variations[x].meta_data`` and ``variations[x].checkin_attention`` attributes have been added. - The ``personalized`` attribute has been added. - -.. versionchanged:: 4.17 - - The ``validity_*`` attributes have been added. - -.. versionchanged:: 4.18 - - The ``media_policy`` and ``media_type`` attributes have been added. - .. versionchanged:: 2023.10 The ``checkin_text`` and ``variations[x].checkin_text`` attributes have been added. diff --git a/doc/api/resources/orders.rst b/doc/api/resources/orders.rst index df5e00e6d8..52f200d442 100644 --- a/doc/api/resources/orders.rst +++ b/doc/api/resources/orders.rst @@ -114,34 +114,6 @@ plugin_data object Additional data ===================================== ========================== ======================================================= -.. versionchanged:: 4.0 - - The ``customer`` attribute has been added. - -.. versionchanged:: 4.1 - - The ``custom_followup_at`` attribute has been added. - -.. versionchanged:: 4.4 - - The ``item`` and ``variation`` query parameters have been added. - -.. versionchanged:: 4.6 - - The ``subevent`` query parameters has been added. - -.. versionchanged:: 4.8 - - The ``order.fees.id`` attribute has been added. - -.. versionchanged:: 4.15 - - The ``include`` query parameter has been added. - -.. versionchanged:: 4.16 - - The ``valid_if_pending`` attribute has been added. - .. versionchanged:: 2023.8 The ``event`` attribute has been added. The organizer-level endpoint has been added. @@ -260,10 +232,6 @@ pdf_data object Data object req plugin_data object Additional data added by plugins. ===================================== ========================== ======================================================= -.. versionchanged:: 4.16 - - The attributes ``blocked``, ``valid_from`` and ``valid_until`` have been added. - .. versionchanged:: 2024.9 The attribute ``print_logs`` has been added. @@ -756,10 +724,6 @@ Fetching individual orders Order ticket download --------------------- -.. versionchanged:: 4.10 - - The API now supports ticket downloads for pending orders if allowed by the event settings. - .. http:get:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/download/(output)/ Download tickets for an order, identified by its order code. Depending on the chosen output, the response might @@ -1832,10 +1796,6 @@ Fetching individual positions Order position ticket download ------------------------------ -.. versionchanged:: 4.10 - - The API now supports ticket downloads for pending orders if allowed by the event settings. - .. http:get:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/download/(output)/ Download tickets for one order position, identified by its internal ID. @@ -1888,15 +1848,6 @@ Order position ticket download Manipulating individual positions --------------------------------- -.. versionchanged:: 4.8 - - The ``PATCH`` method now supports changing items, variations, subevents, seats, prices, and tax rules. - The ``POST`` endpoint to add individual positions has been added. - -.. versionadded:: 4.16 - - The endpoints to manage blocks have been added. - .. versionchanged:: 2024.9 The API now supports logging ticket and badge prints. @@ -2226,10 +2177,6 @@ multiple changes to an order at once within one transaction. This makes it possi attendees in an order without running into conflicts. This interface also offers some possibilities not available otherwise, such as splitting an order or changing fees. -.. versionchanged:: 4.8 - - This endpoint has been added to the system. - .. http:post:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/change/ Performs a change operation on an order. You can supply the following fields: diff --git a/doc/api/resources/organizers.rst b/doc/api/resources/organizers.rst index e58652e1b8..eb3b28fe4a 100644 --- a/doc/api/resources/organizers.rst +++ b/doc/api/resources/organizers.rst @@ -25,10 +25,6 @@ public_url string The public, cus Endpoints --------- -.. versionchanged:: 4.17 - - The ``public_url`` field has been added. - .. http:get:: /api/v1/organizers/ Returns a list of all organizers the authenticated user/token has access to. diff --git a/doc/api/resources/quotas.rst b/doc/api/resources/quotas.rst index d409751cc5..8856af2d05 100644 --- a/doc/api/resources/quotas.rst +++ b/doc/api/resources/quotas.rst @@ -36,11 +36,6 @@ available_number integer Number of avail slightly out of date. ``null`` means unlimited. ===================================== ========================== ======================================================= -.. versionchanged:: 4.1 - - The ``with_availability`` query parameter has been added. - - Endpoints --------- diff --git a/doc/api/resources/shredders.rst b/doc/api/resources/shredders.rst index 005d117eeb..a4d3a4391e 100644 --- a/doc/api/resources/shredders.rst +++ b/doc/api/resources/shredders.rst @@ -6,10 +6,6 @@ Data shredders pretix and it's plugins include a number of data shredders that allow you to clear personal information from the system. This page shows you how to use these shredders through the API. -.. versionchanged:: 4.12 - - This feature has been added to the API. - .. warning:: Unlike the user interface, the API will not force you to download tax-relevant data before you delete it. diff --git a/doc/api/resources/subevents.rst b/doc/api/resources/subevents.rst index 768ad07f02..0a3f77a193 100644 --- a/doc/api/resources/subevents.rst +++ b/doc/api/resources/subevents.rst @@ -59,15 +59,6 @@ seat_category_mapping object An object mappi last_modified datetime Last modification of this object ===================================== ========================== ======================================================= -.. versionchanged:: 4.15 - - The ``search`` query parameter has been added to filter sub-events by their name or location in any language. - -.. versionchanged:: 5.0 - - The ``date_from_before``, ``date_from_after``, ``date_to_before``, and ``date_to_after`` query parameters have been - added. - .. versionchanged:: 2023.8.0 For the organizer-wide endpoint, the ``search`` query parameter has been modified to filter sub-events by their parent events slug too. @@ -75,10 +66,6 @@ last_modified datetime Last modificati Endpoints --------- -.. versionchanged:: 4.1 - - The ``with_availability_for`` parameter has been added. - .. http:get:: /api/v1/organizers/(organizer)/events/(event)/subevents/ Returns a list of all sub-events of an event. diff --git a/doc/api/resources/taxrules.rst b/doc/api/resources/taxrules.rst index feb68dbcb5..2947015f1b 100644 --- a/doc/api/resources/taxrules.rst +++ b/doc/api/resources/taxrules.rst @@ -40,10 +40,6 @@ custom_rules object Dynamic rules s ===================================== ========================== ======================================================= -.. versionchanged:: 4.6 - - The ``internal_name`` and ``keep_gross_if_rate_changes`` attributes have been added. - .. versionchanged:: 2023.6 The ``custom_rules`` attribute has been added. diff --git a/doc/api/resources/teams.rst b/doc/api/resources/teams.rst index f1aba2a5fa..baff8e493a 100644 --- a/doc/api/resources/teams.rst +++ b/doc/api/resources/teams.rst @@ -39,10 +39,6 @@ can_change_vouchers boolean can_checkin_orders boolean ===================================== ========================== ======================================================= -.. versionchanged:: 4.18 - - The ``can_manage_reusable_media`` permission has been added. - Team member resource -------------------- diff --git a/doc/development/api/customview.rst b/doc/development/api/customview.rst index 8b11f0c5c3..8c18dc9821 100644 --- a/doc/development/api/customview.rst +++ b/doc/development/api/customview.rst @@ -178,13 +178,6 @@ You can then implement a view as you would normally do. It will be automatically * Your plugin is enabled * The locale is set correctly -.. versionchanged:: 1.7 - - The ``event_url()`` wrapper has been added in 1.7 to replace the former ``@event_view`` decorator. The - ``event_url()`` wrapper is optional and using ``url()`` still works, but you will not be able to set the - ``require_live`` setting any more via the decorator. The ``@event_view`` decorator is now deprecated and - does nothing. - REST API viewsets ----------------- diff --git a/doc/development/api/index.rst b/doc/development/api/index.rst index 5ccf0596ad..eeb7ea445b 100644 --- a/doc/development/api/index.rst +++ b/doc/development/api/index.rst @@ -10,7 +10,6 @@ Contents: exporter ticketoutput payment - payment_2.0 email placeholder invoice diff --git a/doc/development/api/payment_2.0.rst b/doc/development/api/payment_2.0.rst deleted file mode 100644 index ab5fcc8820..0000000000 --- a/doc/development/api/payment_2.0.rst +++ /dev/null @@ -1,129 +0,0 @@ -.. highlight:: python - :linenothreshold: 5 - -.. _`payment2.0`: - -Porting a payment provider from pretix 1.x to pretix 2.x -======================================================== - -In pretix 2.x, we changed large parts of the payment provider API. This documentation details the changes we made -and shows you how you can make an existing pretix 1.x payment provider compatible with pretix 2.x - -Conceptual overview -------------------- - -In pretix 1.x, an order was always directly connected to a payment provider for the full life of an order. As long as -an order was unpaid, this could still be changed in some cases, but once an order was paid, no changes to the payment -provider were possible any more. Additionally, the internal state of orders allowed orders only to be fully paid or -not paid at all. This leads to a couple of consequences: - -* Payment-related functions (like "execute payment" or "do a refund") always operated on full orders. - -* Changing the total of an order was basically impossible once an order was paid, since there was no concept of - partial payments or partial refunds. - -* Payment provider plugins needed to take complicated steps to detect cases that require human intervention, like e.g. - - * An order has expired, no quota is left to revive it, but a payment has been received - - * A payment has been received for a canceled order - - * A payment has been received for an order that has already been paid with a different payment method - - * An external payment service notified us of a refund/dispute - - We noticed that we copied and repeated large portions of code in all our official payment provider plugins, just - to deal with some of these cases. - -* Sometimes, there is the need to mark an order as refunded within pretix, without automatically triggering a refund - with an external API. Every payment method needed to implement a user interface for this independently. - -* If a refund was not possible automatically, there was no way user to track which payments actually have been refunded - manually and which are still left to do. - -* When the payment with one payment provider failed and the user changed to a different payment provider, all - information about the first payment was lost from the order object and could only be retrieved from order log data, - which also made it hard to design a data shredder API to get rid of this data. - -In pretix 2.x, we introduced two new models, :py:class:`OrderPayment ` and -:py:class:`OrderRefund `. Each instance of these is connected to an order and -represents one single attempt to pay or refund a specific amount of money. Each one of these has an individual state, -can individually fail or succeed, and carries an amount variable that can differ from the order total. - -This has the following advantages: - -* The system can now detect orders that are over- or underpaid, independent of the payment providers in use. - -* Therefore, we can now allow partial payments, partial refunds, and changing paid orders, and automatically detect - the cases listed above and notify the user. - -Payment providers now interact with those payment and refund objects more than with orders. - -Your to-do list ---------------- - -Payment processing -"""""""""""""""""" - -* The method ``BasePaymentProvider.order_pending_render`` has been removed and replaced by a new - ``BasePaymentProvider.payment_pending_render(request, payment)`` method that is passed an ``OrderPayment`` - object instead of an ``Order``. - -* The method ``BasePaymentProvider.payment_form_render`` now receives a new ``total`` parameter. - -* The method ``BasePaymentProvider.payment_perform`` has been removed and replaced by a new method - ``BasePaymentProvider.execute_payment(request, payment)`` that is passed an ``OrderPayment`` - object instead of an ``Order``. - -* The function ``pretix.base.services.mark_order_paid`` has been removed, instead call ``payment.confirm()`` - on a pending ``OrderPayment`` object. If no further payments are required for this order, this will also - mark the order as paid automatically. Note that ``payment.confirm()`` can still throw a ``QuotaExceededException``, - however it will still mark the payment as complete (not the order!), so you should catch this exception and - inform the user, but not abort the transaction. - -* A new property ``BasePaymentProvider.abort_pending_allowed`` has been introduced. Only if set, the user will - be able to retry a payment or switch the payment method when the order currently has a payment object in - state ``"pending"``. This replaces ``BasePaymentProvider.order_can_retry``, which no longer exists. - -* The methods ``BasePaymentProvider.retry_prepare`` and ``BasePaymentProvider.order_prepare`` have both been - replaced by a new method ``BasePaymentProvider.payment_prepare(request, payment)`` that is passed an ``OrderPayment`` - object instead of an ``Order``. **Keep in mind that this payment object might have an amount property that - differs from the order total, if the order is already partially paid.** - -* The method ``BasePaymentProvider.order_paid_render`` has been removed. - -* The method ``BasePaymentProvider.order_control_render`` has been removed and replaced by a new method - ``BasePaymentProvider.payment_control_render(request, payment)`` that is passed an ``OrderPayment`` - object instead of an ``Order``. - -* There's no need to manually deal with excess payments or duplicate payments anymore, just setting the ``OrderPayment`` - methods to the correct state will do the job. - -Creating refunds -"""""""""""""""" - -* The methods ``BasePaymentProvider.order_control_refund_render`` and ``BasePaymentProvider.order_control_refund_perform`` - have been removed. - -* Two new boolean methods ``BasePaymentProvider.payment_refund_supported(payment)`` and ``BasePaymentProvider.payment_partial_refund_supported(payment)`` - have been introduced. They should be set to return ``True`` if and only if the payment API allows to *automatically* - transfer the money back to the customer. - -* A new method ``BasePaymentProvider.execute_refund(refund)`` has been introduced. This method is called using a - ``OrderRefund`` object in ``"created"`` state and is expected to transfer the money back and confirm success with - calling ``refund.done()``. This will only ever be called if either ``BasePaymentProvider.payment_refund_supported(payment)`` - or ``BasePaymentProvider.payment_partial_refund_supported(payment)`` return ``True``. - -Processing external refunds -""""""""""""""""""""""""""" - -* If e.g. a webhook API notifies you that a payment has been disputed or refunded with the external API, you are - expected to call ``OrderPayment.create_external_refund(self, amount, execution_date, info='{}')`` on this payment. - This will create and return an appropriate ``OrderRefund`` object and send out a notification. However, it will not - mark the order as refunded, but will ask the event organizer for a decision. - -Data shredders -"""""""""""""" - -* The method ``BasePaymentProvider.shred_payment_info`` is no longer passed an order, but instead **either** - an ``OrderPayment`` **or** an ``OrderRefund``. diff --git a/src/pretix/base/payment.py b/src/pretix/base/payment.py index 95f303dc81..b73fecd1a5 100644 --- a/src/pretix/base/payment.py +++ b/src/pretix/base/payment.py @@ -689,11 +689,6 @@ class BasePaymentProvider: the ``_restrict_countries`` and ``_restrict_to_sales_channels`` setting. :param total: The total value without the payment method fee, after taxes. - - .. versionchanged:: 1.17.0 - - The ``total`` parameter has been added. For backwards compatibility, this method is called again - without this parameter if it raises a ``TypeError`` on first try. """ timing = self._is_available_by_time(cart_id=get_or_create_cart_id(request)) pricing = True