parent
2b3e4f8d72
commit
9800030201
|
@ -188,52 +188,6 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<h3>Space launches</h3>
|
|
||||||
{% for launch in rockets %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-1 text-nowrap text-md-end">{{ launch.t0_date }}
|
|
||||||
|
|
||||||
<br class="d-none d-md-block"/>
|
|
||||||
{% if launch.t0_time %}
|
|
||||||
{{ launch.t0_time }}{% endif %}
|
|
||||||
{{ launch.net_precision }}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-1 text-md-nowrap">
|
|
||||||
<span class="d-md-none">launch status:</span>
|
|
||||||
<abbr title="{{ launch.status.name }}">{{ launch.status.abbrev }}</abbr>
|
|
||||||
</div>
|
|
||||||
<div class="col">{{ launch.rocket }}
|
|
||||||
–
|
|
||||||
<strong>{{launch.mission.name }}</strong>
|
|
||||||
–
|
|
||||||
|
|
||||||
{% if launch.launch_provider_abbrev %}
|
|
||||||
<abbr title="{{ launch.launch_provider }}">{{ launch.launch_provider_abbrev }}</abbr>
|
|
||||||
{% else %}
|
|
||||||
{{ launch.launch_provider }}
|
|
||||||
{% endif %}
|
|
||||||
({{ launch.launch_provider_type }})
|
|
||||||
—
|
|
||||||
{{ launch.orbit.name }} ({{ launch.orbit.abbrev }})
|
|
||||||
<br/>
|
|
||||||
{% if launch.pad_wikipedia_url %}
|
|
||||||
<a href="{{ launch.pad_wikipedia_url }}">{{ launch.pad_name }}</a>
|
|
||||||
{% else %}
|
|
||||||
{{ launch.pad_name }} {% if launch.pad_name != "Unknown Pad" %}(no Wikipedia article){% endif %}
|
|
||||||
{% endif %}
|
|
||||||
— {{ launch.location }}<br/>
|
|
||||||
|
|
||||||
{% if launch.mission %}
|
|
||||||
{% for line in launch.mission.description.splitlines() %}
|
|
||||||
<p>{{ line }}</p>
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
<p>No description.</p>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
53
templates/launches.html
Normal file
53
templates/launches.html
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="container-fluid mt-2">
|
||||||
|
<h1>Space launches</h1>
|
||||||
|
|
||||||
|
{% for launch in rockets %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-1 text-nowrap text-md-end">{{ launch.t0_date }}
|
||||||
|
|
||||||
|
<br class="d-none d-md-block"/>
|
||||||
|
{% if launch.t0_time %}
|
||||||
|
{{ launch.t0_time }}{% endif %}
|
||||||
|
{{ launch.net_precision }}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-1 text-md-nowrap">
|
||||||
|
<span class="d-md-none">launch status:</span>
|
||||||
|
<abbr title="{{ launch.status.name }}">{{ launch.status.abbrev }}</abbr>
|
||||||
|
</div>
|
||||||
|
<div class="col">{{ launch.rocket }}
|
||||||
|
–
|
||||||
|
<strong>{{launch.mission.name }}</strong>
|
||||||
|
–
|
||||||
|
|
||||||
|
{% if launch.launch_provider_abbrev %}
|
||||||
|
<abbr title="{{ launch.launch_provider }}">{{ launch.launch_provider_abbrev }}</abbr>
|
||||||
|
{% else %}
|
||||||
|
{{ launch.launch_provider }}
|
||||||
|
{% endif %}
|
||||||
|
({{ launch.launch_provider_type }})
|
||||||
|
—
|
||||||
|
{{ launch.orbit.name }} ({{ launch.orbit.abbrev }})
|
||||||
|
<br/>
|
||||||
|
{% if launch.pad_wikipedia_url %}
|
||||||
|
<a href="{{ launch.pad_wikipedia_url }}">{{ launch.pad_name }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ launch.pad_name }} {% if launch.pad_name != "Unknown Pad" %}(no Wikipedia article){% endif %}
|
||||||
|
{% endif %}
|
||||||
|
— {{ launch.location }}<br/>
|
||||||
|
|
||||||
|
{% if launch.mission %}
|
||||||
|
{% for line in launch.mission.description.splitlines() %}
|
||||||
|
<p>{{ line }}</p>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<p>No description.</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -6,6 +6,7 @@
|
||||||
{"endpoint": "travel_list", "label": "Travel" },
|
{"endpoint": "travel_list", "label": "Travel" },
|
||||||
{"endpoint": "accommodation_list", "label": "Accommodation" },
|
{"endpoint": "accommodation_list", "label": "Accommodation" },
|
||||||
{"endpoint": "gaps_page", "label": "Gaps" },
|
{"endpoint": "gaps_page", "label": "Gaps" },
|
||||||
|
{"endpoint": "launch_list", "label": "Space launches" },
|
||||||
] %}
|
] %}
|
||||||
|
|
||||||
|
|
||||||
|
|
12
web_view.py
12
web_view.py
|
@ -16,6 +16,7 @@ import yaml
|
||||||
|
|
||||||
import agenda.data
|
import agenda.data
|
||||||
import agenda.error_mail
|
import agenda.error_mail
|
||||||
|
import agenda.thespacedevs
|
||||||
import agenda.travel
|
import agenda.travel
|
||||||
|
|
||||||
app = flask.Flask(__name__)
|
app = flask.Flask(__name__)
|
||||||
|
@ -61,6 +62,17 @@ async def index() -> str:
|
||||||
return flask.render_template("index.html", today=now.date(), **data)
|
return flask.render_template("index.html", today=now.date(), **data)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/launches")
|
||||||
|
async def launch_list() -> str:
|
||||||
|
"""Web page showing List of space launches."""
|
||||||
|
now = datetime.now()
|
||||||
|
data_dir = app.config["DATA_DIR"]
|
||||||
|
rocket_dir = os.path.join(data_dir, "thespacedevs")
|
||||||
|
rockets = await agenda.thespacedevs.get_launches(rocket_dir, limit=100)
|
||||||
|
|
||||||
|
return flask.render_template("launches.html", rockets=rockets, now=now)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/gaps")
|
@app.route("/gaps")
|
||||||
async def gaps_page() -> str:
|
async def gaps_page() -> str:
|
||||||
"""List of available gaps."""
|
"""List of available gaps."""
|
||||||
|
|
Loading…
Reference in a new issue