posttrack/tracking.py

33 lines
1 KiB
Python

from database import Database
class Tracking:
def __init__(self, trackingnumber, service=None):
self.trackingnumber = trackingnumber
self.service = service
@classmethod
def from_database(cls, trackingnumber):
with Database() as db:
db.execute("SELECT service FROM tracking WHERE number=?", (trackingnumber,))
tracking = db.fetchone()
if not tracking:
raise ValueError("No tracking for tracking code %s in database" % trackingnumber)
return cls(trackingnumber, tracking[0])
def to_database(self):
with Database() as db:
db.execute("INSERT INTO tracking VALUES (?, ?)", (self.trackingnumber, self.service))
db.commit()
@classmethod
def all(cls):
trackings = list()
with Database() as db:
db.execute("SELECT number, service FROM tracking")
while current := db.fetchone():
trackings.append(cls(current[0], current[1]))
return trackings