Upgrade backend dependencies to ensure support and security
Closes #295 (closed)
Summary:
These changes collectively extend the end of life dates for our most critical dependencies well into 2026, since the Django 4.2 LTS will be supported until 01.04.2026, and Python 3.11 will reach EOL on 24.07.2027. Django 3.1 had already reached EOL, and 3.2 would be EOL in early 2024.
The key changes include upgrading to Django 4.2 LTS, updating the required Python version to 3.11, and a shift from djangorestframework-jwt
to djangorestframework-simplejwt
, since the former is unmaintained in favor of the latter. These changes are crucial for ensuring long-term support and security.
Key Changes:
The standout changes are as follows:
-
Migration to Django 4.2 LTS: I have updated our Django version to the latest 4.2 LTS release. Along with this, I've upgraded a number of sub-dependencies, perhaps most notably psycopg, which is now at version 3.
-
Python Version Update to 3.11: The project now requires Python 3.11 to run and develop. The CI environments have been changed to support this.
-
Replacement of
djangorestframework-jwt
withdjangorestframework-simplejwt
: Considering thatdjangorestframework-jwt
is no longer maintained, we have shifted todjangorestframework-simplejwt
. This change was somewhat involved, requiring a small modification to the frontend as well, since we've now moved to a more standard token-pair architecture for our JWTs.
Apart from these key changes, this branch also includes:
- Refactoring from
drf-yasg
todrf-spectacular
for API schema generation, providing OAI 3.0 schemas. - Various dependency updates and refactoring for compatibility with the new Django and Python versions.