diff --git a/agenda/stats.py b/agenda/stats.py index 68e7122..c98cce9 100644 --- a/agenda/stats.py +++ b/agenda/stats.py @@ -16,7 +16,7 @@ def travel_legs(trip: Trip, stats: StrDict) -> None: stats.setdefault("flight_count", 0) stats.setdefault("airlines", Counter()) stats["flight_count"] += 1 - stats["airlines"][leg["airline_detail"]["name"]] += 1 + stats["airlines"][leg["airline_name"]] += 1 if leg["type"] == "train": stats.setdefault("train_count", 0) stats["train_count"] += 1 diff --git a/agenda/travel.py b/agenda/travel.py index 440e6af..51a7810 100644 --- a/agenda/travel.py +++ b/agenda/travel.py @@ -60,18 +60,11 @@ def parse_yaml(travel_type: str, data_dir: str) -> TravelList: def get_flights(data_dir: str) -> list[Event]: """Get travel events.""" bookings = parse_yaml("flights", data_dir) - airlines = parse_yaml("airlines", data_dir) - by_iata = {a["iata"]: a for a in airlines} events = [] for booking in bookings: for item in booking["flights"]: if not item["depart"].date(): continue - airline = by_iata[item["airline"]] - item["airline_code"] = airline[ - "iata" if not airline.get("flight_number_prefer_icao") else "icao" - ] - e = Event( date=item["depart"], end_date=item.get("arrive"), @@ -102,7 +95,7 @@ def get_trains(data_dir: str) -> list[Event]: def flight_number(flight: Leg) -> str: """Flight number.""" - airline_code = flight["airline_code"] + airline_code = flight["airline"] # make sure this is the airline code, not the airline name assert " " not in airline_code and not any(c.islower() for c in airline_code) diff --git a/agenda/trip.py b/agenda/trip.py index 90e9997..bf110b4 100644 --- a/agenda/trip.py +++ b/agenda/trip.py @@ -13,14 +13,6 @@ from agenda import travel from agenda.types import StrDict, Trip -class Airline(typing.TypedDict, total=False): - """Airline.""" - - iata: str - icao: str - name: str - - def load_travel(travel_type: str, plural: str, data_dir: str) -> list[StrDict]: """Read flight and train journeys.""" items = travel.parse_yaml(plural, data_dir) @@ -93,7 +85,7 @@ def depart_datetime(item: StrDict) -> datetime: def process_flight( - flight: StrDict, by_iata: dict[str, Airline], airports: list[StrDict] + flight: StrDict, iata: dict[str, str], airports: list[StrDict] ) -> None: """Add airport detail, airline name and distance to flight.""" if flight["from"] in airports: @@ -101,11 +93,7 @@ def process_flight( if flight["to"] in airports: flight["to_airport"] = airports[flight["to"]] if "airline" in flight: - airline = by_iata[flight["airline"]] - flight["airline_detail"] = airline - flight["airline_code"] = airline[ - "iata" if not airline.get("flight_number_prefer_icao") else "icao" - ] + flight["airline_name"] = iata.get(flight["airline"], "[unknown]") flight["distance"] = travel.flight_distance(flight) @@ -114,11 +102,11 @@ def load_flight_bookings(data_dir: str) -> list[StrDict]: """Load flight bookings.""" bookings = load_travel("flight", "flights", data_dir) airlines = yaml.safe_load(open(os.path.join(data_dir, "airlines.yaml"))) - by_iata = {a["iata"]: a for a in airlines} + iata = {a["iata"]: a["name"] for a in airlines} airports = travel.parse_yaml("airports", data_dir) for booking in bookings: for flight in booking["flights"]: - process_flight(flight, by_iata, airports) + process_flight(flight, iata, airports) return bookings diff --git a/templates/macros.html b/templates/macros.html index a7b67a7..fad26d3 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -118,7 +118,7 @@ {% endfor %} {% for item in booking.flights %} - {% set full_flight_number = item.airline_code + item.flight_number %} + {% set full_flight_number = item.airline + item.flight_number %} {% set radarbox_url = "https://www.radarbox.com/data/flights/" + full_flight_number %}
@@ -147,7 +147,7 @@ {% endmacro %} {% macro flight_row(item) %} - {% set full_flight_number = item.airline_code + item.flight_number %} + {% set full_flight_number = item.airline + item.flight_number %} {% set radarbox_url = "https://www.radarbox.com/data/flights/" + full_flight_number %}