From dade0cadda9364aa6c40b0d7e621dff9c5f5557a Mon Sep 17 00:00:00 2001 From: "Jiangjie.Bai" Date: Mon, 6 Jun 2022 15:51:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=8B=E9=9A=86=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/rbac/api/role.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/rbac/api/role.py b/apps/rbac/api/role.py index f398f0315..44cb899db 100644 --- a/apps/rbac/api/role.py +++ b/apps/rbac/api/role.py @@ -39,6 +39,21 @@ class RoleViewSet(PaginatedResponseMixin, JMSModelViewSet): raise PermissionDenied(error) return super().perform_destroy(instance) + def perform_create(self, serializer): + super(RoleViewSet, self).perform_create(serializer) + self.set_permissions_if_need(serializer.instance) + + def set_permissions_if_need(self, instance): + if not isinstance(instance, Role): + return + clone_from = self.request.query_params.get('clone_from') + if not clone_from: + return + clone = Role.objects.filter(id=clone_from).first() + if not clone: + return + instance.permissions.set(clone.permissions.all()) + def perform_update(self, serializer): instance = serializer.instance if instance.builtin: