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):