posttrack/status.py

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