diff --git a/spug_api/apps/setting/models.py b/spug_api/apps/setting/models.py index f62565f..a1e3c6d 100644 --- a/spug_api/apps/setting/models.py +++ b/spug_api/apps/setting/models.py @@ -1,7 +1,8 @@ from django.db import models +from libs import ModelMixin -class Setting(models.Model): +class Setting(models.Model, ModelMixin): key = models.CharField(max_length=50, unique=True) value = models.TextField() desc = models.CharField(max_length=255, null=True) diff --git a/spug_api/apps/setting/urls.py b/spug_api/apps/setting/urls.py new file mode 100644 index 0000000..f5bddba --- /dev/null +++ b/spug_api/apps/setting/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from .views import * + +urlpatterns = [ + path('', SettingView.as_view()), +] diff --git a/spug_api/apps/setting/utils.py b/spug_api/apps/setting/utils.py index fdf3e80..081874d 100644 --- a/spug_api/apps/setting/utils.py +++ b/spug_api/apps/setting/utils.py @@ -3,7 +3,7 @@ from apps.setting.models import Setting class AppSetting: - keys = ('public_key', 'private_key') + keys = ('public_key', 'private_key', 'mail_service') @classmethod @lru_cache(maxsize=64) diff --git a/spug_api/apps/setting/views.py b/spug_api/apps/setting/views.py new file mode 100644 index 0000000..ebdc242 --- /dev/null +++ b/spug_api/apps/setting/views.py @@ -0,0 +1,19 @@ +from django.views.generic import View +from libs import JsonParser, Argument, json_response +from apps.setting.utils import AppSetting +from apps.setting.models import Setting + + +class SettingView(View): + def get(self, request): + settings = Setting.objects.exclude(key__in=('public_key', 'private_key')) + return json_response(settings) + + def post(self, request): + form, error = JsonParser( + Argument('data', type=list, help='缺少必要的参数') + ).parse(request.body) + if error is None: + for item in form.data: + AppSetting.set(**item) + return json_response(error=error) diff --git a/spug_api/spug/urls.py b/spug_api/spug/urls.py index dbf12d9..5b1bb8c 100644 --- a/spug_api/spug/urls.py +++ b/spug_api/spug/urls.py @@ -22,4 +22,5 @@ urlpatterns = [ path('schedule/', include('apps.schedule.urls')), path('monitor/', include('apps.monitor.urls')), path('alarm/', include('apps.alarm.urls')), + path('setting/', include('apps.setting.urls')), ]