Include route distances on trips page
This commit is contained in:
		
							parent
							
								
									b5c1e16901
								
							
						
					
					
						commit
						fe4bde32ba
					
				| 
						 | 
					@ -23,7 +23,9 @@ def load_travel(travel_type: str, data_dir: str) -> list[StrDict]:
 | 
				
			||||||
    return items
 | 
					    return items
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def load_trains(data_dir: str) -> list[StrDict]:
 | 
					def load_trains(
 | 
				
			||||||
 | 
					    data_dir: str, route_distances: travel.RouteDistances | None = None
 | 
				
			||||||
 | 
					) -> list[StrDict]:
 | 
				
			||||||
    """Load trains."""
 | 
					    """Load trains."""
 | 
				
			||||||
    trains = load_travel("train", data_dir)
 | 
					    trains = load_travel("train", data_dir)
 | 
				
			||||||
    stations = travel.parse_yaml("stations", data_dir)
 | 
					    stations = travel.parse_yaml("stations", data_dir)
 | 
				
			||||||
| 
						 | 
					@ -43,6 +45,12 @@ def load_trains(data_dir: str) -> list[StrDict]:
 | 
				
			||||||
            leg["from_station"] = by_name[leg["from"]]
 | 
					            leg["from_station"] = by_name[leg["from"]]
 | 
				
			||||||
            leg["to_station"] = by_name[leg["to"]]
 | 
					            leg["to_station"] = by_name[leg["to"]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if route_distances:
 | 
				
			||||||
 | 
					                travel.add_leg_route_distance(leg, route_distances)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if all("distance" in leg for leg in train["legs"]):
 | 
				
			||||||
 | 
					            train["distance"] = sum(leg["distance"] for leg in train["legs"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return trains
 | 
					    return trains
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,7 +76,10 @@ def load_flights(data_dir: str) -> list[StrDict]:
 | 
				
			||||||
    return flights
 | 
					    return flights
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def build_trip_list(data_dir: str | None = None) -> list[Trip]:
 | 
					def build_trip_list(
 | 
				
			||||||
 | 
					    data_dir: str | None = None,
 | 
				
			||||||
 | 
					    route_distances: travel.RouteDistances | None = None,
 | 
				
			||||||
 | 
					) -> list[Trip]:
 | 
				
			||||||
    """Generate list of trips."""
 | 
					    """Generate list of trips."""
 | 
				
			||||||
    trips: dict[date, Trip] = {}
 | 
					    trips: dict[date, Trip] = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -80,7 +91,8 @@ def build_trip_list(data_dir: str | None = None) -> list[Trip]:
 | 
				
			||||||
    yaml_trip_lookup = {item["trip"]: item for item in yaml_trip_list}
 | 
					    yaml_trip_lookup = {item["trip"]: item for item in yaml_trip_list}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    travel_items = sorted(
 | 
					    travel_items = sorted(
 | 
				
			||||||
        load_flights(data_dir) + load_trains(data_dir), key=depart_datetime
 | 
					        load_flights(data_dir) + load_trains(data_dir, route_distances=route_distances),
 | 
				
			||||||
 | 
					        key=depart_datetime,
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    data = {
 | 
					    data = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,9 +218,11 @@ def accommodation_list() -> str:
 | 
				
			||||||
@app.route("/trip")
 | 
					@app.route("/trip")
 | 
				
			||||||
def trip_list() -> str:
 | 
					def trip_list() -> str:
 | 
				
			||||||
    """Page showing a list of trips."""
 | 
					    """Page showing a list of trips."""
 | 
				
			||||||
 | 
					    route_distances = agenda.travel.load_route_distances(app.config["DATA_DIR"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    trip_list = [
 | 
					    trip_list = [
 | 
				
			||||||
        trip
 | 
					        trip
 | 
				
			||||||
        for trip in agenda.trip.build_trip_list()
 | 
					        for trip in agenda.trip.build_trip_list(route_distances=route_distances)
 | 
				
			||||||
        if flask.g.user.is_authenticated or not trip.private
 | 
					        if flask.g.user.is_authenticated or not trip.private
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -309,9 +311,10 @@ def human_readable_delta(future_date: date) -> str | None:
 | 
				
			||||||
@app.route("/trip/<start>")
 | 
					@app.route("/trip/<start>")
 | 
				
			||||||
def trip_page(start: str) -> str:
 | 
					def trip_page(start: str) -> str:
 | 
				
			||||||
    """Individual trip page."""
 | 
					    """Individual trip page."""
 | 
				
			||||||
 | 
					    route_distances = agenda.travel.load_route_distances(app.config["DATA_DIR"])
 | 
				
			||||||
    trip_list = [
 | 
					    trip_list = [
 | 
				
			||||||
        trip
 | 
					        trip
 | 
				
			||||||
        for trip in agenda.trip.build_trip_list()
 | 
					        for trip in agenda.trip.build_trip_list(route_distances=route_distances)
 | 
				
			||||||
        if flask.g.user.is_authenticated or not trip.private
 | 
					        if flask.g.user.is_authenticated or not trip.private
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue