Source code for pydelfini.delfini_core.models.user
import datetime
from typing import Any
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 dateutil.parser import isoparse
from ..models.group import Group
from ..models.user_metadata import UserMetadata
from ..models.visibility_level import VisibilityLevel
from ..types import UNSET
from ..types import Unset
T = TypeVar("T", bound="User")
[docs]
@_attrs_define
class User:
"""User model
Attributes:
account_id (str):
created_on (datetime.datetime):
metadata (UserMetadata):
subject_id (str):
user_name (str):
visibility_level (VisibilityLevel):
given_name (Union[Unset, str]):
groups (Union[Unset, List['Group']]): Names and ids of the groups this user belongs to
last_name (Union[Unset, str]):
user_email (Union[Unset, str]):
"""
account_id: str
created_on: datetime.datetime
metadata: "UserMetadata"
subject_id: str
user_name: str
visibility_level: VisibilityLevel
given_name: Union[Unset, str] = UNSET
groups: Union[Unset, List["Group"]] = UNSET
last_name: Union[Unset, str] = UNSET
user_email: Union[Unset, str] = UNSET
[docs]
def to_dict(self) -> Dict[str, Any]:
"""Convert to a dict"""
account_id = self.account_id
created_on = self.created_on.isoformat()
metadata = self.metadata.to_dict()
subject_id = self.subject_id
user_name = self.user_name
visibility_level = self.visibility_level.value
given_name = self.given_name
groups: Union[Unset, List[Dict[str, Any]]] = UNSET
if not isinstance(self.groups, Unset):
groups = []
for groups_item_data in self.groups:
groups_item = groups_item_data.to_dict()
groups.append(groups_item)
last_name = self.last_name
user_email = self.user_email
field_dict: Dict[str, Any] = {}
field_dict.update(
{
"account_id": account_id,
"created_on": created_on,
"metadata": metadata,
"subject_id": subject_id,
"user_name": user_name,
"visibility_level": visibility_level,
}
)
if given_name is not UNSET:
field_dict["given_name"] = given_name
if groups is not UNSET:
field_dict["groups"] = groups
if last_name is not UNSET:
field_dict["last_name"] = last_name
if user_email is not UNSET:
field_dict["user_email"] = user_email
return field_dict
[docs]
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
"""Create an instance of :py:class:`User` from a dict"""
d = src_dict.copy()
account_id = d.pop("account_id")
created_on = isoparse(d.pop("created_on"))
metadata = UserMetadata.from_dict(d.pop("metadata"))
subject_id = d.pop("subject_id")
user_name = d.pop("user_name")
visibility_level = VisibilityLevel(d.pop("visibility_level"))
given_name = d.pop("given_name", UNSET)
groups = []
_groups = d.pop("groups", UNSET)
for groups_item_data in _groups or []:
groups_item = Group.from_dict(groups_item_data)
groups.append(groups_item)
last_name = d.pop("last_name", UNSET)
user_email = d.pop("user_email", UNSET)
user = cls(
account_id=account_id,
created_on=created_on,
metadata=metadata,
subject_id=subject_id,
user_name=user_name,
visibility_level=visibility_level,
given_name=given_name,
groups=groups,
last_name=last_name,
user_email=user_email,
)
return user