from dataclasses import dataclass, field from typing import List, Union, Optional import marshmallow_dataclass from api import ma from constants.pagination import PAGE_LIMIT_DEFAULT from marshmallow import validate from artists.schemas import LabelArtistResponse @dataclass class TeamMemberUserResponse: id: int name: str email: str avatarUrl: Union[str, None] = field(default=None) @dataclass class ArtistShortResponse: id: str # external_id name: str @dataclass class TeamMemberPermissionsResponse: user: TeamMemberUserResponse role: int artists: List[ArtistShortResponse] def __init__(self, user_id, user_name, user_email, role: int, artists: List): self.user = TeamMemberUserResponse( user_id, user_name, user_email, None ) self.role = role self.artists = [ArtistShortResponse(artist["id"], artist["name"]) for artist in artists if artist] team_member_permissions_response = marshmallow_dataclass.class_schema( TeamMemberPermissionsResponse, base_schema=ma.Schema ) @dataclass class LabelPermissionsCounterResponse: teamMembers: int artists: int def __init__(self, team_members, artists): self.teamMembers = team_members self.artists = artists label_permissions_counter_response = marshmallow_dataclass.class_schema( LabelPermissionsCounterResponse, base_schema=ma.Schema ) @dataclass class TeamMemberPermissionsUserResponse(TeamMemberUserResponse): role: int = field(default_factory=int) @dataclass class LabelPermissionsArtistResponse: artist: LabelArtistResponse teamMembers: List[TeamMemberPermissionsUserResponse] = field(default_factory=list) label_permissions_artist_response = marshmallow_dataclass.class_schema( LabelPermissionsArtistResponse, base_schema=ma.Schema ) @dataclass class LabelArtistTeamsRequestModel: artistId: List[str] label_artist_team_request_model = marshmallow_dataclass.class_schema( LabelArtistTeamsRequestModel, base_schema=ma.Schema ) @dataclass class LabelUsersArtistTeamsRequestModel: userId: List[int] label_users_artist_team_request_model = marshmallow_dataclass.class_schema( LabelUsersArtistTeamsRequestModel, base_schema=ma.Schema )