Skip to content

Commit e4d5b55

Browse files
emyllerclaude
andcommitted
Inherit MetadataSerializerMixin from Serializer
Co-authored-by: Claude <[email protected]>
1 parent 57bdbdc commit e4d5b55

File tree

4 files changed

+9
-10
lines changed

4 files changed

+9
-10
lines changed

api/environments/serializers.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from environments.models import Environment, EnvironmentAPIKey, Webhook
66
from features.serializers import FeatureStateSerializerFull
7-
from metadata.serializers import MetadataSerializer, MetadataSerializerMixin
7+
from metadata.serializers import MetadataSerializerMixin
88
from organisations.models import Subscription
99
from organisations.subscriptions.serializers.mixins import (
1010
ReadOnlyIfNotValidPlanMixin,
@@ -79,8 +79,6 @@ class EnvironmentSerializerWithMetadata(
7979
DeleteBeforeUpdateWritableNestedModelSerializer,
8080
EnvironmentSerializerLight,
8181
):
82-
metadata = MetadataSerializer(required=False, many=True)
83-
8482
class Meta(EnvironmentSerializerLight.Meta):
8583
fields = EnvironmentSerializerLight.Meta.fields + ("metadata",) # type: ignore[assignment]
8684

api/features/serializers.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
)
2424
from integrations.github.constants import GitHubEventType
2525
from integrations.github.github import call_github_task
26-
from metadata.serializers import MetadataSerializer, MetadataSerializerMixin
26+
from metadata.serializers import MetadataSerializerMixin
2727
from projects.code_references.serializers import (
2828
FeatureFlagCodeReferencesRepositoryCountSerializer,
2929
)
@@ -345,8 +345,6 @@ def get_last_modified_in_current_environment(
345345

346346

347347
class FeatureSerializerWithMetadata(MetadataSerializerMixin, CreateFeatureSerializer):
348-
metadata = MetadataSerializer(required=False, many=True)
349-
350348
code_references_counts = FeatureFlagCodeReferencesRepositoryCountSerializer(
351349
many=True,
352350
read_only=True,

api/metadata/serializers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,15 @@ def validate(self, attrs: dict[str, Any]) -> dict[str, Any]:
103103
return attrs
104104

105105

106-
class MetadataSerializerMixin:
106+
class MetadataSerializerMixin(serializers.Serializer): # type: ignore[type-arg]
107107
"""
108-
Functionality for serializers that need to handle metadata
108+
Mixin for serializers that need to handle metadata
109+
110+
NOTE: Child serializers should include 'metadata' in their Meta.fields.
109111
"""
110112

113+
metadata = MetadataSerializer(required=False, many=True)
114+
111115
def _validate_required_metadata(
112116
self, organisation: Organisation, metadata: list[dict[str, Any]]
113117
) -> None:

api/segments/serializers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from rest_framework import serializers
88
from rest_framework.exceptions import ValidationError
99

10-
from metadata.serializers import MetadataSerializer, MetadataSerializerMixin
10+
from metadata.serializers import MetadataSerializerMixin
1111
from projects.models import Project
1212
from segments.models import Condition, Segment, SegmentRule
1313

@@ -80,7 +80,6 @@ class Meta:
8080

8181
class SegmentSerializer(MetadataSerializerMixin, WritableNestedModelSerializer):
8282
rules = SegmentRuleSerializer(many=True, required=True, allow_empty=False)
83-
metadata = MetadataSerializer(required=False, many=True)
8483

8584
def __init__(self, *args: Any, **kwargs: Any) -> None:
8685
"""

0 commit comments

Comments
 (0)