408fde440d
Photograph/screenshot a boarding pass, decode its BCBP barcode (PDF417/ Aztec/QR/DataMatrix), fetch the historical flight track from FlightAware the day after the flight, stage it for review, and write it into AirTrail via its REST API on approval. ntfy notifications carry signed Approve/Deny/Investigate actions.
30 lines
1.2 KiB
HTML
30 lines
1.2 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Review — Boarding Pass{% endblock %}
|
|
{% block content %}
|
|
<h1>Flights</h1>
|
|
|
|
<div class="tabs">
|
|
<a class="tab {{ 'tab-active' if not active_status }}" href="{{ url_for('review.list_flights') }}">Needs review</a>
|
|
{% for s in statuses %}
|
|
<a class="tab {{ 'tab-active' if active_status == s }}" href="{{ url_for('review.list_flights', status=s) }}">{{ s.replace('_', ' ') }}</a>
|
|
{% endfor %}
|
|
<a class="tab {{ 'tab-active' if active_status == 'all' }}" href="{{ url_for('review.list_flights', status='all') }}">All</a>
|
|
</div>
|
|
|
|
{% if not flights %}
|
|
<p class="muted">No flights here.</p>
|
|
{% else %}
|
|
<div class="flight-list">
|
|
{% for f in flights %}
|
|
<a href="{{ url_for('review.detail', flight_id=f.id) }}" class="card flight-row">
|
|
<span class="badge badge-{{ f.status }}">{{ f.status.replace('_', ' ') }}</span>
|
|
<span class="flight-route">{{ f.from_iata or '?' }} → {{ f.to_iata or '?' }}</span>
|
|
<span class="flight-number">{{ f.operating_carrier_iata or '' }}{{ f.flight_number or '' }}</span>
|
|
<span class="flight-date muted">{{ f.flight_date or 'unknown date' }}</span>
|
|
<span class="muted">{{ f.passenger_name or '' }}</span>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endblock %}
|