chore(): small improvements
This commit is contained in:
@@ -52,6 +52,7 @@ class DecisionAPITest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="control",
|
name="control",
|
||||||
value="ctrl",
|
value="ctrl",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -59,6 +60,7 @@ class DecisionAPITest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="treatment",
|
name="treatment",
|
||||||
value="treat",
|
value="treat",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class EventTypeCreateIn(ModelSchema):
|
|||||||
EventType.name.field.name,
|
EventType.name.field.name,
|
||||||
EventType.display_name.field.name,
|
EventType.display_name.field.name,
|
||||||
EventType.description.field.name,
|
EventType.description.field.name,
|
||||||
|
EventType.is_exposure.field.name,
|
||||||
EventType.requires_exposure.field.name,
|
EventType.requires_exposure.field.name,
|
||||||
EventType.required_fields.field.name,
|
EventType.required_fields.field.name,
|
||||||
)
|
)
|
||||||
@@ -22,6 +23,7 @@ class EventTypeCreateIn(ModelSchema):
|
|||||||
class EventTypeUpdateIn(ModelSchema):
|
class EventTypeUpdateIn(ModelSchema):
|
||||||
display_name: str | None = None
|
display_name: str | None = None
|
||||||
description: str | None = None
|
description: str | None = None
|
||||||
|
is_exposure: bool | None = None
|
||||||
requires_exposure: bool | None = None
|
requires_exposure: bool | None = None
|
||||||
required_fields: list[str] | None = None
|
required_fields: list[str] | None = None
|
||||||
is_active: bool | None = None
|
is_active: bool | None = None
|
||||||
@@ -31,6 +33,7 @@ class EventTypeUpdateIn(ModelSchema):
|
|||||||
fields: ClassVar[tuple[str, ...]] = (
|
fields: ClassVar[tuple[str, ...]] = (
|
||||||
EventType.display_name.field.name,
|
EventType.display_name.field.name,
|
||||||
EventType.description.field.name,
|
EventType.description.field.name,
|
||||||
|
EventType.is_exposure.field.name,
|
||||||
EventType.requires_exposure.field.name,
|
EventType.requires_exposure.field.name,
|
||||||
EventType.required_fields.field.name,
|
EventType.required_fields.field.name,
|
||||||
EventType.is_active.field.name,
|
EventType.is_active.field.name,
|
||||||
@@ -45,6 +48,7 @@ class EventTypeOut(ModelSchema):
|
|||||||
EventType.name.field.name,
|
EventType.name.field.name,
|
||||||
EventType.display_name.field.name,
|
EventType.display_name.field.name,
|
||||||
EventType.description.field.name,
|
EventType.description.field.name,
|
||||||
|
EventType.is_exposure.field.name,
|
||||||
EventType.requires_exposure.field.name,
|
EventType.requires_exposure.field.name,
|
||||||
EventType.required_fields.field.name,
|
EventType.required_fields.field.name,
|
||||||
EventType.is_active.field.name,
|
EventType.is_active.field.name,
|
||||||
|
|||||||
@@ -184,12 +184,14 @@ def create_variant(
|
|||||||
experiment_id: UUID,
|
experiment_id: UUID,
|
||||||
payload: VariantCreateIn,
|
payload: VariantCreateIn,
|
||||||
) -> tuple[HTTPStatus, VariantOut]:
|
) -> tuple[HTTPStatus, VariantOut]:
|
||||||
|
user = _get_user(request)
|
||||||
exp = get_object_or_404(
|
exp = get_object_or_404(
|
||||||
Experiment.objects.select_related("flag"),
|
Experiment.objects.select_related("flag", "owner"),
|
||||||
pk=experiment_id,
|
pk=experiment_id,
|
||||||
)
|
)
|
||||||
v = variant_create(
|
v = variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=user,
|
||||||
name=payload.name,
|
name=payload.name,
|
||||||
value=payload.value,
|
value=payload.value,
|
||||||
weight=payload.weight,
|
weight=payload.weight,
|
||||||
@@ -210,13 +212,15 @@ def update_variant(
|
|||||||
variant_id: UUID,
|
variant_id: UUID,
|
||||||
payload: VariantUpdateIn,
|
payload: VariantUpdateIn,
|
||||||
) -> tuple[HTTPStatus, VariantOut]:
|
) -> tuple[HTTPStatus, VariantOut]:
|
||||||
|
user = _get_user(request)
|
||||||
v = get_object_or_404(
|
v = get_object_or_404(
|
||||||
Variant.objects.select_related("experiment__flag"),
|
Variant.objects.select_related("experiment__flag", "experiment__owner"),
|
||||||
pk=variant_id,
|
pk=variant_id,
|
||||||
experiment_id=experiment_id,
|
experiment_id=experiment_id,
|
||||||
)
|
)
|
||||||
v = variant_update(
|
v = variant_update(
|
||||||
variant=v,
|
variant=v,
|
||||||
|
user=user,
|
||||||
**payload.model_dump(exclude_none=True),
|
**payload.model_dump(exclude_none=True),
|
||||||
)
|
)
|
||||||
return HTTPStatus.OK, VariantOut.model_validate(v)
|
return HTTPStatus.OK, VariantOut.model_validate(v)
|
||||||
@@ -233,12 +237,13 @@ def delete_variant(
|
|||||||
experiment_id: UUID,
|
experiment_id: UUID,
|
||||||
variant_id: UUID,
|
variant_id: UUID,
|
||||||
) -> tuple[HTTPStatus, None]:
|
) -> tuple[HTTPStatus, None]:
|
||||||
|
user = _get_user(request)
|
||||||
v = get_object_or_404(
|
v = get_object_or_404(
|
||||||
Variant,
|
Variant.objects.select_related("experiment__owner"),
|
||||||
pk=variant_id,
|
pk=variant_id,
|
||||||
experiment_id=experiment_id,
|
experiment_id=experiment_id,
|
||||||
)
|
)
|
||||||
variant_delete(variant=v)
|
variant_delete(variant=v, user=user)
|
||||||
return HTTPStatus.NO_CONTENT, None
|
return HTTPStatus.NO_CONTENT, None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ class DecideForFlagTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="control",
|
name="control",
|
||||||
value="ctrl",
|
value="ctrl",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -84,6 +85,7 @@ class DecideForFlagTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="treatment",
|
name="treatment",
|
||||||
value="treat",
|
value="treat",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -118,6 +120,7 @@ class DecideForFlagTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="control",
|
name="control",
|
||||||
value="ctrl",
|
value="ctrl",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -125,6 +128,7 @@ class DecideForFlagTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="treatment",
|
name="treatment",
|
||||||
value="treat",
|
value="treat",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -157,6 +161,7 @@ class TargetingRulesTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="control",
|
name="control",
|
||||||
value="ctrl",
|
value="ctrl",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -164,6 +169,7 @@ class TargetingRulesTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="treatment",
|
name="treatment",
|
||||||
value="treat",
|
value="treat",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -260,6 +266,7 @@ class ParticipationLimitsTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="control",
|
name="control",
|
||||||
value="ctrl",
|
value="ctrl",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -267,6 +274,7 @@ class ParticipationLimitsTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="treatment",
|
name="treatment",
|
||||||
value="treat",
|
value="treat",
|
||||||
weight=Decimal("50.00"),
|
weight=Decimal("50.00"),
|
||||||
@@ -331,6 +339,7 @@ class PartialTrafficVariantDistributionTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="control",
|
name="control",
|
||||||
value="ctrl",
|
value="ctrl",
|
||||||
weight=Decimal("10.00"),
|
weight=Decimal("10.00"),
|
||||||
@@ -338,6 +347,7 @@ class PartialTrafficVariantDistributionTest(TestCase):
|
|||||||
)
|
)
|
||||||
variant_create(
|
variant_create(
|
||||||
experiment=exp,
|
experiment=exp,
|
||||||
|
user=self.owner,
|
||||||
name="treatment",
|
name="treatment",
|
||||||
value="treat",
|
value="treat",
|
||||||
weight=Decimal("10.00"),
|
weight=Decimal("10.00"),
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ class FeatureFlag(BaseModel):
|
|||||||
RegexValidator(
|
RegexValidator(
|
||||||
regex=FLAG_KEY_PATTERN,
|
regex=FLAG_KEY_PATTERN,
|
||||||
message=(
|
message=(
|
||||||
"Key must start with a lowercase letter and contain only "
|
"Event type name must follow snake_case, "
|
||||||
"lowercase letters, digits, and underscores."
|
"camelCase, or PascalCase."
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user