Added form to add stuff
This commit is contained in:
parent
96440c225a
commit
76006f39a0
|
@ -7,4 +7,4 @@ Use the [Parcels API](https://parcelsapp.com/).
|
|||
|
||||
__all__ = ['__version__']
|
||||
|
||||
from _version import __version__
|
||||
from ._version import __version__
|
||||
|
|
|
@ -10,7 +10,6 @@ class TrackingNumberEntry:
|
|||
assert ' ' not in self.number
|
||||
assert '\t' not in self.number
|
||||
assert '\n' not in self.number
|
||||
assert ' ' not in self.name
|
||||
assert '\t' not in self.name
|
||||
assert '\n' not in self.name
|
||||
|
||||
|
@ -23,7 +22,7 @@ def get_tracking_numbers() -> list[TrackingNumberEntry]:
|
|||
lines = f.read().split('\n')
|
||||
|
||||
lines = [line.split(' ') for line in lines if len(line) > 0]
|
||||
return [TrackingNumberEntry(line[0], line[1]) for line in lines]
|
||||
return [TrackingNumberEntry(line[0], ' '.join(line[1:])) for line in lines]
|
||||
|
||||
|
||||
def add_tracking_number(tracking_number: TrackingNumberEntry) -> None:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from bottle import route, run, template
|
||||
import bottle
|
||||
|
||||
from . import database, parcelsapp
|
||||
|
||||
|
@ -72,6 +72,18 @@ body {
|
|||
a {
|
||||
color:black;
|
||||
}
|
||||
|
||||
.add-number-form {
|
||||
display: grid;
|
||||
grid-template: auto 1fr;
|
||||
max-width: 300px;
|
||||
grid-gap: 2px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.add-number-form .add {
|
||||
grid-column: 1 / 3;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -94,12 +106,22 @@ a {
|
|||
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<form action="/add" method="POST" class="add-number-form">
|
||||
<label for="name">Name</label>
|
||||
<input type="text" name="name" id="name" required />
|
||||
<label for="tracking-number">Number</label>
|
||||
<input type="text" name="tracking-number" id="tracking-number" required />
|
||||
<input class="add" type="submit" value="Add Tracking Number!" />
|
||||
</form>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
|
||||
|
||||
@route('/')
|
||||
@bottle.route('/')
|
||||
def index():
|
||||
tracking_entries = database.get_tracking_numbers()
|
||||
tracking_numbers = [e.number for e in tracking_entries]
|
||||
|
@ -110,13 +132,21 @@ def index():
|
|||
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, reverse=True)
|
||||
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 template(TEMPLATE, tracking_results=derps)
|
||||
return bottle.template(TEMPLATE, tracking_results=tracking_results_with_name)
|
||||
|
||||
|
||||
@bottle.route('/add', method='POST')
|
||||
def add():
|
||||
number: str = bottle.request.forms['tracking-number']
|
||||
name: str = bottle.request.forms['name']
|
||||
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
|
||||
run(host='localhost', port=8080, debug=True)
|
||||
bottle.run(host='localhost', port=8080, debug=True)
|
||||
|
|
|
@ -38,12 +38,13 @@ class ParcelInfo:
|
|||
|
||||
class ParcelsAppClient:
|
||||
def __init__(self, api_key: str):
|
||||
assert api_key is not None, 'Missing API Key'
|
||||
self.api_key = api_key
|
||||
|
||||
def _request_json(self, method: str, url: str, **kwargs) -> dict:
|
||||
request_json_data = {'apiKey': self.api_key, **kwargs}
|
||||
request_json_data = {'apiKey': self.api_key, 'language': 'en', **kwargs}
|
||||
response = requests.request(
|
||||
method=method, url=URL_TRACKING, json=request_json_data,
|
||||
method=method, url=url, json=request_json_data,
|
||||
)
|
||||
response.raise_for_status()
|
||||
json_data = response.json()
|
||||
|
@ -53,7 +54,7 @@ class ParcelsAppClient:
|
|||
return json_data
|
||||
|
||||
def check_tracking_status(self, uuid: str) -> dict:
|
||||
"""Function to check tracking status with UUID"""
|
||||
"""Function to check tracking status with UUID."""
|
||||
json_data = self._request_json('GET', URL_TRACKING, uuid=uuid)
|
||||
if json_data['done']:
|
||||
logger.info('Tracking complete')
|
||||
|
@ -65,12 +66,11 @@ class ParcelsAppClient:
|
|||
|
||||
def _get_tracking_status_to_json(self, tracking_ids: list[str]) -> dict:
|
||||
shipments = [
|
||||
{'trackingId': id, 'language': 'en', 'country': target_country}
|
||||
for id in tracking_ids
|
||||
{'trackingId': tracking_id, 'country': target_country}
|
||||
for tracking_id in tracking_ids
|
||||
]
|
||||
|
||||
# Initiate tracking request
|
||||
|
||||
json_data = self._request_json('POST', URL_TRACKING, shipments=shipments)
|
||||
if json_data.get('done'):
|
||||
return json_data
|
||||
|
|
Loading…
Reference in New Issue
Block a user