diff --git a/agenda/types.py b/agenda/types.py index 0f4c086..50a2612 100644 --- a/agenda/types.py +++ b/agenda/types.py @@ -43,6 +43,12 @@ class TripElement: detail: StrDict +def airport_label(airport: StrDict) -> str: + """Airport label: name and iata.""" + name = airport.get("alt_name") or airport["city"] + return f"{name} ({airport['iata']})" + + @dataclass class Trip: """Trip.""" @@ -204,12 +210,9 @@ class Trip: for item in self.travel: if item["type"] == "flight": - flight_from = item["from_airport"] - flight_to = item["to_airport"] name = ( - "✈️ " - + f"{flight_from['name']} ({flight_from['iata']}) -> " - + f"{flight_to['name']} ({flight_to['iata']})" + f"✈️ {airport_label(item['from_airport'])} → " + + f"{airport_label(item['to_airport'])}" ) elements.append( @@ -221,17 +224,18 @@ class Trip: ) ) if item["type"] == "train": - name = f"{item['from']} -> {item['to']}" - elements.append( - TripElement( - when=item["depart"], - title=name, - detail=item, - element_type="train", + for leg in item["legs"]: + name = f"{leg['from']} → {leg['to']}" + elements.append( + TripElement( + when=leg["depart"], + title=name, + detail=leg, + element_type="train", + ) ) - ) if item["type"] == "ferry": - name = f"{item['from']} -> {item['to']}" + name = f"{item['from']} → {item['to']}" elements.append( TripElement( when=item["depart"],