]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: prune invalid custom fields (#9224)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Tue, 25 Feb 2025 21:50:15 +0000 (13:50 -0800)
committerGitHub <noreply@github.com>
Tue, 25 Feb 2025 21:50:15 +0000 (13:50 -0800)
src/documents/serialisers.py
src/documents/tests/test_api_documents.py

index a486fe24153f7bb52aa902946bec13a42d0e1101..5f3b310c2a076f8c948f347f63fbdba88050c060 100644 (file)
@@ -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}",
index 28261b3926921ab2b8c6148d68dcf29ace6ed100..40c30f5bb45da1cb6731533af64921b0d3ec0322 100644 (file)
@@ -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"