diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py index 8a4f91e77..9939d703d 100644 --- a/api/funkwhale_api/manage/views.py +++ b/api/funkwhale_api/manage/views.py @@ -488,6 +488,14 @@ class ManageReportViewSet( required_scope = "instance:reports" ordering_fields = ["id", "creation_date", "handled_date"] + def perform_update(self, serializer): + is_handled = serializer.instance.is_handled + if not is_handled and serializer.validated_data.get("is_handled") is True: + # report was resolved, we assign to the mod making the request + serializer.save(assigned_to=self.request.user.actor) + else: + serializer.save() + class ManageNoteViewSet( mixins.ListModelMixin, diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py index 7f17fce11..793d3a93c 100644 --- a/api/tests/manage/test_views.py +++ b/api/tests/manage/test_views.py @@ -495,3 +495,17 @@ def test_report_update(factories, superuser_api_client): assert response.status_code == 200 report.refresh_from_db() assert report.is_handled is True + + +def test_report_update_is_handled_true_assigns(factories, superuser_api_client): + actor = superuser_api_client.user.create_actor() + report = factories["moderation.Report"]() + url = reverse( + "api:v1:manage:moderation:reports-detail", kwargs={"uuid": report.uuid} + ) + response = superuser_api_client.patch(url, {"is_handled": True}) + + assert response.status_code == 200 + report.refresh_from_db() + assert report.is_handled is True + assert report.assigned_to == actor