Upgrading¶
Your django-helpdesk installation can be upgraded to the latest version using the release notes below.
Prerequisites¶
Please consult the Installation instructions for general instructions and tips. The tips below are based on modifications of the original installation instructions.
Public ticket listing API dates now use ISO 8601¶
This is a breaking change for consumers of PublicTicketListingSerializer.
The created and due_date fields now return ISO 8601 timestamps, such as
2026-09-24T12:00:00Z, instead of translated relative strings such as
2 days ago. An unset due_date returns JSON null.
If you consume this API, you will need to parse the ISO 8601 and render
human-readable dates in the user’s language and timezone yourself,
using e.g. Intl.RelativeTimeFormat.
Form rendering no longer needs django-bootstrap4-form¶
django-bootstrap4-form has been removed. It emitted Bootstrap 3 markup
(form-group, control-label, has-error, <div class="checkbox">),
none of which exists in the Bootstrap 5 stylesheet this project ships, so the
affected fields had lost their spacing and their checkboxes and radios were
unstyled. Forms are now rendered by a template inside django-helpdesk itself.
Remove 'bootstrap4form' from your INSTALLED_APPS. Nothing else is
required, and the package can be uninstalled unless something else in your
project uses it.
If you have overridden user_settings.html, edit_ticket.html or
public_create_ticket_base.html, replace {{ form|bootstrap4form }} with:
{% load bootstrap5_form %}
{% bootstrap5_form form %}
Optional integrations are no longer installed by default¶
Two packages used to be installed with every copy of django-helpdesk even though the project itself never imports them, and neither is needed for a default install. They are now optional extras:
Feature |
Install with |
Needed if you |
|---|---|---|
Celery mail polling |
|
schedule |
Akismet spam check |
|
set |
If you would rather not work out which apply to you, pip install
django-helpdesk[all] restores exactly what earlier releases pulled in.
The Celery extra also brings django-celery-beat, which that setup has always
required but which was never declared.
Neither of these breaks a running site on its own. helpdesk/urls.py already
imports helpdesk.tasks inside a try/except ImportError, and
text_is_spam() already treated a missing Akismet package as “not spam”, so
an upgrade without the extras means the scheduled task is not registered and
submissions stop being spam checked, rather than anything raising.
django-cleanup is deliberately not on this list. It activates as soon as it
is listed in INSTALLED_APPS, which is what our own installation
instructions suggest, so making it optional would stop a documented
configuration from starting at all. It stays a hard dependency.
0.2 -> 0.3¶
Under
INSTALLED_APPS,bootstrapformneeds to be replaced withbootstrap4formUnless turning off
pinax_teams, add the following toINSTALLED_APPSforpinax_teams:"account", "pinax.invitations", "pinax.teams", "reversion",
If using
send_templated_mail, then it now needs to be imported fromhelpdesk.templated_email