aboutsummaryrefslogtreecommitdiff
Commit message (Expand)AuthorAge
* forms: Use a captcha on the registration form.•••This should help avoid spam registration requests. add-captchaChristopher Baines2021-02-27
* templates: Use form.as_table in registration template.•••This should make changes to the registration form easier. I'm particularly thinking about adding in the Django simple math captcha. Christopher Baines2021-02-27
* lib: Correct PatchComment table•••The table is 'patchwork_comment', not 'patchwork_patchcomment'. Correct this. Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #396 Fixes: 7b967db4 ("lib: Update DB permissions to reflect model changes") Stephen Finucane2021-02-24
* api: do not fetch every patch in a patch detail view 404 (v2)•••Commit 08c5856 fixed an issue whereby a 404 on the aforementioned URL could result in a large DB query due to DRF attempting to populate the 'related' list box with all patches on the instance. That was accidentally reverted in commit fe07f30. "Unrevert" this change. Signed-off-by: Stephen Finucane <stephen@that.guru> Fixes: fe07f30 ("Remove 'PatchRelationSerializer'") Closes: #397 Stephen Finucane2021-02-24
* docs: Refresh the guide for Ubuntu 20.04•••Nothing changes wrt package names, which is nice. We take the opportunity to clarify some wording, however. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2021-02-20
* docs: Update docs to point to v3.0.0 release•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2021-02-20
* docs: Random Python 3 updates•••Correct some documentation examples and other things to reflect the new, Python 3-only world. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2021-02-20
* docs: Note UTF-8 requirements for databases•••MySQL 5.3 defaulted to 'latin1' encoding, meaning users would need to explicitly configure their databases to use 'utf8'. Call this out. Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #393 Stephen Finucane2021-02-20
* Add release note for #391•••Forgot to include this. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2021-02-20
* models: Use parent model to get comment's 'list_archive_url'•••We were attempting to retrieve the 'list_archive_url' attribute from the 'PatchComment' or 'CoverComment' instances, rather than the parent 'Patch' and 'Cover' object, respectively. Correct this and add plenty of tests to prevent this regressing. Signed-off-by: Stephen Finucane <stephen@that.guru> Fixes: 02ffb1315 ("models: Add list archive lookup") Closes: #391 Stephen Finucane2021-02-20
* urls: Convert to flask-style URL patterns•••These are easier to grok that the old regex based paths, though three of these are retained as an alternative to creating custom path converters [1]. [1] https://docs.djangoproject.com/en/3.0/topics/http/urls/#registering-custom-path-converters Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2021-02-20
* tests: Trivial formatting fixes•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2021-02-20
* urls: Support sha256-based tokens•••Django 3.1 changed the default hashing algorithm used for things like password reset tokens from SHA-1 to SHA-256. As noted in the release notes [1], this is configurable via the 'DEFAULT_HASHING_ALGORITHM' transitional setting, but that's only intended to allow upgrades of multiple instances in a HA deployment and shouldn't be used post upgrade. Instead, we need to fix our URLs to support the longer tokens generated by SHA-256. Long term, we want to replace these regex-based routes with the simpler flask-style template string routes. That's not really backportable so we'll do that separately. [1] https://docs.djangoproject.com/en/3.1/releases/3.1/#default-hashing-algorithm-settings Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #394 Stephen Finucane2021-02-20
* tests: Fix compatibility with openapi_core 0.13.7•••It seems the 'openapi_core.schema.schemas.models.Format' mechanism of defining custom formatters was deprecated in openapi_core 0.12.0 but we never noticed. They've finally broken it in 0.13.7. Switch to the new thing, 'openapi_core.unmarshalling.schemas.formatters.Formatter', which expects a slightly different format. Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #395 Stephen Finucane2021-02-20
* docs: Update reno for stable/3.0•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* Post-release version bump•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* Release 3.0.0•••Major version bump because of Python 2.7 removal and the unfortunately large DB migration. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* Add Python 3.9 support•••This has been out since October. Time to support it. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* requirements: Switch to openapi-core 0.13.4•••In commit b7f3c3d34 ("tests: Switch to openapi-core 0.13.x") we added support for 'openapi-core' 0.13.x. However, we needed to use a commit from master since an important fix [1] was not included in the latest release at the time, 0.13.3. 0.13.4 has since been released so let's move on and use that. [1] https://github.com/p1c2u/openapi-core/issues/226 Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* Re-enable django-dbbackup•••...and bump to 3.3.0, which does support Django 3.0 [1]. [1] https://github.com/django-dbbackup/django-dbbackup/issues/314#issuecomment-613608064 Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* requirements: Bump django-debug-toolbar to 3.2.x•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* Add release note for #379•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* REST: Null out previous, current relation info•••These fields don't work like we expect them to. Because we're linking to a non-idempotent entity, an instance of 'relation', what we're storing in either of these fields is subject to change as patches are added and removed. This makes the information pretty much useless after the fact. It's best to just state the patch and request that people query the information themselves if necessary. We don't want to remove the field entirely from the API - that would be a truly breaking change - so instead we null it out like we do for patch tags. In a v2 API (i.e. a major version bump) we can remove this entirely. A small bug with the schema generation is corrected. Signed-off-by: Stephen Finucane <stephen@that.guru> Related: #379 Stephen Finucane2020-12-13
* Remove 'PatchRelationSerializer'•••This wasn't writeable for reasons I haven't been able to figure out. However, it's not actually needed: the 'PatchSerializer' can do the job just fine, given enough information. This exposes a bug in DRF, which has been reported upstream [1]. While we wait for that fix, or some variant of it, to be merged, we must monkey patch the library. [1] https://github.com/encode/django-rest-framework/issues/7550 [2] https://github.com/encode/django-rest-framework/pull/7574 Signed-off-by: Stephen Finucane <stephen@that.guru> Reported-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de> Closes: #379 Cc: Daniel Axtens <dja@axtens.net> Cc: Rohit Sarkar <rohitsarkar5398@gmail.com> Stephen Finucane2020-12-13
* tests: Add tests for 'patch-relation-changed' events•••This event is rather odd. If you have two patches then the way a relation is created is by creating a 'PatchRelation' instance and then setting the 'related' attribute on the first patch followed by the second patch. Because the event uses the 'Patch' model's 'pre_save' signal, we'll only see events for the patch being currently saved. This means no event will be raised for the first patch and only one event, the one for the second patch, will be raised when the second patch is being added to the relationship. In hindsight, the structure of the event is off. We should have had something like a 'patch-added-to-relationship' and a 'patch-removed-from-relationship' event, both with the same fields: 'project', 'actor', 'patch' and 'related', the latter of which would have listed all of the _other_ patches in the relationship. Sadly, this is an API change which means we can't do it now. We may well wish to do so in the future though. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* tests: Rework 'create_relation' helper•••This wasn't actually creating just a patch relation object - it was also creating patches, which is something we already have an explicit helper for. Clean this thing up. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-12-13
* lib: Grant SELECT on auth_user•••If a mail arrives with the 'X-Patchwork-Delegate' hint header, the 'patchwork.parser' script will need to index the users table to find the appropriate user. This should be okay from a security perspective since passwords are hashed and salted and the rest of the information is mostly accessible publicly via the web UI and REST API. Signed-off-by: Stephen Finucane <stephen@that.guru> Suggested-by: Ali Alnubani <alialnu@mellanox.com> Closes: #365 Stephen Finucane2020-12-13
* views/patch: Set correct encoding for patches•••The patch_mbox view returns text/plain data without specifying a character set, which means clients will assume the default of iso-8559-1 as defined in the HTTP/1.1 standard. Since the data being returned is in fact utf-8 encoded, set the encoding accordingly in the HTTP Content-Type header. Reported-by: Jakub Kicinski <kuba@kernel.org> Suggested-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org> Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> Toke Høiland-Jørgensen2020-12-11
* requirements: Bump sqlparse to 0.4.0•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-11-30
* requirements: Add tblib•••This is needed by the parallel test runner to handle pickling of tracebacks. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-11-29
* Add parallel testing•••This saves us a good deal of time, even allowing for process startup and general overhead. Before: real 6m39.103s user 1m9.561s sys 0m2.705s After: real 4m5.267s user 1m24.527s sys 0m3.828s This requires N databases, where N is the N of processors on the host. We need to update the docker configuration for this. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-11-29
* Remove landscape.yaml•••landscape.io is dead [1]. No point keeping this artefact around. [1] https://landscape.io/landscapes-story-in-2016.html Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-11-29
* lib: Update DB permissions to reflect model changes•••These should have been done when we made changes to the model. Signed-off-by: Stephen Finucane <stephen@that.guru> Fixes: ac0e4de9 ("models: Merge 'Patch' and 'Submission'") Stephen Finucane2020-11-28
* parser: Update reference to PatchComment•••Commit 0686a736fbf6d869bd31bd135ba38080ac96de22 split out 'CoverLetter' from the old 'Submission' model, removing the common 'Comment' model in favour of distinct 'CoverComment' and 'PatchComment' models in the process. Unfortunately we misssed some references to the old model in the 'patchwork.parser' module. Correct these now, adding unit tests to prevent regressions. Signed-off-by: Stephen Finucane <stephen@that.guru> Fixes: 0686a736 ("models: Split 'CoverLetter' from 'Submission'") Closes: #384 Stephen Finucane2020-11-28
* requirements: Update doc requirements•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-10-01
* requirements: Bump mysqlclient to 2.0.0•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-10-01
* requirements: Bump django-debug-toolbar to 3.1.x•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-10-01
* requirements: Bump django-filter to 2.4.0•••Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-10-01
* Add support for djangorestframework 3.12•••No changes necessary. Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-10-01
* models: Validate Project.linkname does not contain forward slash•••I started by creating a project that contained a forward slash (importing patches from https://lists.sr.ht/~sircmpwn/sr.ht-dev/) and it fails to render the "projects" main page. The specific error reads: NoReverseMatch at / Reverse for 'patch-list' with keyword arguments '{'project_id': 'foo/bar'}' not found. 1 pattern(s) tried: ['project/(?P<project_id>[^/]+)/list/$'] which appears to explicitly disallow forward slashes. So I think it makes sense to validate that project linkname doesn't contain forward slahes. This implementation uses the validate_unicode_slug validator instead of just rejecting inputs that contain forward slashes. Signed-off-by: Thomas Bracht Laumann Jespersen <t@laumann.xyz> Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #380 Thomas Bracht Laumann Jespersen2020-10-01
* Add support for Django 3.1•••Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com> Reviewed-by: Stephen Finucane <stephen@that.guru> Andrew Donnellan2020-08-28
* requirements: Update django-filter•••Update django-filter dependency to a version that's compatible with Django 3.1. Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com> Reviewed-by: Stephen Finucane <stephen@that.guru> Andrew Donnellan2020-08-28
* settings: Add context processor django.template.context_processors.request•••Django 3.1 adds a new admin sidebar feature that requires the django.template.context_processors.request context processor to be enabled in the settings. Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com> Reviewed-by: Stephen Finucane <stephen@that.guru> Andrew Donnellan2020-08-28
* urls: Update url pattern functions•••Django 3.1 deprecates django.conf.urls.url() as an alias for django.urls.re_path(). Also switch to using django.urls.include() rather than django.conf.urls.include(). Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com> Signed-off-by: Stephen Finucane <stephen@that.guru> Andrew Donnellan2020-08-28
* templates: Replace ifequal and ifnotequal with if•••Django 3.1 deprecates the ifequal and ifnotequal tags, for removal in 4.0. Replace all occurrences of ifequal and ifnotequal with if. Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com> Reviewed-by: Stephen Finucane <stephen@that.guru> Andrew Donnellan2020-08-28
* management: introduce replacerelations command•••The replacerelations script is used to ingest relations into Patchwork's patch database. A patch groups file is taken as input, which on each line contains a space separated list of patchwork ids denoting a relation. All the existing relations in Patchwork's database are removed and the relations read from the patch groups file are ingested. Signed-off-by: Rohit Sarkar <rohitsarkar5398@gmail.com> [dja: pep8, drop relations directory as empty dirs don't get stored by git, comment about how lines are generated.] Signed-off-by: Daniel Axtens <dja@axtens.net> Rohit Sarkar2020-08-10
* docker: Switch to MariaDB for wider platform support•••MySQL docker images only have amd64 arch support MariaDB images have amd64, arm64v8, and ppc64le Signed-off-by: Stewart Smith <stewart@flamingspork.com> Signed-off-by: Daniel Axtens <dja@axtens.net> Stewart Smith2020-06-15
* admin: fix series query•••remove typo from search_fields. Signed-off-by: Jan Remmet <j.remmet@phytec.de> Signed-off-by: Stephen Finucane <stephen@that.guru> Jan Remmet2020-05-25
* docs: Bump sphinxcontrib-openapi to 0.7.0•••This picks up an important fix [1] we want for our docs build. [1] https://github.com/sphinx-contrib/openapi/pull/87 Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-05-08
* Revert "tox: Add default Django version"•••This reverts commit 029aff107ea9950418f9ad3cf44c3ba1ca3ea3ee. It appears this isn't supported by tox either :( Signed-off-by: Stephen Finucane <stephen@that.guru> Stephen Finucane2020-05-01