From 135cefcf4c7b2f004da896ba590ba056f6586f1d Mon Sep 17 00:00:00 2001 From: vapao Date: Fri, 15 May 2020 19:55:43 +0800 Subject: [PATCH] =?UTF-8?q?U=20=E4=BC=98=E5=8C=96=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=9D=83=E9=99=90(=E8=87=AA=E5=B7=B1=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=9A=84=E7=8E=AF=E5=A2=83/=E5=BA=94=E7=94=A8=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=85=B7=E6=9C=89=E5=AF=B9=E5=BA=94=E7=9A=84=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E6=9D=83=E9=99=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spug_api/apps/account/models.py | 6 ++++++ spug_api/apps/app/views.py | 4 +++- spug_api/apps/config/views.py | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/spug_api/apps/account/models.py b/spug_api/apps/account/models.py index c4abf11..820f1dc 100644 --- a/spug_api/apps/account/models.py +++ b/spug_api/apps/account/models.py @@ -79,6 +79,12 @@ class Role(models.Model, ModelMixin): tmp['used'] = self.user_set.count() return tmp + def add_deploy_perm(self, target, value): + perms = json.loads(self.deploy_perms) if self.deploy_perms else {'apps': [], 'envs': []} + perms[target].append(value) + self.deploy_perms = json.dumps(perms) + self.save() + def __repr__(self): return '' % self.name diff --git a/spug_api/apps/app/views.py b/spug_api/apps/app/views.py index 79bdd32..64171b2 100644 --- a/spug_api/apps/app/views.py +++ b/spug_api/apps/app/views.py @@ -32,7 +32,9 @@ class AppView(View): if form.id: App.objects.filter(pk=form.id).update(**form) else: - App.objects.create(created_by=request.user, **form) + app = App.objects.create(created_by=request.user, **form) + if request.user.role: + request.user.role.add_deploy_perm('apps', app.id) return json_response(error=error) def patch(self, request): diff --git a/spug_api/apps/config/views.py b/spug_api/apps/config/views.py index 605d9e9..655ceb8 100644 --- a/spug_api/apps/config/views.py +++ b/spug_api/apps/config/views.py @@ -31,7 +31,9 @@ class EnvironmentView(View): if form.id: Environment.objects.filter(pk=form.id).update(**form) else: - Environment.objects.create(created_by=request.user, **form) + env = Environment.objects.create(created_by=request.user, **form) + if request.user.role: + request.user.role.add_deploy_perm('envs', env.id) return json_response(error=error) def delete(self, request):