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