32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from database import Database, DATE_FORMAT
|
|
|
|
import notify
|
|
|
|
import datetime
|
|
|
|
class Status:
|
|
def __init__(self, trackingcode, timestamp, status):
|
|
self.trackingcode = trackingcode
|
|
self.timestamp = timestamp
|
|
self.status = status
|
|
|
|
@classmethod
|
|
def from_database(cls, trackingcode):
|
|
with Database() as db:
|
|
db.execute("SELECT timestamp, status FROM status WHERE trackingnumber=? ORDER BY timestamp DESC LIMIT 1", (trackingcode,))
|
|
status = db.fetchone()
|
|
|
|
if not status:
|
|
raise ValueError("No status for tracking code %s in database" % trackingcode)
|
|
|
|
timestamp = datetime.datetime.strptime(status[0][:-3] + status[0][-2:], DATE_FORMAT)
|
|
|
|
return cls(trackingcode, timestamp, status[1])
|
|
|
|
def to_database(self):
|
|
with Database() as db:
|
|
db.execute("INSERT INTO status VALUES (?, ?, ?)", (self.trackingcode, self.timestamp, self.status))
|
|
db.commit()
|
|
|
|
def notify(self):
|
|
notify.notify("Status changed", "Status for %s has changed at %s: %s" % (self.trackingcode, self.timestamp, self.status)) |