import os from app import create_app from core.models import db, User, Role, Permission PERMS = [ "board.view", "board.post", "quotes.view", "quotes.admin", "publish.use", "memos.read", "memos.write", "memos.admin", ] ROLE_MAP = { "admin": PERMS, "member": ["board.view","quotes.view","publish.use","memos.read"], "client": ["quotes.view"], } def main(): app = create_app() with app.app_context(): # permissions perm_objs = {} for code in PERMS: p = Permission.query.filter_by(code=code).first() or Permission(code=code) db.session.add(p); perm_objs[code] = p db.session.commit() # roles for rname, p_list in ROLE_MAP.items(): r = Role.query.filter_by(name=rname).first() or Role(name=rname) r.permissions = [perm_objs[c] for c in p_list] db.session.add(r) db.session.commit() # admin user email = os.getenv("ADMIN_EMAIL") username = os.getenv("ADMIN_USERNAME") password = os.getenv("ADMIN_PASSWORD") if email and username and password: u = User.query.filter_by(email=email).first() if not u: u = User(email=email, username=username) u.set_password(password) db.session.add(u) admin_role = Role.query.filter_by(name="admin").first() if admin_role not in u.roles: u.roles.append(admin_role) db.session.commit() print("Seeded admin:", email) if __name__ == "__main__": main()