MCPcopy Create free account
hub / github.com/Flagsmith/flagsmith / UpdateFlagSerializer

Class UpdateFlagSerializer

api/features/feature_states/serializers.py:98–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96
97
98class UpdateFlagSerializer(BaseFeatureUpdateSerializer):
99 feature = FeatureIdentifierSerializer(required=True)
100 segment = FeatureUpdateSegmentDataSerializer(required=False)
101 enabled = serializers.BooleanField(required=True)
102 value = FeatureValueSerializer(required=True)
103
104 def validate_segment(self, value: dict) -> dict: # type: ignore[type-arg]
105 if value and "id" in value:
106 self.validate_segment_id(value["id"])
107 return value
108
109 @property
110 def flag_change_set(self) -> FlagChangeSet:
111 validated_data = self.validated_data
112 value_data = validated_data["value"]
113 segment_data = validated_data.get("segment")
114
115 return FlagChangeSet(
116 author=AuthorData.from_request(self.context["request"]),
117 enabled=validated_data["enabled"],
118 feature_state_value=value_data["value"],
119 type_=value_data["type"],
120 segment_id=segment_data.get("id") if segment_data else None,
121 segment_priority=segment_data.get("priority") if segment_data else None,
122 )
123
124 def save(self, **kwargs: object) -> FeatureState:
125 feature = self.get_feature()
126 return update_flag(self.environment, feature, self.flag_change_set)
127
128
129class EnvironmentDefaultSerializer(serializers.Serializer): # type: ignore[type-arg]

Used in the wild real call sites across dependent graphs

searching dependent graphs…