From ddb30212747399904961c29d45bc4b400c650159 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 15 Dec 2023 19:06:19 -0800 Subject: [PATCH] Umbrellla config view --- src/paperless/serialisers.py | 5 +++++ src/paperless/urls.py | 11 +++++++---- src/paperless/views.py | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/paperless/serialisers.py b/src/paperless/serialisers.py index 4185e3bed..09b7d5b29 100644 --- a/src/paperless/serialisers.py +++ b/src/paperless/serialisers.py @@ -128,3 +128,8 @@ class OcrSettingsSerializer(serializers.ModelSerializer): class Meta: model = OcrSettings fields = "__all__" + + +class ConfigSerializer(serializers.Serializer): + common_settings = CommonSettingsSerializer() + ocr_settings = OcrSettingsSerializer() diff --git a/src/paperless/urls.py b/src/paperless/urls.py index 35e2bd989..7f0db6e57 100644 --- a/src/paperless/urls.py +++ b/src/paperless/urls.py @@ -34,11 +34,10 @@ from documents.views import TasksViewSet from documents.views import UiSettingsView from documents.views import UnifiedSearchViewSet from paperless.consumers import StatusConsumer -from paperless.views import CommonSettingsViewSet +from paperless.views import ConfigView from paperless.views import FaviconView from paperless.views import GenerateAuthTokenView from paperless.views import GroupViewSet -from paperless.views import OcrSettingsViewSet from paperless.views import ProfileView from paperless.views import UserViewSet from paperless_mail.views import MailAccountTestView @@ -61,8 +60,6 @@ api_router.register(r"mail_rules", MailRuleViewSet) api_router.register(r"share_links", ShareLinkViewSet) api_router.register(r"consumption_templates", ConsumptionTemplateViewSet) api_router.register(r"custom_fields", CustomFieldViewSet) -api_router.register(r"common_settings", CommonSettingsViewSet) -api_router.register(r"ocr_settings", OcrSettingsViewSet) urlpatterns = [ @@ -132,6 +129,12 @@ urlpatterns = [ name="profile_view", ), *api_router.urls, + re_path( + "^config/", + ConfigView.as_view(), + name="config_view", + ), + *api_router.urls, ], ), ), diff --git a/src/paperless/views.py b/src/paperless/views.py index 4229d3836..01fd92863 100644 --- a/src/paperless/views.py +++ b/src/paperless/views.py @@ -21,6 +21,7 @@ from paperless.filters import UserFilterSet from paperless.models import CommonSettings from paperless.models import OcrSettings from paperless.serialisers import CommonSettingsSerializer +from paperless.serialisers import ConfigSerializer from paperless.serialisers import GroupSerializer from paperless.serialisers import OcrSettingsSerializer from paperless.serialisers import ProfileSerializer @@ -182,3 +183,37 @@ class OcrSettingsViewSet(ModelViewSet): serializer_class = OcrSettingsSerializer permission_classes = (IsAuthenticated,) + + +class ConfigView(GenericAPIView): + """ + View for overall config settings + """ + + permission_classes = [IsAuthenticated] + serializer_class = ConfigSerializer + + def get(self, request, *args, **kwargs): + serializer = self.get_serializer() + + return Response( + serializer.to_representation( + { + "common_settings": CommonSettings.objects.first(), + "ocr_settings": OcrSettings.objects.first(), + }, + ), + ) + + def post(self, request): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + + CommonSettings.objects.filter(pk=1).update( + **serializer.validated_data.get("common_settings"), + ) + OcrSettings.objects.filter(pk=1).update( + **serializer.validated_data.get("ocr_settings"), + ) + + return self.get(request)