From 8032cd2ed4702507c01b7477edf88ae32b1a3755 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Mon, 5 Aug 2024 14:02:45 +0200 Subject: [PATCH 1/2] Increase rocket lanuch limit from 200 to 500 --- agenda/thespacedevs.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/agenda/thespacedevs.py b/agenda/thespacedevs.py index 8168d8c..acc6758 100644 --- a/agenda/thespacedevs.py +++ b/agenda/thespacedevs.py @@ -15,8 +15,10 @@ Summary = dict[str, typing.Any] ttl = 60 * 60 * 2 # two hours +LIMIT = 500 -def next_launch_api_data(rocket_dir: str, limit: int = 200) -> StrDict | None: + +def next_launch_api_data(rocket_dir: str, limit: int = LIMIT) -> StrDict | None: """Get the next upcoming launches from the API.""" now = datetime.now() filename = os.path.join(rocket_dir, now.strftime("%Y-%m-%d_%H:%M:%S.json")) @@ -32,7 +34,7 @@ def next_launch_api_data(rocket_dir: str, limit: int = 200) -> StrDict | None: return data -def next_launch_api(rocket_dir: str, limit: int = 200) -> list[Summary] | None: +def next_launch_api(rocket_dir: str, limit: int = LIMIT) -> list[Summary] | None: """Get the next upcoming launches from the API.""" data = next_launch_api_data(rocket_dir, limit) if not data: @@ -157,7 +159,7 @@ def read_cached_launches(rocket_dir: str) -> list[Summary]: def get_launches( - rocket_dir: str, limit: int = 200, refresh: bool = False + rocket_dir: str, limit: int = LIMIT, refresh: bool = False ) -> list[Summary] | None: """Get rocket launches with caching.""" now = datetime.now() From 23aa70bb84e0bc8386263e807983a0dc39e4a4cd Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Mon, 5 Aug 2024 14:03:37 +0200 Subject: [PATCH 2/2] 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, )