Remove symmetrical doc links when entire custom field removed
This commit is contained in:
parent
74e81d673a
commit
2e7f7d1d6d
@ -608,6 +608,21 @@ class DocumentSerializer(
|
||||
instance.save()
|
||||
if "created_date" in validated_data:
|
||||
validated_data.pop("created_date")
|
||||
if instance.custom_fields.count() > 0 and "custom_fields" in validated_data:
|
||||
for custom_field_instance in instance.custom_fields.filter(
|
||||
field__data_type=CustomField.FieldDataType.DOCUMENTLINK,
|
||||
):
|
||||
if custom_field_instance.field not in [
|
||||
field["field"] for field in validated_data["custom_fields"]
|
||||
]:
|
||||
# Doc link field is being removed entirely
|
||||
for doc_id in custom_field_instance.value:
|
||||
CustomFieldInstanceSerializer.remove_doclink(
|
||||
None,
|
||||
instance,
|
||||
custom_field_instance.field,
|
||||
doc_id,
|
||||
)
|
||||
super().update(instance, validated_data)
|
||||
return instance
|
||||
|
||||
|
@ -476,3 +476,17 @@ class TestCustomField(DirectoriesMixin, APITestCase):
|
||||
self.assertEqual(doc2.custom_fields.first().value, [1])
|
||||
self.assertEqual(doc3.custom_fields.first().value, [1])
|
||||
self.assertEqual(doc4.custom_fields.first().value, [])
|
||||
|
||||
# Removes the field entirely
|
||||
resp = self.client.patch(
|
||||
f"/api/documents/{doc1.id}/",
|
||||
data={
|
||||
"custom_fields": [],
|
||||
},
|
||||
format="json",
|
||||
)
|
||||
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(doc2.custom_fields.first().value, [])
|
||||
self.assertEqual(doc3.custom_fields.first().value, [])
|
||||
self.assertEqual(doc4.custom_fields.first().value, [])
|
||||
|
Loading…
x
Reference in New Issue
Block a user