From 63e734f70b50633bf0dccfb99e1c95d6570ba3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E4=BA=8C=E7=8C=9B?= Date: Fri, 6 Dec 2019 18:45:52 +0800 Subject: [PATCH] A api update --- spug_api/apps/config/models.py | 1 + spug_api/apps/config/urls.py | 1 + spug_api/apps/config/views.py | 35 +++++++++++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/spug_api/apps/config/models.py b/spug_api/apps/config/models.py index e275dba..94595ea 100644 --- a/spug_api/apps/config/models.py +++ b/spug_api/apps/config/models.py @@ -23,6 +23,7 @@ class Service(models.Model, ModelMixin): key = models.CharField(max_length=50) desc = models.CharField(max_length=255, null=True) created_at = models.CharField(max_length=20, default=human_time) + created_by = models.ForeignKey(User, on_delete=models.PROTECT) def __repr__(self): return f'' diff --git a/spug_api/apps/config/urls.py b/spug_api/apps/config/urls.py index 0227af0..06c1809 100644 --- a/spug_api/apps/config/urls.py +++ b/spug_api/apps/config/urls.py @@ -4,4 +4,5 @@ from .views import * urlpatterns = [ path('environment/', EnvironmentView.as_view()), + path('service/', ServiceView.as_view()), ] diff --git a/spug_api/apps/config/views.py b/spug_api/apps/config/views.py index 02bb247..59557b6 100644 --- a/spug_api/apps/config/views.py +++ b/spug_api/apps/config/views.py @@ -1,6 +1,6 @@ from django.views.generic import View from libs import json_response, JsonParser, Argument, human_time -from apps.config.models import Environment, ConfigValue +from apps.config.models import Environment, ConfigValue, Service, ConfigKey class EnvironmentView(View): @@ -34,3 +34,36 @@ class EnvironmentView(View): return json_response(error='该环境已存在关联的配置信息,请删除相关配置后再尝试删除') Environment.objects.filter(pk=form.id).delete() return json_response(error=error) + + +class ServiceView(View): + def get(self, request): + services = Service.objects.all() + return json_response(services) + + def post(self, request): + form, error = JsonParser( + Argument('id', type=int, required=False), + Argument('name', help='请输入服务名称'), + Argument('key', help='请输入唯一标识符'), + Argument('desc', required=False) + ).parse(request.body) + if error is None: + service = Service.objects.filter(key=form.key).first() + if service and service.id != form.id: + return json_response(error=f'唯一标识符 {form.key} 已存在,请更改后重试') + if form.id: + Service.objects.filter(pk=form.id).update(**form) + else: + Service.objects.create(created_by=request.user, **form) + return json_response(error=error) + + def delete(self, request): + form, error = JsonParser( + Argument('id', type=int, help='请指定操作对象') + ).parse(request.GET) + if error is None: + if ConfigKey.objects.filter(type='src', o_id=form.id).exists(): + return json_response(error='该服务已存在关联的配置信息,请删除相关配置后再尝试删除') + Service.objects.filter(pk=form.id).delete() + return json_response(error=error) \ No newline at end of file