
100
|
第
9
章
Permission.WRITE, Permission.MODERATE],
'Administrator': [Permission.FOLLOW, Permission.COMMENT,
Permission.WRITE, Permission.MODERATE,
Permission.ADMIN],
}
default_role = 'User'
for r in roles:
role = Role.query.filter_by(name=r).first()
if role is None:
role = Role(name=r)
role.reset_permissions()
for perm in roles[r]:
role.add_permission(perm)
role.default = (role.name == default_role)
db.session.add(role)
db.session.commit()
insert_roles() 函数并不直接创建新角色对象,而是通过角色名查找现有的角色,然后再
进行更新。只有当数据库中没有某个角色名时,才会创建新角色对象。如此一来,如果以
后更新了角色列表,就可以执行更新操作了。要想添加新角色,或者修改角色的权限,修
改函数顶部的 roles 字典,再运行这个函数即可。注意,“匿名”角色不需要在数据库中表
示出来,这个角色的作用就是为了表示不在数据库中的未知用户。 ...