From 5d7eb34080dc5c4dbe5cc08da46ab746ea4d6c87 Mon Sep 17 00:00:00 2001 From: Eva Bardou <ebardou@teklia.com> Date: Tue, 1 Dec 2020 10:49:46 +0100 Subject: [PATCH] Add tests --- arkindex/documents/api/elements.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py index 2d4e56cbb8..ad86cc4433 100644 --- a/arkindex/documents/api/elements.py +++ b/arkindex/documents/api/elements.py @@ -1174,6 +1174,24 @@ class CorpusDeleteSelection(ElementsListMixin, SelectionMixin, DestroyAPIView): """ Delete selected elements on a corpus """ + serializer_class = CorpusSerializer + openapi_overrides = { + 'operationId': 'DeleteCorpusSelection', + 'tags': ['elements'] + } + + def delete(self, request, *args, **kwargs): + rights = Corpus.objects.get(id=self.kwargs['pk']).get_acl_rights(request.user) + if Right.Admin not in rights: + self.permission_denied(request, message='You do not have admin access to delete elements on this corpus.') + + selected_elements = self.get_selection(corpus_id=self.kwargs['pk']) + if not selected_elements.exists(): + raise NotFound + + for batch in range(0, selected_elements.count(), 50): + queryset = Element.objects.filter(id__in=list(selected_elements[batch:batch + 50].values_list('id', flat=True))) + element_trash(queryset, user_id=self.request.user.id) def get_queryset(self): # Should not be possible due to the URL -- GitLab