Skip to main content

Single position expiration

This is a plugin for pretix.

Allows single position to expire rather than the entire order

This plugin was made to solve the following scenario:

  • Person $A$ places an order with item $I$, fully pays it. The order is in paid status

  • The quota for $I$ becomes full, nobody can buy new $I$

  • $A$ changes his order and adds a new item, HOWEVER he doesn’t pay the new cost, leaving the order in a pending status

  • $A$’s order eventually expires (we have “Automatically expire unpaid orders” checked), so $I$ becomes again available

  • Person $B$ arrives and buys $I$, quota is again full

  • Now, even if $A$ finally pays for the extra item he recently added, he lost his right on $I$ even if he already paid for it.

Pretix team said (https://github.com/pretix/pretix/discussions/6130) that they’re not planning on properly implementing a solution for this usecase inside the main branch, so I made a simple plugin which:

  • Every time an order becomes paid, marks each position as paid as well (it also saves the datetime of when this happens)

  • When an order becomes expired:
    • If no position was marked as paid, it lets the order properly expire

    • Otherwise, it cancels every position which was NOT marked as paid, letting the order come back in the paid status

Development setup

  1. Make sure that you have a working pretix development setup.

  2. Clone this repository.

  3. Activate the virtual environment you use for pretix development.

  4. Execute python setup.py develop within this directory to register this application with pretix’s plugin registry.

  5. Execute make within this directory to compile translations.

  6. Restart your local pretix server. You can now use the plugin from this repository for your events by enabling it in the ‘plugins’ tab in the settings.

This plugin has CI set up to enforce a few code style rules. To check locally, you need these packages installed:

pip install flake8 isort black

To check your plugin for rule violations, run:

black --check .
isort -c .
flake8 .

You can auto-fix some of these issues by running:

isort .
black .

To automatically check for these issues before you commit, you can run .install-hooks.

License

Copyright 2026 Furizon team

Released under the terms of the Apache License 2.0

Metadata

Release files for pretix-single-position-expiration 1.0.20260705.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pretix-single-position-expiration 1.0.20260705.1
File Size Uploaded
pretix_single_position_expiration-1.0.20260705.1.tar.gz 8.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pretix-single-position-expiration 1.0.20260705.1
File Interpreter ABI Platform
pretix_single_position_expiration-1.0.20260705.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.4 kB

Release files / pretix_single_position_expiration-1.0.20260705.1.tar.gz

Download URL pretix_single_position_expiration-1.0.20260705.1.tar.gz
Size 8.7 kB
Tags Source
SHA-256 checksum
How to use checksums
752e1f1779bacb2b73061b3fa9453d3c2971a85d48d19698c4d2da5982c29c93
BLAKE2b-256 checksum
How to use checksums
3833f029e7fd0e81e914ed3a1191b192897037b84657576d8ccdee6efe27c07b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.4

Release files / pretix_single_position_expiration-1.0.20260705.1-py3-none-any.whl

Download URL pretix_single_position_expiration-1.0.20260705.1-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
480b7960abbcccf821fffdbe3ebf0cceeb453e6b68dbb6a28a6d737b70cffda5
BLAKE2b-256 checksum
How to use checksums
2cdc02fb07458d826c6f3871fb08ba4c4bc84cd88b1f8df4922242b7b495316c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.4

Release history Release notifications | RSS feed

This release

1.0.20260705.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page