diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py index d14d0ba42e6500bc7cd96a4bae7eee2c9f146f66..4d6f2a44814e948cbfa4b23a976c64cab5d394ae 100644 --- a/arkindex/documents/api/elements.py +++ b/arkindex/documents/api/elements.py @@ -520,9 +520,15 @@ class ElementsListAutoSchema(AutoSchema): parameters.extend([ OpenApiParameter( "delete_children", - description="Delete all child elements of those elements recursively.", + description=dedent(""" + Delete all child elements of those elements recursively. + + If set to false, this only removes those elements as parents of their + child elements, without deleting any child element. + """), type=bool, required=False, + default=True, ) ]) @@ -1265,11 +1271,15 @@ class ElementChildrenCreate(CreateAPIView): parameters=[ OpenApiParameter( "delete_children", - description="Delete all child elements of this element recursively. " - "By default, this only removes this element as a parent of the child elements, " - "without deleting any child element.", + description=dedent(""" + Delete all child elements of this element recursively. + + If set to false, this only removes this element as a parent of the + child elements, without deleting any child element. + """), type=bool, required=False, + default=True, ), ], ), @@ -1335,7 +1345,7 @@ class ElementRetrieve(ACLMixin, RetrieveUpdateDestroyAPIView): element = self.get_object() self.check_object_permissions(self.request, element) - delete_children = self.request.query_params.get("delete_children", "false").lower() not in ("false", "0") + delete_children = self.request.query_params.get("delete_children", "").lower() not in ("false", "0") element_delete(element, user_id=self.request.user.id, delete_children=delete_children) diff --git a/arkindex/documents/tests/test_destroy_elements.py b/arkindex/documents/tests/test_destroy_elements.py index 31b3cd60cd2d1572385cf97d4674afb1f234bc36..d6f39024b8bfa567d0810fe7bef6701b330842eb 100644 --- a/arkindex/documents/tests/test_destroy_elements.py +++ b/arkindex/documents/tests/test_destroy_elements.py @@ -55,7 +55,12 @@ class TestDestroyElements(FixtureAPITestCase): ) self.assertTrue(self.corpus.elements.filter(id=castle_story.id).exists()) with self.assertNumQueries(3): - response = self.client.delete(reverse("api:element-retrieve", kwargs={"pk": str(castle_story.id)})) + response = self.client.delete( + reverse( + "api:element-retrieve", + kwargs={"pk": str(castle_story.id)} + ) + "?delete_children=False", + ) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(delay_mock.call_count, 1) @@ -89,7 +94,7 @@ class TestDestroyElements(FixtureAPITestCase): with self.assertNumQueries(3): response = self.client.delete( reverse("api:element-retrieve", kwargs={"pk": str(castle_story.id)}) - + f"?delete_children={delete_children}", + + f"?delete_children={delete_children}" ) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @@ -116,7 +121,12 @@ class TestDestroyElements(FixtureAPITestCase): creator=self.user, ) with self.assertNumQueries(3): - response = self.client.delete(reverse("api:element-retrieve", kwargs={"pk": str(castle_story.id)})) + response = self.client.delete( + reverse( + "api:element-retrieve", + kwargs={"pk": str(castle_story.id)} + ) + "?delete_children=False" + ) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(delay_mock.call_count, 1) @@ -168,7 +178,12 @@ class TestDestroyElements(FixtureAPITestCase): """ self.client.force_login(self.user) with self.assertNumQueries(3): - response = self.client.delete(reverse("api:element-retrieve", kwargs={"pk": str(self.vol.id)})) + response = self.client.delete( + reverse( + "api:element-retrieve", + kwargs={"pk": str(self.vol.id)} + ) + "?delete_children=False" + ) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(delay_mock.call_count, 1)