class User(db.Model): """user table""" __tablename__ = 'user' id = db.Column(db.Integer,primary_key=True,autoincrement=True) username = db.Column(db.String(50), unique=True,nullable=False) password = db.Column(db.String(50), nullable=False) email = db.Column(db.String(128)) mobile = db.Column(db.String(11)) # name = db.Column(db.String(50)) # gender = db.Column(db.SmallInteger) # 0 未知, 1 男 2 女 permission = db.Column(db.Integer) createTime = db.Column(db.DateTime,default=datetime.now()) roles = db.relationship('UserRole',backref='User',lazy='dynamic') cases = db.relationship('CaseData',backref='User',lazy='dynamic') def __init__(self,username,password,email,mobile,permission,createTime): self.username = username self.password = password self.email = email self.mobile = mobile # self.name = name # self.gender = gender self.permission = permission self.createTime = createTime def __repr__(self): return '<用户id{}-->账号{}>'.format(self.id, self.username) def to_json(self): return dict(id=self.id, name=self.username) @property def permissions(self): permissions = Permission.query.join(RolePermission).join(Role).join(UserRole).join(User).filter(User.id == self.id) return permissions @property def menus(self): menus = Menu.query.join(RoleMenu).join(Role).join(UserRole).join(User).filter(User.id == self.id).order_by(Menu.type_,Menu.order).all() return menus
class caseProject(db.Model): """ project table """ __tablename__ = 'projects' id = db.Column(db.Integer,primary_key=True,autoincrement=True) projectName = db.Column(db.String(50),unique=True) cases = db.relationship('CaseData',backref='caseProject',lazy='dynamic') modules = db.relationship('caseModule',backref='caseProject',lazy='dynamic') def __init__(self,projectName): self.projectName = projectName def __repr__(self): return '<项目id{}-->项目名称{}>'.format(self.id,self.projectName) def to_json(self): return dict(id=self.id, name=self.projectName)
class Role(db.Model): __tablename__ = 'roles' id = db.Column(db.Integer,primary_key=True,autoincrement=True) name = db.Column(db.String, nullable=True, unique=True) default = db.Column(db.Boolean, default=False) permissions = db.Column(db.Integer) users = db.relationship('UserRole', backref='Role') rolePermission = db.relationship('RolePermission',backref='Role',lazy='dynamic') roleMenu = db.relationship('RoleMenu',backref='Role',lazy='dynamic') def __init__(self,name,default,permissions): self.name = name self.default = default self.permissions = permissions def __repr__(self): return '<角色id{}-->角色名称{}>'.format(self.id, self.name)
class Permission(db.Model): __tablename__ = 'permission' id = db.Column(db.Integer,primary_key=True,autoincrement=True) name = db.Column(db.String(50)) action = db.Column(db.String(250), unique=True) permissions = db.relationship('RolePermission',backref='Permission',lazy='dynamic') def __init__(self,name,action): self.name = name self.action = action def __repr__(self): return '<权限id{}-->权限名称{}>'.format(self.id, self.name)
class caseModule(db.Model): """ module table """ __tablename__ = 'modules' id = db.Column(db.Integer,primary_key=True,autoincrement=True) moduleName = db.Column(db.String(50)) projectId = db.Column(db.Integer,db.ForeignKey('projects.id')) # table id column cases = db.relationship('CaseData',backref='caseModule',lazy='dynamic') def __init__(self,moduleName,projectId): self.moduleName = moduleName self.projectId =projectId def __repr__(self): return '<模块id{}-->模块名称{}>'.format(self.id,self.moduleName) def to_json(self): return dict(id=self.id, name=self.moduleName)
class Menu(db.Model): __tablename__ = 'menu' id = db.Column(db.Integer,primary_key=True,autoincrement=True) name = db.Column(db.String(50)) icon = db.Column(db.String(50)) url = db.Column(db.String(250)) order = db.Column(db.SmallInteger, default=0) bg_color = db.Column(db.String(50)) roleMenu = db.relationship('RoleMenu',backref='Menu',lazy='dynamic') def __init__(self,name,icon,url,order,bg_color): self.name = name self.icon = icon self.url = url self.order = order self.bg_color = bg_color def __repr__(self): return '<菜单id{}-->菜单名称{}>'.format(self.id, self.name)