diff --git a/livestyled/models/__init__.py b/livestyled/models/__init__.py index 59bbb1a..b525066 100644 --- a/livestyled/models/__init__.py +++ b/livestyled/models/__init__.py @@ -54,7 +54,7 @@ from livestyled.models.ticket import Ticket from livestyled.models.ticket_auth import TicketAuth from livestyled.models.ticket_integration import TicketIntegration -from livestyled.models.user import User, UserAlias, UserEmail, UserInfo, UserSSO +from livestyled.models.user import User, UserAlias, UserAliasType, UserEmail, UserInfo, UserSSO from livestyled.models.venue import Venue from livestyled.models.widget import Widget, WidgetVariation @@ -117,6 +117,7 @@ TicketAuth, TicketIntegration, UserAlias, + UserAliasType, UserEmail, UserInfo, User, diff --git a/livestyled/models/user.py b/livestyled/models/user.py index fc4a11b..1e994ed 100644 --- a/livestyled/models/user.py +++ b/livestyled/models/user.py @@ -265,16 +265,39 @@ def user(self): return self._user +class UserAliasType: + def __init__( + self, + id: int, + user_alias_type: str + ): + self.id = id + self.user_alias_type = user_alias_type + + @classmethod + def placeholder( + cls, + id + ): + return cls( + id=id + ) + + class UserAlias: def __init__( self, user_alias_type, user, - value + value, + updated_at: datetime, + created_at: datetime ): - self.user_alias_type = user_alias_type + self.user_alias_type = User.placeholder(int(user_alias_type)) self.user = User.placeholder(int(user)) self.value = value + self.created_at = created_at + self.updated_at = updated_at @classmethod def create_new( @@ -286,7 +309,9 @@ def create_new( user_alias = UserAlias( user=user, user_alias_type=user_alias_type, - value=value + value=value, + updated_at=None, + created_at=None ) return user_alias diff --git a/livestyled/schemas/user.py b/livestyled/schemas/user.py index 917d5b5..9174e27 100644 --- a/livestyled/schemas/user.py +++ b/livestyled/schemas/user.py @@ -1,6 +1,6 @@ from marshmallow import EXCLUDE, fields, Schema -from livestyled.models.user import User, UserAlias, UserConsent, UserEmail, UserInfo, UserSSO +from livestyled.models.user import User, UserAlias, UserAliasType, UserConsent, UserEmail, UserInfo, UserSSO from livestyled.schemas.cohort import CohortSchema from livestyled.schemas.device import DeviceSchema from livestyled.schemas.fields import RelatedResourceField, RelatedResourceLinkField @@ -61,7 +61,9 @@ class Meta: class UserAliasTypeSchema(Schema): class Meta: unknown = EXCLUDE - model = UserAlias + api_type = 'user_alias_types' + url = 'user_management/user_alias_types' + model = UserAliasType user_alias_type = fields.String(data_key='userAliasType', missing=None, allow_none=True) @@ -69,12 +71,15 @@ class Meta: class UserAliasSchema(Schema): class Meta: unknown = EXCLUDE - api_type = 'user_alias' + api_type = 'user_aliases' url = 'user_management/user_aliases' model = UserAlias - value = fields.String(data_key='value', missing=None, allow_none=True) - user_alias_type = RelatedResourceLinkField(schema=UserAliasTypeSchema, data_key='userAliasType') + id = fields.Int() + user_alias_type = RelatedResourceLinkField(data_key='userAliasType', schema=UserAliasTypeSchema, microservice_aware=True) + value = fields.String(missing=None) + updated_at = fields.AwareDateTime(data_key='updatedAt', allow_none=True, missing=None) + created_at = fields.AwareDateTime(data_key='createdAt', allow_none=True, missing=None) class UserSchema(Schema): @@ -99,7 +104,7 @@ class Meta: user_emails = RelatedResourceField(schema=UserEmailSchema, data_key='userEmails', many=True) user_consent = RelatedResourceField(schema=UserConsentSchema, data_key='userConsent') token = fields.String(missing=None) - user_aliases = RelatedResourceLinkField(schema=UserAliasSchema, many=True) + user_aliases = RelatedResourceLinkField(schema=UserAliasSchema, data_key='userAliases', many=True) class UserSSOSchema(Schema):