Skip to content

Commit a43b771

Browse files
committed
fix: typed-dict-metadata-item
1 parent 9e076fc commit a43b771

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/common/metadata/serializers.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from django.db import models
66
from rest_framework import serializers
77

8+
from common.metadata.types import MetadataItem
9+
810
if typing.TYPE_CHECKING:
911
from common.types import (
1012
Metadata, # noqa: F401
@@ -59,7 +61,7 @@ def get_required_for_object(
5961
def update_metadata(
6062
self,
6163
instance: models.Model,
62-
metadata_data: list[dict[str, typing.Any]],
64+
metadata_data: list[MetadataItem],
6365
) -> None:
6466
Metadata = apps.get_model("metadata", "Metadata")
6567
ContentType = apps.get_model("contenttypes", "ContentType")
@@ -83,7 +85,7 @@ def update_metadata(
8385

8486
for metadata_item in metadata_data:
8587
metadata_model_field = metadata_item.pop("model_field", None)
86-
if metadata_model_field.id is not None:
88+
if metadata_model_field is not None and metadata_model_field.id is not None:
8789
Metadata.objects.update_or_create(
8890
model_field=metadata_model_field,
8991
content_type=content_type,

src/common/metadata/types.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from typing import TypedDict, Any, NotRequired, Protocol
2+
from django.contrib.contenttypes.models import ContentType
3+
4+
class HasId(Protocol):
5+
id: int
6+
7+
class MetadataItem(TypedDict, total=False):
8+
model_field: HasId
9+
field_value: Any
10+
delete: NotRequired[bool]

0 commit comments

Comments
 (0)