import bottle from . import database, parcelsapp PARCELSAPP_CLIENT: parcelsapp.ParcelsAppClient | None = None TEMPLATE = """ % if with_form:

Parcels

% end
% for entry, tracking_data in tracking_results:
{{ entry.name }}
{{ tracking_data.latest_state().status }}
{{ tracking_data.latest_state().date.date() }}
% end % if len(tracking_results) == 0:
No Parcels yet...
Add some below!
% end
% if with_form: % end """ def render_tracking(with_form: bool): 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 } tracking_results_with_name = [(e, tracking_results_by_id.get(e.number)) for e in tracking_entries] tracking_results_with_name.sort(key=lambda x: x[1].latest_state().date, reverse=True) return bottle.template(TEMPLATE, tracking_results=tracking_results_with_name, with_form=with_form) @bottle.route('/') def index(): return render_tracking(with_form=True) @bottle.route('/noninteraction') def inner(): return render_tracking(with_form=False) @bottle.route('/add', method='POST') def add_tracking_number(): number: str = bottle.request.forms['tracking-number'].strip() name: str = bottle.request.forms['name'].strip() database.add_tracking_number(database.TrackingNumberEntry(number, name)) return bottle.redirect('/') def initialize_server(parcelsapp_client: parcelsapp.ParcelsAppClient): global PARCELSAPP_CLIENT PARCELSAPP_CLIENT = parcelsapp_client bottle.run(host='0.0.0.0', port=8080, debug=False)