fix: rbac 合并 (#7658)

* perf: 修复一些错误权限位

* Pr@fix rbac@fix rbac permissions (#7648)

* fix: 确保每次 migrate 执行更新 role permissions

* perf: 修改 choices

* feat: 兼容apple m1

* perf: 修改 migrations role permissions

* perf: pymysql 导入

* perf: admin 判断

* fix: 修复消息订阅权限

Co-authored-by: ibuler <ibuler@qq.com>
Co-authored-by: Aaron3S <chenyang@fit2cloud.com>
Co-authored-by: feng626 <1304903146@qq.com>
This commit is contained in:
Jiangjie.Bai
2022-02-21 16:24:03 +08:00
committed by GitHub
parent 783c163324
commit 83ff8dbf26
21 changed files with 59 additions and 46 deletions

View File

@@ -64,11 +64,11 @@ class PredefineRole:
}
return defaults
def get_or_create_role(self):
def update_or_create_role(self):
from rbac.models import Role
defaults = self._get_defaults()
permissions = defaults.pop('permissions', [])
role, created = Role.objects.get_or_create(defaults, id=self.id)
role, created = Role.objects.update_or_create(defaults, id=self.id)
role.permissions.set(permissions)
return role, created
@@ -125,10 +125,10 @@ class BuiltinRole:
return mapper[name].get_role()
@classmethod
def sync_to_db(cls):
def sync_to_db(cls, show_msg=False):
roles = cls.get_roles()
for pre_role in roles.values():
role, created = pre_role.get_or_create_role()
print("Create builtin Role: {} - {}".format(role.name, created))
role, created = pre_role.update_or_create_role()
if show_msg:
print("Update builtin Role: {} - {}".format(role.name, created))