Source code for pydelfini.delfini_core.models.collection_authorization_change
from typing import Any
from typing import Dict
from typing import Type
from typing import TypeVar
from typing import Union
from attrs import define as _attrs_define
from ..models.collection_authorization_remove_identity import (
CollectionAuthorizationRemoveIdentity,
)
from ..models.collection_authorization_set_identity import (
CollectionAuthorizationSetIdentity,
)
from ..models.collection_authorization_update_access_level import (
CollectionAuthorizationUpdateAccessLevel,
)
T = TypeVar("T", bound="CollectionAuthorizationChange")
[docs]
@_attrs_define
class CollectionAuthorizationChange:
"""CollectionAuthorizationChange model
Attributes:
req (Union['CollectionAuthorizationRemoveIdentity', 'CollectionAuthorizationSetIdentity',
'CollectionAuthorizationUpdateAccessLevel']):
"""
req: Union[
"CollectionAuthorizationRemoveIdentity",
"CollectionAuthorizationSetIdentity",
"CollectionAuthorizationUpdateAccessLevel",
]
[docs]
def to_dict(self) -> Dict[str, Any]:
"""Convert to a dict"""
req: Dict[str, Any]
if isinstance(self.req, CollectionAuthorizationSetIdentity):
req = self.req.to_dict()
elif isinstance(self.req, CollectionAuthorizationRemoveIdentity):
req = self.req.to_dict()
else:
req = self.req.to_dict()
field_dict: Dict[str, Any] = {}
field_dict.update(
{
"req": req,
}
)
return field_dict
[docs]
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
"""Create an instance of :py:class:`CollectionAuthorizationChange` from a dict"""
d = src_dict.copy()
def _parse_req(
data: object,
) -> Union[
"CollectionAuthorizationRemoveIdentity",
"CollectionAuthorizationSetIdentity",
"CollectionAuthorizationUpdateAccessLevel",
]:
try:
if not isinstance(data, dict):
raise TypeError()
req_type_0 = CollectionAuthorizationSetIdentity.from_dict(data)
return req_type_0
except: # noqa: E722
pass
try:
if not isinstance(data, dict):
raise TypeError()
req_type_1 = CollectionAuthorizationRemoveIdentity.from_dict(data)
return req_type_1
except: # noqa: E722
pass
if not isinstance(data, dict):
raise TypeError()
req_type_2 = CollectionAuthorizationUpdateAccessLevel.from_dict(data)
return req_type_2
req = _parse_req(d.pop("req"))
collection_authorization_change = cls(
req=req,
)
return collection_authorization_change