Source code for pydelfini.delfini_core.models.session_user

from typing import Any
from typing import cast
from typing import Dict
from typing import List
from typing import Type
from typing import TypeVar
from typing import Union

from attrs import define as _attrs_define

from ..models.identity import Identity
from ..models.operations import Operations
from ..models.session_user_metadata import SessionUserMetadata
from ..types import UNSET
from ..types import Unset


T = TypeVar("T", bound="SessionUser")


[docs] @_attrs_define class SessionUser: """SessionUser model Attributes: identity (Identity): metadata (SessionUserMetadata): name (str): account_id (Union[Unset, str]): email (Union[Unset, str]): has_operations (Union[Unset, List[Union[Operations, str]]]): image (Union[Unset, str]): """ identity: "Identity" metadata: "SessionUserMetadata" name: str account_id: Union[Unset, str] = UNSET email: Union[Unset, str] = UNSET has_operations: Union[Unset, List[Union[Operations, str]]] = UNSET image: Union[Unset, str] = UNSET
[docs] def to_dict(self) -> Dict[str, Any]: """Convert to a dict""" identity = self.identity.to_dict() metadata = self.metadata.to_dict() name = self.name account_id = self.account_id email = self.email has_operations: Union[Unset, List[str]] = UNSET if not isinstance(self.has_operations, Unset): has_operations = [] for has_operations_item_data in self.has_operations: has_operations_item: str if isinstance(has_operations_item_data, Operations): has_operations_item = has_operations_item_data.value else: has_operations_item = has_operations_item_data has_operations.append(has_operations_item) image = self.image field_dict: Dict[str, Any] = {} field_dict.update( { "identity": identity, "metadata": metadata, "name": name, } ) if account_id is not UNSET: field_dict["account_id"] = account_id if email is not UNSET: field_dict["email"] = email if has_operations is not UNSET: field_dict["has_operations"] = has_operations if image is not UNSET: field_dict["image"] = image return field_dict
[docs] @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: """Create an instance of :py:class:`SessionUser` from a dict""" d = src_dict.copy() identity = Identity.from_dict(d.pop("identity")) metadata = SessionUserMetadata.from_dict(d.pop("metadata")) name = d.pop("name") account_id = d.pop("account_id", UNSET) email = d.pop("email", UNSET) has_operations = [] _has_operations = d.pop("has_operations", UNSET) for has_operations_item_data in _has_operations or []: def _parse_has_operations_item(data: object) -> Union[Operations, str]: try: if not isinstance(data, str): raise TypeError() has_operations_item_type_0 = Operations(data) return has_operations_item_type_0 except: # noqa: E722 pass return cast(Union[Operations, str], data) has_operations_item = _parse_has_operations_item(has_operations_item_data) has_operations.append(has_operations_item) image = d.pop("image", UNSET) session_user = cls( identity=identity, metadata=metadata, name=name, account_id=account_id, email=email, has_operations=has_operations, image=image, ) return session_user