class UserModel(BaseMixin, db.Model): """ User Model for storing user details """ __tablename__ = 'users' username = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(120), nullable=False) access = db.Column(db.Integer) def is_admin(self): return self.access == ACCESS['admin'] def allowed(self, access_level): return self.access >= access_level @staticmethod def generate_hash(password): return sha256.hash(password) @staticmethod def verify_hash(password, hash): return sha256.verify(password, hash) @classmethod def find_by_username(cls, username): return cls.query.filter_by(username=username).first() def __repr__(self): return "<User '{}'>".format(self.username)
class BrandModel(UserMixin, db.Model): """ Brand Model for sorting Brand details """ __tablename__ = 'brands' name = db.Column(db.String(120), unique=True, nullable=False) description = db.Column(db.String(120)) website = db.Column(db.String(120)) products = db.relationship('ProductModel', backref='brand') def __repr__(self): return "<Brand '{}'>".format(self.name)
class TokenBlacklist(db.Model): jti = db.Column(db.String(36), nullable=False) token_type = db.Column(db.String(10), nullable=False) user_identity = db.Column(db.String(50), nullable=False) revoked = db.Column(db.Boolean, nullable=False) expires = db.Column(db.DateTime, nullable=False) def to_dict(self): return { 'token_id': self.id, 'jti': self.jti, 'token_type': self.token_type, 'user_identity': self.user_identity, 'revoked': self.revoked, 'expires': self.expires }
class Project(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False, unique=True) description = db.Column(db.String(200), nullable=False) completed = db.Column(db.Boolean) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user_stories = db.Column(db.String(100)) actions = db.relationship('Action', backref='project')
class ProductModel(UserMixin, db.Model): """ Product Model for storing product details """ __tablename__ = 'products' name = db.Column(db.String(120), unique=True, nullable=False) partNumber = db.Column(db.String(120)) status = db.Column(db.Boolean) weight = db.Column(db.Float) url = db.Column(db.String(120)) description = db.Column(db.String(120)) brand_id = db.Column(db.Integer, db.ForeignKey('brands.id')) def __repr__(self): return "<Product '{}'>".format(self.name)
class Action(db.Model): id = db.Column(db.Integer, primary_key=True) project_id = db.Column(db.Integer, db.ForeignKey('project.id')) description = db.Column(db.String(200), nullable=False) note = db.Column(db.String(250), nullable=False)
class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(100), nullable=False, unique=True) password = db.Column(db.String(100), nullable=False) projects = db.relationship('Project', backref='author')