db.session.commit() def init_role_permission(): for user in User.query.all(): if user.role is None: if user.email == current_app.config['ALBUMY_ADMIN_EMAIL']: user.role = Role.query.filter_by(name='Administrator').first() else: user.role = Role.query.filter_by(name='User').first() db.session.add(user) db.session.commit() roles_permissions = db.Table( 'roles_permissions', db.Column('role_id', db.Integer, db.ForeignKey('role.id')), db.Column('permission_id', db.Integer, db.ForeignKey('permission.id'))) class Role(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True, comment="角色名称") users = db.relationship('User', back_populates='role') permissions = db.relationship('Permission', secondary=roles_permissions, back_populates='roles') @staticmethod def init_role(): roles_permissions_map = { 'Locked': ['FOLLOW', 'COLLECT'], # 被锁定用户
import os from datetime import datetime from flask import current_app from flask_login import UserMixin from werkzeug.security import generate_password_hash, check_password_hash from flask_avatars import Identicon from albumy.extensions import db, whooshee # relationship table roles_permissions = db.Table( "roles_permissions", db.Column("role_id", db.Integer, db.ForeignKey("role.id")), db.Column("permission_id", db.Integer, db.ForeignKey("permission.id")) ) class Permission(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) roles = db.relationship("Role", secondary=roles_permissions, back_populates="permissions") class Role(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) users = db.relationship("User", back_populates="role") permissions = db.relationship("Permission", secondary=roles_permissions, back_populates="roles")