Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions api/app/pagination.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response

from util.engine_models.identities.models import IdentityModel
from edge_api.identities.models import EdgeIdentity


class CustomPagination(PageNumberPagination):
Expand All @@ -27,7 +27,7 @@ def paginate_queryset(self, dynamo_queryset, request, view=None): # type: ignor
)

return [
IdentityModel.model_validate(identity_document)
EdgeIdentity.from_identity_document(identity_document)
for identity_document in dynamo_queryset["Items"]
]

Expand Down
10 changes: 4 additions & 6 deletions api/e2etests/e2e_seed_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
from organisations.subscriptions.constants import ENTERPRISE
from projects.models import Project, UserProjectPermission
from users.models import FFAdminUser, UserPermissionGroup
from util.engine_models.identities.models import IdentityModel as EngineIdentity

# Password used by all the test users
PASSWORD = "Str0ngp4ssw0rd!"
Expand Down Expand Up @@ -208,10 +207,9 @@ def seed_data() -> None:

for identity_info in identities_test_data:
if settings.IDENTITIES_TABLE_NAME_DYNAMO:
engine_identity = EngineIdentity( # pragma: no cover
identifier=identity_info["identifier"],
environment_api_key=identity_info["environment"].api_key,
)
EdgeIdentity(engine_identity).save() # pragma: no cover
EdgeIdentity.create( # pragma: no cover
identity_info["identifier"],
identity_info["environment"].api_key,
).save()
else:
Identity.objects.create(**identity_info)
5 changes: 3 additions & 2 deletions api/edge_api/identities/edge_identity_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from environments.dynamodb.types import (
IdentityOverrideV2,
)
from util.mappers import map_identity_override_document_to_identity_override

ddb_environment_v2_wrapper = DynamoEnvironmentV2Wrapper()

Expand All @@ -20,7 +21,7 @@ def get_edge_identity_overrides(
)
)
return [
IdentityOverrideV2.model_validate(
map_identity_override_document_to_identity_override(
{**item, "environment_id": str(item["environment_id"])}
)
for item in override_items
Expand Down Expand Up @@ -49,4 +50,4 @@ def get_overridden_feature_ids_for_edge_identity(identity_uuid: str) -> set[int]
except ObjectDoesNotExist:
return set()
identity = EdgeIdentity.from_identity_document(identity_document)
return {fs.feature.id for fs in identity.feature_overrides}
return {int(fs["feature"]["id"]) for fs in identity.feature_overrides}
4 changes: 4 additions & 0 deletions api/edge_api/identities/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@

class TraitPersistenceError(APIException):
status_code = status.HTTP_400_BAD_REQUEST


class DuplicateFeatureState(ValueError):
pass
4 changes: 2 additions & 2 deletions api/edge_api/identities/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
from decimal import Decimal

from django.utils import timezone
from flag_engine.context.mappers import map_any_value_to_context_value

from edge_api.identities.models import EdgeIdentity
from environments.identities.traits.models import Trait
from features.models import Feature, FeatureState
from features.multivariate.models import MultivariateFeatureOption
from util.engine_models.identities.traits.types import map_any_value_to_trait_value

EXPORT_EDGE_IDENTITY_PAGINATION_LIMIT = 20000

Expand Down Expand Up @@ -122,7 +122,7 @@ def get_mv_feature_option_uuid_cache(environment_api_key: str) -> dict[int, str]


def export_edge_trait(trait: dict, identifier: str, environment_api_key: str) -> dict: # type: ignore[type-arg]
trait_value = map_any_value_to_trait_value(trait["trait_value"])
trait_value = map_any_value_to_context_value(trait["trait_value"])
trait_value_data = Trait.generate_trait_value_data(trait_value)
return {
"model": "traits.trait",
Expand Down
Loading
Loading