diff --git a/agenda/types.py b/agenda/types.py index 0e5bfc4..1b4a27a 100644 --- a/agenda/types.py +++ b/agenda/types.py @@ -3,7 +3,7 @@ import collections import datetime import typing -from collections import defaultdict +from collections import Counter from dataclasses import dataclass, field import emoji @@ -190,12 +190,12 @@ class Trip: Any travel item with a missing or None 'distance' field is ignored. """ - transport_distances: defaultdict[str, float] = defaultdict(float) + transport_distances: Counter[float] = Counter() for item in self.travel: distance = item.get("distance") if distance: - transport_type: str = item.get("type", "unknown") + transport_type = item.get("type", "unknown") transport_distances[transport_type] += distance return list(transport_distances.items()) diff --git a/templates/macros.html b/templates/macros.html index 50e55cf..fec5da9 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -3,10 +3,6 @@ {% macro display_date(dt) %}{{ dt.strftime("%a %-d %b %Y") }}{% endmacro %} {% macro display_date_no_year(dt) %}{{ dt.strftime("%a %-d %b") }}{% endmacro %} -{% macro format_distance(distance) %} - {{ "{:,.0f} km / {:,.0f} miles".format(distance, distance / 1.60934) }} -{% endmacro %} - {% macro trip_link(trip) %} {{ trip.title }} {% endmacro %} diff --git a/templates/trip/list.html b/templates/trip/list.html index c39a516..a35ac5b 100644 --- a/templates/trip/list.html +++ b/templates/trip/list.html @@ -1,6 +1,6 @@ {% extends "base.html" %} -{% from "macros.html" import trip_link, display_date_no_year, display_date, display_datetime, display_time, format_distance with context %} +{% from "macros.html" import trip_link, display_date_no_year, display_date, display_datetime, display_time with context %} {% block title %}{{ heading }} - Edward Betts{% endblock %} @@ -52,18 +52,6 @@ {% set items = item_list | list %}

{{ heading }}

{{ items | count }} trips

- -
Total distance: {{ format_distance(total_distance) }}
- - {% for transport_type, distance in distances_by_transport_type %} -
- {{ transport_type | title }} - distance: {{format_distance(distance) }} -
- {% endfor %} - - - {% for trip in items %} {% set distances_by_transport_type = trip.distances_by_transport_type() %} {% set total_distance = trip.total_distance() %} @@ -86,17 +74,15 @@
Start: {{ display_date_no_year(trip.start) }} (end date missing)
{% endif %} {% if total_distance %} -
- Total distance: - {{ format_distance(total_distance) }} +
Total distance: + {{ "{:,.0f} km / {:,.0f} miles".format(total_distance, total_distance / 1.60934) }}
{% endif %} {% if distances_by_transport_type %} {% for transport_type, distance in distances_by_transport_type %} -
- {{ transport_type | title }} - distance: {{format_distance(distance) }} +
{{ transport_type | title }} distance: + {{ "{:,.0f} km / {:,.0f} miles".format(distance, distance / 1.60934) }}
{% endfor %} {% endif %} @@ -122,14 +108,9 @@ {% if e.element_type == "flight" %} airline: {{ e.detail.airline_name }} flight number: {{ e.detail.airline }}{{ e.detail.flight_number }} - {% if e.detail.duration %} - duration: {{ e.detail.duration }} - {% endif %} + duration: {{ e.detail.duration }} {#
{{ e.detail | pprint }}
#} {% endif %} - {% if e.detail.distance %} - distance: {{ format_distance(e.detail.distance) }} - {% endif %}
{% endif %} {% endfor %} diff --git a/web_view.py b/web_view.py index 8c30bbd..286d4ad 100755 --- a/web_view.py +++ b/web_view.py @@ -8,7 +8,6 @@ import operator import os.path import sys import traceback -from collections import defaultdict from datetime import date, datetime, timedelta import flask @@ -287,27 +286,6 @@ def trip_list() -> werkzeug.Response: return flask.redirect(flask.url_for("trip_future_list")) -def calc_total_distance(trips: list[Trip]) -> float: - """Total distance for trips.""" - total = 0.0 - for item in trips: - dist = item.total_distance() - if dist: - total += dist - - return total - - -def sum_distances_by_transport_type(trips: list[Trip]) -> list[tuple[str, float]]: - """Sum distances by transport type.""" - distances_by_transport_type: defaultdict[str, float] = defaultdict(float) - for trip in trips: - for transport_type, dist in trip.distances_by_transport_type(): - distances_by_transport_type[transport_type] += dist - - return list(distances_by_transport_type.items()) - - @app.route("/trip/past") def trip_past_list() -> str: """Page showing a list of past trips.""" @@ -329,8 +307,6 @@ def trip_past_list() -> str: get_country=agenda.get_country, format_list_with_ampersand=format_list_with_ampersand, fx_rate=agenda.fx.get_rates(app.config), - total_distance=calc_total_distance(past), - distances_by_transport_type=sum_distances_by_transport_type(past), ) @@ -361,8 +337,6 @@ def trip_future_list() -> str: get_country=agenda.get_country, format_list_with_ampersand=format_list_with_ampersand, fx_rate=agenda.fx.get_rates(app.config), - total_distance=calc_total_distance(current + future), - distances_by_transport_type=sum_distances_by_transport_type(current + future), )