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))