Umbrellla config view

This commit is contained in:
shamoon 2023-12-15 19:06:19 -08:00 committed by Trenton H
parent 7fea7bc915
commit ddb3021274
3 changed files with 47 additions and 4 deletions

View File

@ -128,3 +128,8 @@ class OcrSettingsSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = OcrSettings model = OcrSettings
fields = "__all__" fields = "__all__"
class ConfigSerializer(serializers.Serializer):
common_settings = CommonSettingsSerializer()
ocr_settings = OcrSettingsSerializer()

View File

@ -34,11 +34,10 @@ from documents.views import TasksViewSet
from documents.views import UiSettingsView from documents.views import UiSettingsView
from documents.views import UnifiedSearchViewSet from documents.views import UnifiedSearchViewSet
from paperless.consumers import StatusConsumer from paperless.consumers import StatusConsumer
from paperless.views import CommonSettingsViewSet from paperless.views import ConfigView
from paperless.views import FaviconView from paperless.views import FaviconView
from paperless.views import GenerateAuthTokenView from paperless.views import GenerateAuthTokenView
from paperless.views import GroupViewSet from paperless.views import GroupViewSet
from paperless.views import OcrSettingsViewSet
from paperless.views import ProfileView from paperless.views import ProfileView
from paperless.views import UserViewSet from paperless.views import UserViewSet
from paperless_mail.views import MailAccountTestView 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"share_links", ShareLinkViewSet)
api_router.register(r"consumption_templates", ConsumptionTemplateViewSet) api_router.register(r"consumption_templates", ConsumptionTemplateViewSet)
api_router.register(r"custom_fields", CustomFieldViewSet) api_router.register(r"custom_fields", CustomFieldViewSet)
api_router.register(r"common_settings", CommonSettingsViewSet)
api_router.register(r"ocr_settings", OcrSettingsViewSet)
urlpatterns = [ urlpatterns = [
@ -132,6 +129,12 @@ urlpatterns = [
name="profile_view", name="profile_view",
), ),
*api_router.urls, *api_router.urls,
re_path(
"^config/",
ConfigView.as_view(),
name="config_view",
),
*api_router.urls,
], ],
), ),
), ),

View File

@ -21,6 +21,7 @@ from paperless.filters import UserFilterSet
from paperless.models import CommonSettings from paperless.models import CommonSettings
from paperless.models import OcrSettings from paperless.models import OcrSettings
from paperless.serialisers import CommonSettingsSerializer from paperless.serialisers import CommonSettingsSerializer
from paperless.serialisers import ConfigSerializer
from paperless.serialisers import GroupSerializer from paperless.serialisers import GroupSerializer
from paperless.serialisers import OcrSettingsSerializer from paperless.serialisers import OcrSettingsSerializer
from paperless.serialisers import ProfileSerializer from paperless.serialisers import ProfileSerializer
@ -182,3 +183,37 @@ class OcrSettingsViewSet(ModelViewSet):
serializer_class = OcrSettingsSerializer serializer_class = OcrSettingsSerializer
permission_classes = (IsAuthenticated,) 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)