Skip to content

Commit 3baf09e

Browse files
committed
fix: reviewed-validation-to-delete-metadata-without-value
1 parent 888d361 commit 3baf09e

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/common/metadata/serializers.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@
1515

1616

1717
class MetadataSerializer(serializers.ModelSerializer["Metadata"]):
18+
field_value = serializers.CharField(required=False, allow_blank=True, allow_null=True)
19+
1820
class Meta:
1921
model = apps.get_model("metadata", "Metadata")
2022
fields = ("id", "model_field", "field_value")
2123

2224
def validate(self, data: dict[str, typing.Any]) -> dict[str, typing.Any]:
2325
data = super().validate(data)
24-
if not data["model_field"].field.is_field_value_valid(data["field_value"]):
26+
field_value = data.get("field_value")
27+
if (field_value and not data["model_field"].field.is_field_value_valid(field_value)):
2528
raise serializers.ValidationError(
2629
f"Invalid value for field {data['model_field'].field.name}"
2730
)
@@ -74,7 +77,7 @@ def update_metadata(
7477

7578
for metadata_item in metadata_data:
7679
metadata_model_field = metadata_item.pop("model_field", None)
77-
if metadata_item.get("delete"):
80+
if metadata_item.get("delete") or not metadata_item.get("field_value"):
7881
Metadata.objects.filter(
7982
model_field=metadata_model_field,
8083
object_id=instance.pk,
@@ -113,7 +116,7 @@ def validate_required_metadata(
113116
if required_for.pk == requirement.object_id:
114117
if not any(
115118
[
116-
field["model_field"] == requirement.model_field
119+
field["model_field"] == requirement.model_field and field.get("field_value") not in [None, ""]
117120
for field in metadata
118121
]
119122
):

0 commit comments

Comments
 (0)