2026-02-14 17:58:29 +08:00
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
"""
|
|
|
|
|
|
系统配置 API(需要登录):
|
|
|
|
|
|
- GET /api/settings -> 查询所有配置
|
|
|
|
|
|
- POST /api/settings -> 批量更新配置(传入 key-value 对象)
|
|
|
|
|
|
- GET /api/settings/{key} -> 查询单个配置
|
|
|
|
|
|
"""
|
|
|
|
|
|
from rest_framework import status
|
|
|
|
|
|
from rest_framework.decorators import api_view
|
|
|
|
|
|
|
2026-02-26 01:27:35 +08:00
|
|
|
|
from server.core.response import api_success, api_error
|
2026-02-14 17:58:29 +08:00
|
|
|
|
from server.models import SystemConfig
|
|
|
|
|
|
from server.serializers import SystemConfigSerializer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@api_view(["GET", "POST"])
|
|
|
|
|
|
def settings_list(request):
|
|
|
|
|
|
if request.method == "GET":
|
|
|
|
|
|
qs = SystemConfig.objects.all().order_by("key")
|
2026-02-26 01:27:35 +08:00
|
|
|
|
return api_success(SystemConfigSerializer(qs, many=True).data)
|
2026-02-14 17:58:29 +08:00
|
|
|
|
|
|
|
|
|
|
# POST: 批量更新,请求体格式 {"key1": "value1", "key2": "value2", ...}
|
|
|
|
|
|
if not isinstance(request.data, dict):
|
2026-02-26 01:27:35 +08:00
|
|
|
|
return api_error(status.HTTP_400_BAD_REQUEST, "请传入 key-value 对象")
|
2026-02-14 17:58:29 +08:00
|
|
|
|
|
|
|
|
|
|
results = []
|
|
|
|
|
|
for key, value in request.data.items():
|
|
|
|
|
|
obj, created = SystemConfig.objects.update_or_create(
|
|
|
|
|
|
key=key,
|
|
|
|
|
|
defaults={"value": str(value)},
|
|
|
|
|
|
)
|
|
|
|
|
|
results.append(SystemConfigSerializer(obj).data)
|
2026-02-26 01:27:35 +08:00
|
|
|
|
return api_success(results)
|
2026-02-14 17:58:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@api_view(["GET"])
|
|
|
|
|
|
def settings_detail(request, key):
|
|
|
|
|
|
try:
|
|
|
|
|
|
obj = SystemConfig.objects.get(key=key)
|
|
|
|
|
|
except SystemConfig.DoesNotExist:
|
2026-02-26 01:27:35 +08:00
|
|
|
|
return api_error(status.HTTP_404_NOT_FOUND, f"配置项 '{key}' 不存在")
|
|
|
|
|
|
return api_success(SystemConfigSerializer(obj).data)
|