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,
)