1
0
package-tracking/package_tracking/http.py
2025-01-22 15:58:55 +01:00

55 lines
1.4 KiB
Python

from bottle import route, run, template
from . import parcelsapp
from . import database
PARCELSAPP_CLIENT: parcelsapp.ParcelsAppClient | None = None
TEMPLATE = '''
<doctype HTML>
<html>
<head>
<style type="text/css">
</style>
</head>
<body>
<h1>My very own thingy</h1>
<main>
<div class="tracking-grid">
% for entry, tracking_data in tracking_results:
<div class="tracking-name"><a href="{{tracking_data.tracking_url}}">{{ entry.name }}/{{entry.number}}</a></div>
<div class="tracking-status">{{ tracking_data.status }}</div>
<div class="tracking-status">{{ tracking_data.latest_state().status }}</div>
<div class="tracking-status">{{ tracking_data.latest_state().date }}</div>
% end
</div>
</main>
</body>
</html>
'''
@route('/')
def index():
tracking_entries = database.get_tracking_numbers()
tracking_numbers = [e.number for e in tracking_entries]
tracking_results = PARCELSAPP_CLIENT.get_tracking_status(tracking_numbers)
tracking_results_by_id = {result.tracking_number: result for result in tracking_results}
derps = [(e, tracking_results_by_id.get(e.number)) for e in tracking_entries]
derps.sort(key=lambda x: x[1].latest_state().date)
return template(TEMPLATE, tracking_results=derps)
def initialize_server(parcelsapp_client: parcelsapp.ParcelsAppClient):
global PARCELSAPP_CLIENT
PARCELSAPP_CLIENT = parcelsapp_client
run(host='localhost', port=8080, debug=True)