| 96 | |
| 97 | |
| 98 | class 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 | |
| 129 | class EnvironmentDefaultSerializer(serializers.Serializer): # type: ignore[type-arg] |
searching dependent graphs…