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()
|
instance.save()
|
||||||
if "created_date" in validated_data:
|
if "created_date" in validated_data:
|
||||||
validated_data.pop("created_date")
|
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)
|
super().update(instance, validated_data)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
@ -476,3 +476,17 @@ class TestCustomField(DirectoriesMixin, APITestCase):
|
|||||||
self.assertEqual(doc2.custom_fields.first().value, [1])
|
self.assertEqual(doc2.custom_fields.first().value, [1])
|
||||||
self.assertEqual(doc3.custom_fields.first().value, [1])
|
self.assertEqual(doc3.custom_fields.first().value, [1])
|
||||||
self.assertEqual(doc4.custom_fields.first().value, [])
|
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