def insert_roles():
roles = {
'User': (Permission.FOLLOW |
Permission.COMMENT |
Permission.WRITE_ARTICLES, True),
'Moderator': (Permission.FOLLOW |
Permission.COMMENT |
Permission.WRITE_ARTICLES |
Permission.MODERATE_COMMENTS, False),
'Administrator': (0xff, False)
}
for r in roles:
role = Role.query.filter_by(name=r).first()
if role is None:
role = Role(name=r)
role.permissions = roles[r][0]
role.default = roles[r][1]
db.session.add(role)
db.session.commit()
键'User'的值[1]设置为True,所以用户创建时默认的角色是“User”.
for r in roles:
通过名称来搜索已存在的角色并更新。只有数据库里并不存在指定名称的角色时才会创建一个新的角色对象。这就保证了将来一旦需要就可以用来更新角色列表。为了添加一个新角色或者更改指派给角色的权限许可,更改roles数组并把这个函数作为结果返回。需要注意的是,匿名角色并不需要在数据库里指定,实际上它就是为不存在于数据库中的用户设计的。