34 lines
891 B
Python
34 lines
891 B
Python
from typing import Optional
|
|
|
|
|
|
class Cruise:
|
|
name: Optional[str]
|
|
url: Optional[str]
|
|
start_date: Optional[datetime]
|
|
end_date: Optional[datetime]
|
|
itinerary: Optional[List[Optional[Tuple[str, str]]]]
|
|
|
|
@property
|
|
def days(self) -> Optional[int]:
|
|
if self.end_date and self.start_date:
|
|
return (self.end_date - self.start_date).days
|
|
|
|
@classmethod
|
|
def from_dict(cls, indict: dict):
|
|
obj = cls()
|
|
obj.name = indict.get("name")
|
|
obj.url = indict.get("url")
|
|
obj.start_date = indict.get("start_date")
|
|
obj.end_date = indict.get("end_date")
|
|
|
|
if "itinerary" in indict:
|
|
obj.itinerary = []
|
|
|
|
for item in indict["itinerary"].values():
|
|
obj.itinerary.append((item["port"], item["date"]))
|
|
|
|
return obj
|
|
|
|
def __repr__(self):
|
|
return self.__dict__.__repr__()
|