import datetime from flask_security import RoleMixin, UserMixin from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() roles_users = db.Table( 'roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE')) ) class Role(db.Model, RoleMixin): __tablename__ = "role" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __str__(self): return self.name class Module(db.Model): __tablename__ = "module" id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(400)) versions = db.relationship('ModuleVersion', backref='module', lazy=True) class ModuleVersion(db.Model): __tablename__ = "moduleversion" id = db.Column(db.Integer, primary_key=True, autoincrement=True) version = db.Column(db.String(10)) module_id = db.Column(db.Integer, db.ForeignKey('module.id'), nullable=False) class User(db.Model, UserMixin): __tablename__ = "user" id = db.Column(db.Integer, primary_key=True) date_created = db.Column(db.DateTime, default=datetime.datetime.utcnow) username = db.Column(db.String(400)) email = db.Column(db.String(400), unique=True) password = db.Column(db.String(400)) active = db.Column(db.Boolean) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('user', lazy='dynamic')) def __repr__(self): return str(self.username) def __str__(self): return str(self.username)