From 5235c5a37eb9c0b53f48a09012aef308a4808db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E4=BA=8C=E7=8C=9B?= Date: Sun, 8 Dec 2019 17:57:03 +0800 Subject: [PATCH] A api update --- spug_api/apps/config/urls.py | 1 + spug_api/apps/config/views.py | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/spug_api/apps/config/urls.py b/spug_api/apps/config/urls.py index 7d644ae..2cbc9c3 100644 --- a/spug_api/apps/config/urls.py +++ b/spug_api/apps/config/urls.py @@ -6,6 +6,7 @@ urlpatterns = [ path('', ConfigView.as_view()), path('parse/json/', parse_json), path('parse/text/', parse_text), + path('diff/', post_diff), path('environment/', EnvironmentView.as_view()), path('service/', ServiceView.as_view()), path('history/', HistoryView.as_view()), diff --git a/spug_api/apps/config/views.py b/spug_api/apps/config/views.py index c323d66..b796aa4 100644 --- a/spug_api/apps/config/views.py +++ b/spug_api/apps/config/views.py @@ -156,12 +156,12 @@ class ConfigView(View): class HistoryView(View): def post(self, request): form, error = JsonParser( - Argument('id', type=int, help='缺少必要参数'), + Argument('o_id', type=int, help='缺少必要参数'), Argument('env_id', type=int, help='缺少必要参数'), Argument('type', filter=lambda x: x in dict(Config.TYPES), help='缺少必要参数') ).parse(request.body) if error is None: - form.o_id, data = form.pop('id'), [] + data = [] for item in ConfigHistory.objects.filter(**form).annotate(update_user=F('updated_by__nickname')): tmp = item.to_dict() tmp['action_alias'] = item.get_action_display() @@ -171,6 +171,23 @@ class HistoryView(View): return json_response(error=error) +def post_diff(request): + form, error = JsonParser( + Argument('o_id', type=int, help='缺少必要参数'), + Argument('type', filter=lambda x: x in dict(Config.TYPES), help='缺少必要参数'), + Argument('envs', type=list, filter=lambda x: len(x), help='缺少必要参数'), + ).parse(request.body) + if error is None: + data, form.env_id__in = {}, form.pop('envs') + for item in Config.objects.filter(**form).order_by('key'): + if item.key in data: + data[item.key][item.env_id] = item.value + else: + data[item.key] = {'key': item.key, item.env_id: item.value} + return json_response(list(data.values())) + return json_response(error=error) + + def parse_json(request): form, error = JsonParser( Argument('o_id', type=int, help='缺少必要参数'),