skeleton frontend_settings api endpoint

This commit is contained in:
Michael Shamoon 2022-05-06 22:29:30 -07:00
parent 8f2687e390
commit 4b37c1963b
3 changed files with 60 additions and 0 deletions

View File

@ -11,6 +11,7 @@ from . import bulk_edit
from .models import Correspondent from .models import Correspondent
from .models import Document from .models import Document
from .models import DocumentType from .models import DocumentType
from .models import FrontendSettings
from .models import MatchingModel from .models import MatchingModel
from .models import SavedView from .models import SavedView
from .models import SavedViewFilterRule from .models import SavedViewFilterRule
@ -498,3 +499,21 @@ class BulkDownloadSerializer(DocumentListSerializer):
"bzip2": zipfile.ZIP_BZIP2, "bzip2": zipfile.ZIP_BZIP2,
"lzma": zipfile.ZIP_LZMA, "lzma": zipfile.ZIP_LZMA,
}[compression] }[compression]
class FrontendSettingsViewSerializer(serializers.ModelSerializer):
class Meta:
model = FrontendSettings
depth = 1
fields = [
"id",
"settings",
]
def update(self, instance, validated_data):
super(FrontendSettingsViewSerializer, self).update(instance, validated_data)
return instance
def create(self, validated_data):
frontend_settings = FrontendSettings.objects.create(**validated_data)
return frontend_settings

View File

@ -11,6 +11,7 @@ from unicodedata import normalize
from urllib.parse import quote from urllib.parse import quote
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import User
from django.db.models import Case from django.db.models import Case
from django.db.models import Count from django.db.models import Count
from django.db.models import IntegerField from django.db.models import IntegerField
@ -70,6 +71,7 @@ from .serialisers import CorrespondentSerializer
from .serialisers import DocumentListSerializer from .serialisers import DocumentListSerializer
from .serialisers import DocumentSerializer from .serialisers import DocumentSerializer
from .serialisers import DocumentTypeSerializer from .serialisers import DocumentTypeSerializer
from .serialisers import FrontendSettingsViewSerializer
from .serialisers import PostDocumentSerializer from .serialisers import PostDocumentSerializer
from .serialisers import SavedViewSerializer from .serialisers import SavedViewSerializer
from .serialisers import TagSerializer from .serialisers import TagSerializer
@ -715,3 +717,36 @@ class RemoteVersionView(GenericAPIView):
"feature_is_set": feature_is_set, "feature_is_set": feature_is_set,
}, },
) )
class FrontendSettingsView(GenericAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = FrontendSettingsViewSerializer
def get(self, request, format=None):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = User.objects.get(pk=request.user.id)
settings = []
if hasattr(user, "frontend_settings"):
settings = user.frontend_settings.settings
return Response(
{
"user_id": user.id,
"settings": settings,
},
)
def post(self, request, format=None):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save(user=self.request.user)
return Response(
{
"success": True,
},
)

View File

@ -11,6 +11,7 @@ from documents.views import BulkDownloadView
from documents.views import BulkEditView from documents.views import BulkEditView
from documents.views import CorrespondentViewSet from documents.views import CorrespondentViewSet
from documents.views import DocumentTypeViewSet from documents.views import DocumentTypeViewSet
from documents.views import FrontendSettingsView
from documents.views import IndexView from documents.views import IndexView
from documents.views import LogViewSet from documents.views import LogViewSet
from documents.views import PostDocumentView from documents.views import PostDocumentView
@ -78,6 +79,11 @@ urlpatterns = [
RemoteVersionView.as_view(), RemoteVersionView.as_view(),
name="remoteversion", name="remoteversion",
), ),
re_path(
r"^frontend_settings/",
FrontendSettingsView.as_view(),
name="frontend_settings",
),
path("token/", views.obtain_auth_token), path("token/", views.obtain_auth_token),
] ]
+ api_router.urls, + api_router.urls,