From 61cb5103ed96dbe6a4f44129f92616b4c0d99b45 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 25 Feb 2025 13:50:15 -0800 Subject: [PATCH] Fix: prune invalid custom fields (#9224) --- src/documents/serialisers.py | 5 ++--- src/documents/tests/test_api_documents.py | 6 ++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index a486fe241..5f3b310c2 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -1136,9 +1136,8 @@ class SavedViewSerializer(OwnedObjectSerializer): ): # i.e. check for 'custom_field_' prefix field_id = int(re.search(r"\d+", field)[0]) if not CustomField.objects.filter(id=field_id).exists(): - raise serializers.ValidationError( - f"Invalid field: {field}", - ) + # In case the field was deleted, just remove from the list + attrs["display_fields"].remove(field) elif field not in SavedView.DisplayFields.values: raise serializers.ValidationError( f"Invalid field: {field}", diff --git a/src/documents/tests/test_api_documents.py b/src/documents/tests/test_api_documents.py index 28261b392..40c30f5bb 100644 --- a/src/documents/tests/test_api_documents.py +++ b/src/documents/tests/test_api_documents.py @@ -1911,7 +1911,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ], ) - # Custom field not found + # Custom field not found, removed from list response = self.client.patch( f"/api/saved_views/{v1.id}/", { @@ -1923,7 +1923,9 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): }, format="json", ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.status_code, status.HTTP_200_OK) + v1.refresh_from_db() + self.assertNotIn(SavedView.DisplayFields.CUSTOM_FIELD % 99, v1.display_fields) def test_get_logs(self): log_data = "test\ntest2\n"