From d635d1a402e23dbdd46c7416c22aa4c4676b865a Mon Sep 17 00:00:00 2001 From: vapao Date: Sun, 12 Jan 2020 10:22:19 +0800 Subject: [PATCH] U api update --- spug_api/apps/account/models.py | 10 +++++++++- spug_api/apps/account/views.py | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/spug_api/apps/account/models.py b/spug_api/apps/account/models.py index e9ce731..d7e3b59 100644 --- a/spug_api/apps/account/models.py +++ b/spug_api/apps/account/models.py @@ -1,6 +1,7 @@ from django.db import models from libs import ModelMixin, human_datetime from django.contrib.auth.hashers import make_password, check_password +import json class User(models.Model, ModelMixin): @@ -42,11 +43,18 @@ class User(models.Model, ModelMixin): class Role(models.Model, ModelMixin): name = models.CharField(max_length=50) desc = models.CharField(max_length=255, null=True) - permissions = models.TextField(null=True) + page_perms = models.TextField(null=True) + deploy_perms = models.TextField(null=True) created_at = models.CharField(max_length=20, default=human_datetime) created_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='+') + def to_dict(self, *args, **kwargs): + tmp = super().to_dict(*args, **kwargs) + tmp['page_perms'] = json.loads(self.page_perms) if self.page_perms else None + tmp['deploy_perms'] = json.loads(self.deploy_perms) if self.deploy_perms else None + return tmp + def __repr__(self): return '' % self.name diff --git a/spug_api/apps/account/views.py b/spug_api/apps/account/views.py index e509444..108fdd1 100644 --- a/spug_api/apps/account/views.py +++ b/spug_api/apps/account/views.py @@ -4,6 +4,7 @@ from libs import JsonParser, Argument, human_datetime, json_response from .models import User, Role import time import uuid +import json class UserView(View): @@ -67,6 +68,23 @@ class RoleView(View): Role.objects.create(created_by=request.user, **form) return json_response(error=error) + def patch(self, request): + form, error = JsonParser( + Argument('id', type=int, help='参数错误'), + Argument('page_perms', type=dict, required=False), + Argument('deploy_perms', type=dict, required=False) + ).parse(request.body) + if error is None: + role = Role.objects.filter(pk=form.pop('id')).first() + if not role: + return json_response(error='未找到指定角色') + if form.page_perms is not None: + role.page_perms = json.dumps(form.page_perms) + if form.deploy_perms is not None: + role.deploy_perms = json.dumps(form.deploy_perms) + role.save() + return json_response(error=error) + def delete(self, request): form, error = JsonParser( Argument('id', type=int, help='参数错误')