Skip to content

Commit f3809f6

Browse files
feat: add serializers for versioning change requests (#1)
* Add poetry files * Add serializers for feature versioning change requests * Add common package * Update include * Update name * Move multivariate serializer * Correct DRF lib * Fix app name
1 parent dddf609 commit f3809f6

File tree

9 files changed

+204
-0
lines changed

9 files changed

+204
-0
lines changed

common/__init__.py

Whitespace-only changes.

common/features/__init__.py

Whitespace-only changes.

common/features/multivariate/__init__.py

Whitespace-only changes.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from django.apps import apps
2+
from rest_framework import serializers
3+
4+
5+
class MultivariateFeatureStateValueSerializer(serializers.ModelSerializer):
6+
class Meta:
7+
model = apps.get_model("multivariate", "MultivariateFeatureStateValue")
8+
fields = (
9+
"id",
10+
"multivariate_feature_option",
11+
"percentage_allocation",
12+
)

common/features/serializers.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from drf_writable_nested.serializers import WritableNestedModelSerializer
2+
from rest_framework import serializers
3+
4+
from django.apps import apps
5+
6+
from common.features.multivariate.serializers import MultivariateFeatureStateValueSerializer
7+
8+
9+
class FeatureStateValueSerializer(serializers.ModelSerializer):
10+
class Meta:
11+
model = apps.get_model("features", "FeatureStateValue")
12+
fields = ("type", "string_value", "integer_value", "boolean_value")
13+
14+
15+
class CreateSegmentOverrideFeatureSegmentSerializer(serializers.ModelSerializer):
16+
class Meta:
17+
model = apps.get_model("features", "FeatureSegment")
18+
fields = ("id", "segment", "priority", "uuid")
19+
20+
21+
class CreateSegmentOverrideFeatureStateSerializer(WritableNestedModelSerializer):
22+
feature_state_value = FeatureStateValueSerializer()
23+
feature_segment = CreateSegmentOverrideFeatureSegmentSerializer(
24+
required=False, allow_null=True
25+
)
26+
multivariate_feature_state_values = MultivariateFeatureStateValueSerializer(
27+
many=True, required=False
28+
)
29+
30+
class Meta:
31+
model = apps.get_model("features", "FeatureState")
32+
fields = (
33+
"id",
34+
"feature",
35+
"enabled",
36+
"feature_state_value",
37+
"feature_segment",
38+
"deleted_at",
39+
"uuid",
40+
"created_at",
41+
"updated_at",
42+
"live_from",
43+
"environment",
44+
"identity",
45+
"change_request",
46+
"multivariate_feature_state_values",
47+
)
48+
49+
read_only_fields = (
50+
"id",
51+
"deleted_at",
52+
"uuid",
53+
"created_at",
54+
"updated_at",
55+
"live_from",
56+
"environment",
57+
"identity",
58+
"change_request",
59+
"feature",
60+
)

common/features/versioning/__init__.py

Whitespace-only changes.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from common.features.serializers import CreateSegmentOverrideFeatureStateSerializer
2+
3+
4+
class EnvironmentFeatureVersionFeatureStateSerializer(
5+
CreateSegmentOverrideFeatureStateSerializer
6+
):
7+
class Meta(CreateSegmentOverrideFeatureStateSerializer.Meta):
8+
read_only_fields = (
9+
CreateSegmentOverrideFeatureStateSerializer.Meta.read_only_fields
10+
+ ("feature",)
11+
)

poetry.lock

Lines changed: 104 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[tool.poetry]
2+
name = "flagsmith_common"
3+
version = "0.1.0"
4+
description = "A repository for including code that is required in multiple flagsmith repositories"
5+
authors = ["Matthew Elwell <[email protected]>"]
6+
readme = "README.md"
7+
packages = [{ include = "common"}]
8+
9+
[tool.poetry.dependencies]
10+
python = "^3.10"
11+
django = "*"
12+
djangorestframework = "*"
13+
drf-writable-nested = "*"
14+
15+
[build-system]
16+
requires = ["poetry-core"]
17+
build-backend = "poetry.core.masonry.api"

0 commit comments

Comments
 (0)