From 23aa70bb84e0bc8386263e807983a0dc39e4a4cd Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Mon, 5 Aug 2024 14:03:37 +0200 Subject: [PATCH] Add option to filter launches by orbit --- templates/launches.html | 15 +++++++++++++++ web_view.py | 12 ++++++++++++ 2 files changed, 27 insertions(+) diff --git a/templates/launches.html b/templates/launches.html index 1756424..2adcfc3 100644 --- a/templates/launches.html +++ b/templates/launches.html @@ -39,6 +39,21 @@ {% endfor %}

+

Orbit: + {% if request.args.orbit %}🗙{% endif %} + + {% for name, abbrev in orbits | sort %} + {% if abbrev == request.args.orbit %} + {{ name }} + {% else %} + + {{ name }} + + {% endif %} + {% if not loop.last %} | {% endif %} + {% endfor %} +

+ {% for launch in launches %} {% set highlight =" bg-primary-subtle" if launch.slug in config.FOLLOW_LAUNCHES else "" %} {% set country = get_country(launch.country_code) %} diff --git a/web_view.py b/web_view.py index 3f9db56..cbfeffd 100755 --- a/web_view.py +++ b/web_view.py @@ -150,14 +150,21 @@ def launch_list() -> str: data_dir = app.config["DATA_DIR"] rocket_dir = os.path.join(data_dir, "thespacedevs") launches = agenda.thespacedevs.get_launches(rocket_dir, limit=100) + assert launches mission_type_filter = flask.request.args.get("type") rocket_filter = flask.request.args.get("rocket") + orbit_filter = flask.request.args.get("orbit") mission_types = { launch["mission"]["type"] for launch in launches if launch["mission"] } + orbits = { + (launch["orbit"]["name"], launch["orbit"]["abbrev"]) + for launch in launches + if launch.get("orbit") + } rockets = {launch["rocket"]["full_name"] for launch in launches} launches = [ @@ -168,6 +175,10 @@ def launch_list() -> str: or (launch["mission"] and launch["mission"]["type"] == mission_type_filter) ) and (not rocket_filter or launch["rocket"]["full_name"] == rocket_filter) + and ( + not orbit_filter + or (launch.get("orbit") and launch["orbit"]["abbrev"] == orbit_filter) + ) ] return flask.render_template( @@ -177,6 +188,7 @@ def launch_list() -> str: now=now, get_country=agenda.get_country, mission_types=mission_types, + orbits=orbits, )