Move flag display to trip list template

This commit is contained in:
Edward Betts 2024-05-27 11:10:53 +02:00
parent 75242c2952
commit 537a84ff67
2 changed files with 20 additions and 17 deletions

View file

@ -45,6 +45,8 @@ class TripElement:
end_time: DateOrDateTime | None = None end_time: DateOrDateTime | None = None
start_loc: str | None = None start_loc: str | None = None
end_loc: str | None = None end_loc: str | None = None
start_country: Country | None = None
end_country: Country | None = None
def get_emoji(self) -> str | None: def get_emoji(self) -> str | None:
"""Emoji for trip element.""" """Emoji for trip element."""
@ -63,9 +65,7 @@ class TripElement:
def airport_label(airport: StrDict) -> str: def airport_label(airport: StrDict) -> str:
"""Airport label: name and iata.""" """Airport label: name and iata."""
name = airport.get("alt_name") or airport["city"] name = airport.get("alt_name") or airport["city"]
country = agenda.get_country(airport["country"]) return f"{name} ({airport['iata']})"
assert country and country.flag
return f"{name} ({airport['iata']}) {country.flag}"
@dataclass @dataclass
@ -234,6 +234,9 @@ class Trip:
+ f"{airport_label(item['to_airport'])}" + f"{airport_label(item['to_airport'])}"
) )
from_country = agenda.get_country(item["from_airport"]["country"])
to_country = agenda.get_country(item["to_airport"]["country"])
elements.append( elements.append(
TripElement( TripElement(
start_time=item["depart"], start_time=item["depart"],
@ -243,6 +246,8 @@ class Trip:
element_type="flight", element_type="flight",
start_loc=airport_label(item["from_airport"]), start_loc=airport_label(item["from_airport"]),
end_loc=airport_label(item["to_airport"]), end_loc=airport_label(item["to_airport"]),
start_country=from_country,
end_country=to_country,
) )
) )
if item["type"] == "train": if item["type"] == "train":
@ -251,9 +256,7 @@ class Trip:
to_country = agenda.get_country(leg["to_station"]["country"]) to_country = agenda.get_country(leg["to_station"]["country"])
assert from_country and to_country assert from_country and to_country
from_flag = from_country.flag name = f"{leg['from']}{leg['to']}"
to_flag = to_country.flag
name = f"{leg['from']} {from_flag}{leg['to']} {to_flag}"
elements.append( elements.append(
TripElement( TripElement(
start_time=leg["depart"], start_time=leg["depart"],
@ -261,19 +264,17 @@ class Trip:
title=name, title=name,
detail=leg, detail=leg,
element_type="train", element_type="train",
start_loc=f"{leg['from']} {from_flag}", start_loc=leg["from"],
end_loc=f"{leg['to']} {to_flag}", end_loc=leg["to"],
start_country=from_country,
end_country=to_country,
) )
) )
if item["type"] == "ferry": if item["type"] == "ferry":
from_country = agenda.get_country(item["from_terminal"]["country"]) from_country = agenda.get_country(item["from_terminal"]["country"])
to_country = agenda.get_country(item["to_terminal"]["country"]) to_country = agenda.get_country(item["to_terminal"]["country"])
assert from_country and to_country name = f"{item['from']}{item['to']}"
from_flag = from_country.flag
to_flag = to_country.flag
name = f"{item['from']} {from_flag}{item['to']} {to_flag}"
elements.append( elements.append(
TripElement( TripElement(
start_time=item["depart"], start_time=item["depart"],
@ -281,8 +282,10 @@ class Trip:
title=name, title=name,
detail=item, detail=item,
element_type="ferry", element_type="ferry",
start_loc=f"{item['from']} {from_flag}", start_loc=item["from"],
end_loc=f"{item['to']} {to_flag}", end_loc=item["to"],
start_country=from_country,
end_country=to_country,
) )
) )

View file

@ -118,11 +118,11 @@
{{ e.get_emoji() }} {{ e.get_emoji() }}
{{ display_time(e.start_time) }} {{ display_time(e.start_time) }}
– –
{{ e.start_loc }} {{ e.start_loc }} {{ e.start_country.flag }}
{{ display_time(e.end_time) }} {{ display_time(e.end_time) }}
– –
{{ e.end_loc }} {{ e.end_loc }} {{ e.end_country.flag }}
{% if e.element_type == "flight" %} {% if e.element_type == "flight" %}
<span class="text-nowrap"><strong>airline:</strong> {{ e.detail.airline_name }}</span> <span class="text-nowrap"><strong>airline:</strong> {{ e.detail.airline_name }}</span>
<span class="text-nowrap"><strong>flight number:</strong> {{ e.detail.airline }}{{ e.detail.flight_number }}</span> <span class="text-nowrap"><strong>flight number:</strong> {{ e.detail.airline }}{{ e.detail.flight_number }}</span>