42 lines
843 B
Python
42 lines
843 B
Python
from datetime import date, datetime
|
|
|
|
from pydantic import BaseModel
|
|
from slugify import slugify
|
|
|
|
|
|
class Country(BaseModel):
|
|
name: str
|
|
code: str
|
|
|
|
|
|
class City(BaseModel):
|
|
id: int
|
|
name: str
|
|
country: Country
|
|
|
|
|
|
class Fare(BaseModel):
|
|
amount: float
|
|
currency: str
|
|
|
|
|
|
class Result(BaseModel):
|
|
departure: datetime
|
|
arrival: datetime
|
|
origin: str
|
|
destination: str
|
|
fare: Fare
|
|
type: str
|
|
source_id: int
|
|
destination_id: int
|
|
free_seats: int
|
|
carrier: str
|
|
|
|
@property
|
|
def slug(self) -> str:
|
|
return self.slugify(self.origin, self.destination, self.departure.date(), self.fare.currency)
|
|
|
|
@staticmethod
|
|
def slugify(origin: str, destination: str, departure: date, currency: str) -> str:
|
|
return slugify(" ".join([origin, destination, departure.isoformat(), currency]))
|