From 02962ec0d5d175a91da4a0b2f259072efc2aa7c6 Mon Sep 17 00:00:00 2001 From: FrankApiyo Date: Sat, 19 Oct 2024 16:55:27 +0300 Subject: [PATCH] Add query filter for dataview viewset --- .../apps/api/tests/viewsets/test_dataview_viewset.py | 10 ++++++++++ onadata/apps/api/viewsets/dataview_viewset.py | 8 ++++++++ onadata/libs/serializers/dataview_serializer.py | 6 ------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/onadata/apps/api/tests/viewsets/test_dataview_viewset.py b/onadata/apps/api/tests/viewsets/test_dataview_viewset.py index 9bb5835186..b015aecfd6 100644 --- a/onadata/apps/api/tests/viewsets/test_dataview_viewset.py +++ b/onadata/apps/api/tests/viewsets/test_dataview_viewset.py @@ -454,6 +454,16 @@ def test_list_dataview(self): self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 2) + # delete DataView and check that we don't get it in response + dataview = DataView.objects.get(name="My DataView2") + deleted_dataview_id = dataview.id + dataview.soft_delete(user=self.user) + response = view(request) + + self.assertEqual(response.status_code, 200) + self.assertEqual(len(response.data), 1) + self.assertNotEqual(response.data[0]["dataviewid"], deleted_dataview_id) + anon_request = request = self.factory.get("/") anon_response = view(anon_request) self.assertEqual(anon_response.status_code, 401) diff --git a/onadata/apps/api/viewsets/dataview_viewset.py b/onadata/apps/api/viewsets/dataview_viewset.py index 1ee101c2e3..4aeff0843d 100644 --- a/onadata/apps/api/viewsets/dataview_viewset.py +++ b/onadata/apps/api/viewsets/dataview_viewset.py @@ -155,6 +155,14 @@ def get_serializer_class(self): return serializer_class + def filter_queryset(self, queryset): + """ + Remove deleted DataViews + """ + return super().filter_queryset( + queryset.filter(deleted_at=None, deleted_by=None) + ) + def list(self, request, *args, **kwargs): """ List endpoint for Filtered datasets diff --git a/onadata/libs/serializers/dataview_serializer.py b/onadata/libs/serializers/dataview_serializer.py index 3179a351f8..bdf4c51219 100644 --- a/onadata/libs/serializers/dataview_serializer.py +++ b/onadata/libs/serializers/dataview_serializer.py @@ -109,11 +109,6 @@ class DataViewSerializer(serializers.HyperlinkedModelSerializer): project = serializers.HyperlinkedRelatedField( view_name="project-detail", lookup_field="pk", queryset=Project.objects.all() ) - deleted_by = serializers.HyperlinkedRelatedField( - view_name="user-detail", - lookup_field="username", - read_only=True, - ) columns = JsonField() query = JsonField(required=False) count = serializers.SerializerMethodField() @@ -124,7 +119,6 @@ class DataViewSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = DataView - exclude = ["deleted_by", "deleted_at"] fields = ( "dataviewid", "name",