Source code for pydelfini.delfini_core.models.item_export

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.error import Error
from ..models.item_export_checksum import ItemExportChecksum
from ..models.item_export_format import ItemExportFormat
from ..models.item_export_status import ItemExportStatus
from ..types import UNSET
from ..types import Unset


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


[docs] @_attrs_define class ItemExport: """ItemExport model Attributes: collection_id (str): created_on (datetime.datetime): format_ (ItemExportFormat): id (str): item_id (str): status (ItemExportStatus): version_id (str): checksum (Union[Unset, ItemExportChecksum]): completed_on (Union[Unset, datetime.datetime]): download_name (Union[Unset, str]): errors (Union[Unset, List['Error']]): expires_after (Union[Unset, datetime.datetime]): size (Union[Unset, int]): """ collection_id: str created_on: datetime.datetime format_: ItemExportFormat id: str item_id: str status: ItemExportStatus version_id: str checksum: Union[Unset, "ItemExportChecksum"] = UNSET completed_on: Union[Unset, datetime.datetime] = UNSET download_name: Union[Unset, str] = UNSET errors: Union[Unset, List["Error"]] = UNSET expires_after: Union[Unset, datetime.datetime] = UNSET size: Union[Unset, int] = UNSET
[docs] def to_dict(self) -> Dict[str, Any]: """Convert to a dict""" collection_id = self.collection_id created_on = self.created_on.isoformat() format_ = self.format_.value id = self.id item_id = self.item_id status = self.status.value version_id = self.version_id checksum: Union[Unset, Dict[str, Any]] = UNSET if not isinstance(self.checksum, Unset): checksum = self.checksum.to_dict() completed_on: Union[Unset, str] = UNSET if not isinstance(self.completed_on, Unset): completed_on = self.completed_on.isoformat() download_name = self.download_name errors: Union[Unset, List[Dict[str, Any]]] = UNSET if not isinstance(self.errors, Unset): errors = [] for errors_item_data in self.errors: errors_item = errors_item_data.to_dict() errors.append(errors_item) expires_after: Union[Unset, str] = UNSET if not isinstance(self.expires_after, Unset): expires_after = self.expires_after.isoformat() size = self.size field_dict: Dict[str, Any] = {} field_dict.update( { "collectionId": collection_id, "createdOn": created_on, "format": format_, "id": id, "itemId": item_id, "status": status, "versionId": version_id, } ) if checksum is not UNSET: field_dict["checksum"] = checksum if completed_on is not UNSET: field_dict["completedOn"] = completed_on if download_name is not UNSET: field_dict["downloadName"] = download_name if errors is not UNSET: field_dict["errors"] = errors if expires_after is not UNSET: field_dict["expiresAfter"] = expires_after if size is not UNSET: field_dict["size"] = size return field_dict
[docs] @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: """Create an instance of :py:class:`ItemExport` from a dict""" d = src_dict.copy() collection_id = d.pop("collectionId") created_on = isoparse(d.pop("createdOn")) format_ = ItemExportFormat(d.pop("format")) id = d.pop("id") item_id = d.pop("itemId") status = ItemExportStatus(d.pop("status")) version_id = d.pop("versionId") _checksum = d.pop("checksum", UNSET) checksum: Union[Unset, ItemExportChecksum] if isinstance(_checksum, Unset): checksum = UNSET else: checksum = ItemExportChecksum.from_dict(_checksum) _completed_on = d.pop("completedOn", UNSET) completed_on: Union[Unset, datetime.datetime] if isinstance(_completed_on, Unset): completed_on = UNSET else: completed_on = isoparse(_completed_on) download_name = d.pop("downloadName", UNSET) errors = [] _errors = d.pop("errors", UNSET) for errors_item_data in _errors or []: errors_item = Error.from_dict(errors_item_data) errors.append(errors_item) _expires_after = d.pop("expiresAfter", UNSET) expires_after: Union[Unset, datetime.datetime] if isinstance(_expires_after, Unset): expires_after = UNSET else: expires_after = isoparse(_expires_after) size = d.pop("size", UNSET) item_export = cls( collection_id=collection_id, created_on=created_on, format_=format_, id=id, item_id=item_id, status=status, version_id=version_id, checksum=checksum, completed_on=completed_on, download_name=download_name, errors=errors, expires_after=expires_after, size=size, ) return item_export