Unreleased
v3.2.0
Prelude
This release is another smaller release that focuses on bumping the supported dependencies and updates the test matrix in advance of future, larger changes. As always, recent versions of Python (3.12, 3.13) and Django (5.0, 5.1) are now supported, while support for older Python (3.7, 3.8) and Django (3.2, 4.0, 4.1) versions has been removed. More information is included below.
New Features
The version of Django used is now checked on start-up. This can help avoid issues where deployers forget to update their Django version and see odd behavior as a result.
Django 4.2 is now supported.
Django 5.0 is now supported.
Django 5.1 is now supported.
The sample
pwclientrcfiles found at/project/<project>/pwclientrcwill now use therestbackend by default if the REST API is enabled. In addition, it is now possible to download a samplepwclientrcfile even if the XML-RPC API backend is disabled.
Python 3.12 is now supported.
Python 3.13 is now supported.
Upgrade Notes
Django 4.0 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.
Django 3.2 and 4.1 are no longer supported. Bother releases are no longer supported upstream and most distributions provide a newer version.
Python 3.8 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.
Python 3.7 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.
Bug Fixes
Message IDs containing slashes will now have these slashes percent-encoded. Previously, attempts to access submissions whose Message IDs contained slashes would result in a HTTP 404 on some Django versions. If you wish to access such a submission, you must now percent-encode the slashes first. For example, to access a patch, cover letter or comment with the following message ID:
You should now use:
Both the web UI and REST API have been updated to generate URLs in this format so this should only be noticable to users manually generating such URLs.
Fix an issue whereby comment-based events would cause a HTTP 500 error for the events API (
/api/events).
v3.1.0
Prelude
This release is one of the smaller releases. The primary new feature is the ability to mark comments as addressed/unaddressed, allowing maintainers to track work items. In addition, two new events have been added to the /events API: cover-comment-created and patch-comment-created. Recent versions of Python (3.10) and Django (3.2, 4.0) are now supported, while support for older Python (3.6) and Django (2.2, 3.0, 3.1) versions has been removed. More information on all the above is included below.
New Features
Patch comments and cover letter comments can be marked ‘addressed’ or ‘unaddressed’ to reflect whether the comment has been addressed by the patch and cover letter submitter or a reviewer. The current state of a comment is shown in the header when showing a comment and users with edit permission can toggle the state using an adjacent button.
Two new event types have been added:
cover-comment-createdandpatch-comment-created. As their names would suggest, these track the creation of new cover letter and patch comments respectively.
Django 3.2 is now supported.
Django 4.0 is now supported.
The
Linkheader included in REST API responses now includesfirstandlastrelations, as described in RFC 5988. As their name would suggest, these can be used to navigate to the beginning and end of the resource.
Python 3.10 is now supported.
Upgrade Notes
Django 3.0 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.
Django 3.1 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.
Python 3.6 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.
Django 2.2 is no longer supported. Is is no longer supported upstream and most distributions provide a newer version.
Database configuration has been added to
patchwork.settings.base. Previously, this had to be specified in thesettings.pyfile manually created by admins. The following environment variables can now be used to configure the settings:DATABASE_TYPE(one of:postgres,sqlite3,mysql; default:mysql)DATABASE_HOST(default:localhost)DATABASE_PORT(default:<unset>)DATABASE_NAME(default:patchwork)DATABASE_USER(default:patchwork)DATABASE_PASSWORD(default:patchwork)
If you are manually defining
DATABASESin yoursettings.pyfile, this should have no impact. However, you may wish to rework your deployment to use environment variables instead.
Database configuration variables
PW_TEST_DB_*are renamed to their correspondingDATABASE_*names to sync development & production environments setup. Some mistaken references toDATABASE_PASSare also replaced withDATABASE_PASSWORDto follow the convention.
Bug Fixes
Fixed a compatability issue with Django 3.1 that prevented users from resetting their password. (#394)
Comments and whitespace are now correctly stripped from the
Message-ID,In-Reply-To, andReferencesheaders. One side effect of this change is that the parser is now stricter with regards to the format of themsg-idcomponent of these headers: all identifiers must now be surrounded by angle brackets, e.g.<abcdef@example.com>. This is mandated in the spec and a review of mailing lists archives suggest it is broadly adhered to. Without these markers, there is no way to delimitmsg-idfrom any surrounding comments and whitespace.
API Changes
The API version has been updated to v1.3.
A new REST API endpoint is available at
/api/covers/<cover_id>/comments/<comment_id>/. This can be used to retrieve and update (e.g.addressedstate) details about a specific cover comment.
A new REST API endpoint is available at
/api/patches/<patch_id>/comments/<comment_id>/. This can be used to retrieve and update (e.g.addressedstate) details about a specific patch comment.
The
list_archive_urlfield will now be correctly shown for patch comments and cover letter comments. (#391)