From dac91c1e9a551af1546cdd0f1050eae52fba2d5a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:22:51 -0800 Subject: [PATCH] Backend coerce empty display_fields to none --- src/documents/serialisers.py | 9 +++++++++ src/documents/tests/test_api_documents.py | 13 +++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 84894bff1..75896ecdd 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -1147,6 +1147,15 @@ class SavedViewSerializer(OwnedObjectSerializer): if "user" in validated_data: # backwards compatibility validated_data["owner"] = validated_data.pop("user") + if ( + "display_fields" in validated_data + and isinstance( + validated_data["display_fields"], + list, + ) + and len(validated_data["display_fields"]) == 0 + ): + validated_data["display_fields"] = None super().update(instance, validated_data) if rules_data is not None: SavedViewFilterRule.objects.filter(saved_view=instance).delete() diff --git a/src/documents/tests/test_api_documents.py b/src/documents/tests/test_api_documents.py index 7010c5095..a1bea944a 100644 --- a/src/documents/tests/test_api_documents.py +++ b/src/documents/tests/test_api_documents.py @@ -1815,6 +1815,19 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + # empty display fields treated as none + response = self.client.patch( + f"/api/saved_views/{v1.id}/", + { + "display_fields": [], + }, + format="json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + v1.refresh_from_db() + self.assertEqual(v1.display_fields, None) + def test_saved_view_display_customfields(self): """ GIVEN: