diff --git a/spug_api/apps/config/models.py b/spug_api/apps/config/models.py index c0b0f45..609b766 100644 --- a/spug_api/apps/config/models.py +++ b/spug_api/apps/config/models.py @@ -78,3 +78,4 @@ class ConfigHistory(models.Model, ModelMixin): class Meta: db_table = 'config_histories' + ordering = ('-id',) diff --git a/spug_api/apps/config/urls.py b/spug_api/apps/config/urls.py index 8d85e4e..6f7cb9f 100644 --- a/spug_api/apps/config/urls.py +++ b/spug_api/apps/config/urls.py @@ -6,4 +6,5 @@ urlpatterns = [ path('', ConfigView.as_view()), 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 3daadf1..57f8a95 100644 --- a/spug_api/apps/config/views.py +++ b/spug_api/apps/config/views.py @@ -78,8 +78,8 @@ class ConfigView(View): Argument('env_id', type=int, help='缺少必要参数'), ).parse(request.GET) if error is None: - data, configs = [], Config.objects.filter(type=form.type, o_id=form.id, env_id=form.env_id) - for item in configs.annotate(update_user=F('updated_by__nickname')): + form.o_id, data = form.pop('id'), [] + for item in Config.objects.filter(**form).annotate(update_user=F('updated_by__nickname')): tmp = item.to_dict() tmp['update_user'] = item.update_user data.append(tmp) @@ -155,3 +155,21 @@ class ConfigView(View): ) config.delete() return json_response(error=error) + + +class HistoryView(View): + def post(self, request): + form, error = JsonParser( + Argument('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'), [] + 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() + tmp['update_user'] = item.update_user + data.append(tmp) + return json_response(data) + return json_response(error=error)