from formity.extensions import db from datetime import datetime import enum class Status(enum.Enum): new = 1 confirmed = 2 allocated = 3 fulfilled = 4 rejected = 5 class FaceshieldRequest(db.Model): id = db.Column(db.Integer, primary_key=True) entity_info = db.Column(db.String) full_name = db.Column(db.String) phone_number = db.Column(db.String) email = db.Column(db.String) extra = db.Column(db.String) faceshield_front_required = db.Column(db.Integer) faceshield_model = db.Column(db.String) faceshield_full_required = db.Column(db.Integer) created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) updated = db.Column(db.DateTime, default=datetime.utcnow, nullable=False, onupdate=datetime.utcnow) ua = db.Column(db.String) ip = db.Column(db.String) status = db.Column(db.Enum(Status), default=Status.new, server_default='new', nullable=False) remarks = db.Column(db.String) class RequestChange(db.Model): id = db.Column(db.Integer, primary_key=True) request_id = db.Column(db.Integer, db.ForeignKey(FaceshieldRequest.id)) request = db.relationship(FaceshieldRequest, backref='changelog') user_id = db.Column(db.String, nullable=False) state_before = db.Column(db.JSON) state_after = db.Column(db.JSON) remarks = db.Column(db.String) created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)