Release 3.14.0 of pretix

Dec. 22, 2020

Today, we are releasing pretix 3.14.0. This release adds an order-level telephone field, a setting to control date and time formatting, as well as fixes of lots of bugs and smaller features throughout the system.

Big thanks go to albert, Felix Rindt, Maarten van den Berg, Ondřej Sokol, pajowu, and Svyatoslav, who contributed to this release. ❤️

pretix 3.14.0 is now available for installation via pip. The new docker images will appear on Docker Hub over the next few hours. All customers of pretix Hosted are already using the new version and do not need to take any action.

Update: We're releasing pretix 3.14.1 shortly after due to a regression when de-informal is set as the systems default locale.

Phone number field

For the past three years, Felix Rindt maintained the plugin pretix-telephone which allows to add a telephone number field to the contact information of an order. Used for over 1,000 on pretix Hosted alone, this has likely been one of the most-used plugins from our ecosystem.

Starting in pretix 3.14, the functionality of this plugin is contained in pretix itself. The main reason is that this allows us to use the data provided by this plugin in more situations, for example in some future plugins that rely on phone numbers being available. Right now, the main benefit to you is that the phone numer is now contained in all relevant data export formats as well. Additionally, phone numbers will now be checked for validity and will be formatted consistently, like pretix already does for product-level questions of type phone number.

If you used the plugin before, you can just upgrade to pretix 3.14 and uninstall the plugin, pretix will automatically migrate the configuration and data to the new format.

Region setting

pretix 3.14 introduces a new "region" setting that can be set either for the installation as a whole, for an organizer account, or for individual events. Whenever your audience has a geographical focus, it makes sense to set this setting to the main country to give pretix more information on how to localize various things. The region setting will be used more in the future, but for now it does the following things:

  • It will be used as the default country in address forms for your customers. For example, if the event region is Austria, the default country in all address forms will be Austria.

  • The same way, it will be used to determine the default country calling code. For example, if the event region is Austria, the default calling code in all phone number fields will be +43.

  • It will determine the date and time formatting for some languages (currently English, more are coming). For example, if the event region is USA and the language is English, time will be formatted as 2:25 p.m., while if the region is Ireland and the language is English, time will be formatted as 14:25. For languages that have a consistent handling of dates across the countries in which they are spoken (such as German), the format of the language takes priority.

Question validation

Using pretix's question system, you ask your customers for arbitrary information during checkout. For questions that ask for a date or a number, you can now specify a minimum and a maximum value that may be entered. For example, if you're asking customers for their age, you can now specify that values younger than 18 may not be entered.

Smaller changes and bugfixes

Ticket shop and widget

  • An edge case with country-specific tax rates has been fixed that could cause wrong calculation of tax amounts.

  • A new configurable text can be shown above the ticket-specific questions to explain why the data is required.

  • The front page text is now shown above the date selection in event series.

  • For an event with no products, the widget now shows availability consistently with the standalone ticket shop.

  • Product picture thumbnails now respect the EXIF orientation of the source image.

  • A setting has been added to hide the "payment pending" state from end users.

  • A session cookie is no longer created at the first visit of the ticket shop.

  • Caching and performance of the shop front page has been improved slightly.

  • An issue with ad blockers has been fixed.

  • Accessing widget CSS files of disabled shops is now possible.

  • A bug in self-service cancellation has been fixed when the cancellation fee is set to zero.

Ticketing backend and configuration

  • Events can now be limited to specific sales channels entirely.

  • The settings dialog to configure data collection from orders and attendees has been improved for better usability.

  • Tax rule settings now allow to put a specific text per country or customer type on the invoice.

  • A new name format for suffix titles has been added.

  • A logic bug has been fixed in the advanced order search.

  • Editing of tax rules has been improved (reordering of lines now possible, faster page load times).

  • The "tax list" excel export contains two new sheets with sums by country and business customer, making VAT reporting easier.

  • The list of orders can now be filtered for partially paid orders.

  • The list of orders now shows an icon representing the sales channel of the order.

  • The list of orders now shows the paid amount of an order.

  • The history view of an order now shows emails sent to individual attendees.

  • The waiting list can now be downloaded through the export system.

  • A bug in the preview of event series repetition rules has been fixed.

  • The order data export now contains the custom invoice address field.

  • All attendee and invoice address components are now available in PDF layouts.

  • The detail view of an order now shows the sum of payments and refunds as well as the amount still open (only shown if the order isn't fully paid).

  • Bank transfer plugin: If an imported bank statement line contains multiple order code and the payment amount exactly matches the sum of the open amounts of all orders, the line is now automatically split and all order codes are being marked as paid.

  • When testing connection to a custom SMTP server, a timeout of 10 seconds is now enforced.

  • Voucher URLs in non-series events now look cleaner.

  • Behavior of nested tabs on configuration pages has been improved.

  • As an alternative to OpenCage, MapQuest can now be used for geo-coding addresses in the backend.

  • Sorting a check-in list by series date now returns consistent results if multiple dates start simultaneously.

Runtime and server environment

  • "Shop not available" error pages no longer cause an exception to be logged.

  • The docker build now recognizes a MAX_WORKERS environment variable to control the number of gunicorn web server worker processes to be spawn.

  • The docker build's nginx configuration has been tuned further for higher load.

  • Fixed "payment term kept on weekdays" wrongfully being required.

  • A new config option csp_additional_header may be used to modify the global CSP header set by pretix.

Updates to official plugins and tools

  • The Resellers plugin has been released in version 1.9.0 to add support for event restrictions to sales channels.

  • The Seating plugin has been released in version 1.6.1 to to fix some minor bugs.

  • The ZUGFeRD plugin has been released in version 1.0.4 to fix some minor bugs.

Plugin API changes

  • Plugins can now use features from django.contrib.postgres if they're only intended to work on PostgreSQL installations.

REST API changes

  • Bank transfer plugin: The upload endpoint now returns a 409 error code if an import job is currently being processed to prevent duplicate data imports.

  • The order resource now contains a phone field.

  • An endpoint to access organizer settings is now available.

  • An endpoint to access gift card transactions has been added.

  • The cart position API now allows to set a custom cart ID, which is required to buy multiple seats in an event with a minimum spacing requirement.

  • The option send_email is now always spelled send_email instead of send_mail across API methods.

  • The option send_email is now supported when creating new payments.

  • The auto event selection for check-in devices no longer suggests events the device has no access to.

  • A missing URL has been allowed in the pretixPOS device security profile.

Raphael Michel

Raphael is the founder and main developer of pretix. He is passionate about user-friendly, elegant software, and when he's not busy building software for conference organizers, he enjoys co-organizing con­fer­en­ces himself.

Read more blog posts