from dataclasses import asdict, dataclass from datetime import datetime from atlas_um.auth0.schemas import UserSchema @dataclass class User: """Represents Auth0 user.""" user_id: str email: str email_verified: bool username: str phone_number: str phone_verified: bool created_at: datetime updated_at: datetime identities: list app_metadata: dict user_metadata: dict picture: str name: str nickname: str multifactor: list last_ip: str last_login: datetime logins_count: int blocked: bool given_name: str family_name: str def __str__(self): return f"{self.user_id} - {self.email}" def __repr__(self): return f"User(<{self.user_id}>)" dict = asdict class UserList: def __init__(self, api_result): self.api_result = api_result def __eq__(self, other): if isinstance(other, UserList): return self.api_result == other.api_result else: return False def __iter__(self): for user_data in self.api_result["users"]: deserialized_user_data = UserSchema().load(user_data) yield User(**deserialized_user_data) def __len__(self): return self.length() def length(self): return self.api_result["length"] def start(self): return self.api_result["start"] def total(self): return self.api_result["total"] @dataclass class Role: """Represents Auth0 role.""" id: str name: str description: str def __str__(self): return f"{self.id} - {self.name}" dict = asdict