do-tracker/app/models.py

29 lines
1.4 KiB
Python

from datetime import datetime
from . import db
class Store(db.Model):
id = db.Column(db.Integer, primary_key=True) # Store number like 210
name = db.Column(db.String(100), nullable=False)
password = db.Column(db.String(128), nullable=False) # plaintext for now (hash later)
class DeliveryOrder(db.Model):
id = db.Column(db.Integer, primary_key=True)
do_number = db.Column(db.String(50), unique=True, nullable=False)
delivery_number = db.Column(db.String(50), nullable=False)
final_location = db.Column(db.Integer, db.ForeignKey('store.id'), nullable=False)
created_by = db.Column(db.String(100), nullable=False)
status = db.Column(db.String(50), default='Ready for Collection')
created_at = db.Column(db.DateTime, default=datetime.utcnow)
collected_by = db.Column(db.String(100), nullable=True)
movements = db.relationship('Movement', backref='delivery_order', cascade='all, delete-orphan')
class Movement(db.Model):
id = db.Column(db.Integer, primary_key=True)
do_id = db.Column(db.Integer, db.ForeignKey('delivery_order.id'), nullable=False)
branch_id = db.Column(db.Integer, db.ForeignKey('store.id'), nullable=False)
arrived_at = db.Column(db.DateTime, default=datetime.utcnow)
departed_at = db.Column(db.DateTime, nullable=True)
handled_by = db.Column(db.String(100), nullable=False)
comment = db.Column(db.Text, nullable=True)