class TransactionRecord(db.Model): __table__ = "transaction_record" id = db.Column(db.Integer, primary_key=True) transaction_id = db.Column(UUIDType(), db.ForeignKey("transaction.id")) field = db.Column(db.String(32), doc=_("Field")) before = db.Column(db.PickleType, doc=_('Original Value')) after = db.Column(db.PickleType, doc=_('New Value')) transactions = db.relationship(Transaction, )
class Transaction(db.Model): __table__ = "transaction" id = db.Column(UUIDType(), primary_key=True) object_uuid = db.Column(UUIDType(), nullable=False, ) object_id = db.Column(db.Integer) object_table = db.Column(db.String(100), null=True) created = db.Column(db.DateTime, default=datetime.datetime.utcnow) utime = db.Column(db.DateTime, default=datetime.datetime.utcnow)
class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) user_name = db.Column(db.String(40), unique=True) password = db.Column(db.Binary(70)) email = db.Column(db.String(64), unique=True) def __str__(self): return self.username def get_user_id(self): return self.id def set_password(self, password): self.password = hashpw(password.encode("utf-8"), gensalt()) @classmethod def find_by_password(cls, email, password, *args, **kwargs): email = email.strip() password = password.strip() if email and password: user = cls.query.filter( cls.email == email ).first() if user and user.check_password(password): return user def check_password(self, password): pw_hash = hashpw(password=password.encode("utf-8"), salt=self.password) return pw_hash == self.password @classmethod def login(cls, email, password, *args, **kwargs): user = cls.find_by_password(email=email, password=password) if not user: raise exceptions.InvalidEmailOrPassword() login_user(user) user.last_login_time = time.time() object_session(user).commit() return jsonify({"code": 1000, "message": 'success'})
class Parent(TransactionEnabled, db.Model): __tablename__ = 'parent' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(length=255)) children = db.relationship("Child")
class Child(TransactionEnabled, db.Model): __tablename__ = 'child' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(length=255)) parent_id = db.Column(db.Integer, db.ForeignKey('parent.id')) parent = db.relationship("Parent")