55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
|
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)
|