Clarify missing Eurostar price states

This commit is contained in:
Edward Betts 2026-05-26 12:55:32 +01:00
parent ed8a5626a4
commit 2b475aa726
4 changed files with 122 additions and 6 deletions

30
app.py
View file

@ -261,15 +261,29 @@ def _eurostar_prices_by_row(
if service.get("price") is not None
else None
),
"es_standard_status": _eurostar_price_status(
service.get("price"), service.get("seats")
),
"es_plus": (
{"price": service.get("plus_price"), "seats": service.get("plus_seats")}
if service.get("plus_price") is not None
else None
),
"es_plus_status": _eurostar_price_status(
service.get("plus_price"), service.get("plus_seats")
),
}
return prices
def _eurostar_price_status(price: Any, seats: Any) -> str | None:
if price is not None:
return None
if seats == 0:
return "sold_out"
return "price_not_returned"
def _get_defaults() -> tuple[int, int]:
return (
app.config["DEFAULT_MIN_CONNECTION"],
@ -300,6 +314,9 @@ def _section_trip_fares(section: dict[str, Any]) -> dict[str, Any]:
if row.get("eurostar_price") is not None
else None
)
es_std_status = _eurostar_price_status(
row.get("eurostar_price"), row.get("eurostar_seats")
)
es_plus = (
{
"price": row["eurostar_plus_price"],
@ -308,13 +325,18 @@ def _section_trip_fares(section: dict[str, Any]) -> dict[str, Any]:
if row.get("eurostar_plus_price") is not None
else None
)
es_plus_status = _eurostar_price_status(
row.get("eurostar_plus_price"), row.get("eurostar_plus_seats")
)
trip_fares[row["row_key"]] = {
"section": section["id"],
"eurostar_key": row.get("eurostar_key"),
"advance_key": row.get("depart_bristol") or row.get("depart_paddington"),
"walkon": walkon,
"es_standard": es_std,
"es_standard_status": es_std_status,
"es_plus": es_plus,
"es_plus_status": es_plus_status,
"circle_fare": circle_fare,
}
return trip_fares
@ -1268,6 +1290,9 @@ def _results(
if row.get("eurostar_price") is not None
else None
)
es_std_status = _eurostar_price_status(
row.get("eurostar_price"), row.get("eurostar_seats")
)
es_plus = (
{
"price": row["eurostar_plus_price"],
@ -1276,6 +1301,9 @@ def _results(
if row.get("eurostar_plus_price") is not None
else None
)
es_plus_status = _eurostar_price_status(
row.get("eurostar_plus_price"), row.get("eurostar_plus_seats")
)
trip_fares[row["row_key"]] = {
"section": section["id"],
"eurostar_key": row.get("eurostar_key"),
@ -1283,7 +1311,9 @@ def _results(
or row.get("depart_paddington"),
"walkon": walkon,
"es_standard": es_std,
"es_standard_status": es_std_status,
"es_plus": es_plus,
"es_plus_status": es_plus_status,
"circle_fare": circle_fare,
}