1
0
This commit is contained in:
Jon Michael Aanes 2025-05-21 01:01:17 +02:00
parent c18e29423a
commit 4280a7721e
5 changed files with 28 additions and 14 deletions

View File

@ -1,9 +1,10 @@
import logging import logging
import requests import requests
from . import http, secrets
from clients.parcelsapp import ParcelsAppClient from clients.parcelsapp import ParcelsAppClient
from . import http, secrets
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -1,9 +1,10 @@
import bottle
import datetime import datetime
from . import database
from clients.parcelsapp import ParcelsAppClient import bottle
from clients.common import ApiError from clients.common import ApiError
from clients.parcelsapp import ParcelsAppClient
from . import database
PARCELSAPP_CLIENT: ParcelsAppClient | None = None PARCELSAPP_CLIENT: ParcelsAppClient | None = None
@ -144,6 +145,7 @@ footer {
TODAY = datetime.datetime.now(tz=datetime.UTC).date() TODAY = datetime.datetime.now(tz=datetime.UTC).date()
def get_packages_from_parcels(): def get_packages_from_parcels():
tracking_entries = database.get_tracking_numbers() tracking_entries = database.get_tracking_numbers()
tracking_numbers = [e.number for e in tracking_entries] tracking_numbers = [e.number for e in tracking_entries]
@ -164,26 +166,36 @@ def get_packages_from_parcels():
def render_tracking(error_message: str | None = None, with_form: bool = False): def render_tracking(error_message: str | None = None, with_form: bool = False):
tracking_results_with_name = get_packages_from_parcels() tracking_results_with_name = get_packages_from_parcels()
tracking_results_with_name.sort(key=lambda x: x[1].latest_state().date if x[1] else TODAY, reverse=True) tracking_results_with_name.sort(
return bottle.template(TEMPLATE, error_message=error_message, tracking_results=tracking_results_with_name, with_form=with_form) key=lambda x: x[1].latest_state().date if x[1] else TODAY, reverse=True,
)
return bottle.template(
TEMPLATE,
error_message=error_message,
tracking_results=tracking_results_with_name,
with_form=with_form,
)
@bottle.route('/') @bottle.route('/')
def index(): def index():
return render_tracking(with_form=True) return render_tracking(with_form=True)
@bottle.route('/noninteraction') @bottle.route('/noninteraction')
def inner(): def inner():
return render_tracking(with_form=False) return render_tracking(with_form=False)
@bottle.route('/add', method='POST') @bottle.route('/add', method='POST')
def add_tracking_number(): def add_tracking_number():
number: str = bottle.request.forms.get('tracking-number') number: str = bottle.request.forms.get('tracking-number')
name: str = bottle.request.forms.get('name') name: str = bottle.request.forms.get('name')
if number is None or name is None: if number is None or name is None:
bottle.abort(400) bottle.abort(400)
database.add_tracking_number(database.TrackingNumberEntry(number.strip(), name.strip())) database.add_tracking_number(
database.TrackingNumberEntry(number.strip(), name.strip()),
)
return bottle.redirect('/') return bottle.redirect('/')

View File

@ -28,6 +28,7 @@ Once run, it exposes the following endpoints:
PACKAGE_DESCRIPTION_SHORT = """ PACKAGE_DESCRIPTION_SHORT = """
Small alternative frontend for tracking packages and parcels.""".strip() Small alternative frontend for tracking packages and parcels.""".strip()
def parse_version_file(text: str) -> str: def parse_version_file(text: str) -> str:
text = re.sub('^#.*', '', text, flags=re.MULTILINE) text = re.sub('^#.*', '', text, flags=re.MULTILINE)
match = re.match(r'^\s*__version__\s*=\s*(["\'])([\d\.]+)\1$', text) match = re.match(r'^\s*__version__\s*=\s*(["\'])([\d\.]+)\1$', text)
@ -36,6 +37,7 @@ def parse_version_file(text: str) -> str:
raise Exception(msg) raise Exception(msg)
return match.group(2) return match.group(2)
with open(PACKAGE_NAME + '/_version.py') as f: with open(PACKAGE_NAME + '/_version.py') as f:
version = parse_version_file(f.read()) version = parse_version_file(f.read())

View File

@ -1,4 +1,3 @@
def test_import_modules(): def test_import_modules():
import package_tracking # noqa import package_tracking # noqa
import package_tracking.database # noqa import package_tracking.database # noqa