Fix: prevent self-linking when bulk edit doc link (#9629)

This commit is contained in:
shamoon 2025-04-14 07:12:50 -07:00 committed by GitHub
parent f269919410
commit 6dea158de9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 35 additions and 0 deletions

View File

@ -179,6 +179,12 @@ def modify_custom_fields(
custom_field.data_type
]
defaults[value_field] = value
if (
custom_field.data_type == CustomField.FieldDataType.DOCUMENTLINK
and doc_id in value
):
# Prevent self-linking
continue
CustomFieldInstance.objects.update_or_create(
document_id=doc_id,
field_id=field_id,

View File

@ -336,6 +336,35 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
self.doc2.custom_fields.filter(field=cf3).first().value,
)
def test_modify_custom_fields_doclink_self_link(self):
"""
GIVEN:
- 2 existing documents
- Existing doc link custom field
WHEN:
- Doc link field is modified to include self link
THEN:
- Self link should not be created
"""
cf = CustomField.objects.create(
name="cf",
data_type=CustomField.FieldDataType.DOCUMENTLINK,
)
bulk_edit.modify_custom_fields(
[self.doc1.id, self.doc2.id],
add_custom_fields={cf.id: [self.doc1.id]},
remove_custom_fields=[],
)
self.assertEqual(
self.doc1.custom_fields.first().value,
[self.doc2.id],
)
self.assertEqual(
self.doc2.custom_fields.first().value,
[self.doc1.id],
)
def test_delete(self):
self.assertEqual(Document.objects.count(), 5)
bulk_edit.delete([self.doc1.id, self.doc2.id])