1
0
package-tracking/package_tracking/http.py

55 lines
1.4 KiB
Python
Raw Normal View History

2025-01-22 13:02:02 +00:00
from bottle import route, run, template
from . import parcelsapp
2025-01-22 14:58:55 +00:00
from . import database
2025-01-22 13:02:02 +00:00
PARCELSAPP_CLIENT: parcelsapp.ParcelsAppClient | None = None
TEMPLATE = '''
2025-01-22 14:58:55 +00:00
<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>
2025-01-22 13:02:02 +00:00
'''
@route('/')
def index():
2025-01-22 14:58:55 +00:00
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)
2025-01-22 13:02:02 +00:00
2025-01-22 14:58:55 +00:00
return template(TEMPLATE, tracking_results=derps)
2025-01-22 13:02:02 +00:00
def initialize_server(parcelsapp_client: parcelsapp.ParcelsAppClient):
global PARCELSAPP_CLIENT
PARCELSAPP_CLIENT = parcelsapp_client
run(host='localhost', port=8080, debug=True)