|
@@ -1,10 +1,15 @@
|
|
|
|
|
+from django.contrib.auth.decorators import login_required
|
|
|
from django.contrib.auth.models import Group, User
|
|
from django.contrib.auth.models import Group, User
|
|
|
from django.db.models import Count
|
|
from django.db.models import Count
|
|
|
|
|
+from django.utils.decorators import method_decorator
|
|
|
|
|
+from rest_framework.permissions import IsAuthenticated
|
|
|
|
|
+from rest_framework.response import Response
|
|
|
from rest_framework.routers import APIRootView
|
|
from rest_framework.routers import APIRootView
|
|
|
|
|
+from rest_framework.viewsets import ViewSet
|
|
|
|
|
|
|
|
from netbox.api.views import ModelViewSet
|
|
from netbox.api.views import ModelViewSet
|
|
|
from users import filters
|
|
from users import filters
|
|
|
-from users.models import ObjectPermission
|
|
|
|
|
|
|
+from users.models import ObjectPermission, UserConfig
|
|
|
from utilities.querysets import RestrictedQuerySet
|
|
from utilities.querysets import RestrictedQuerySet
|
|
|
from . import serializers
|
|
from . import serializers
|
|
|
|
|
|
|
@@ -41,3 +46,36 @@ class ObjectPermissionViewSet(ModelViewSet):
|
|
|
queryset = ObjectPermission.objects.prefetch_related('object_types', 'groups', 'users')
|
|
queryset = ObjectPermission.objects.prefetch_related('object_types', 'groups', 'users')
|
|
|
serializer_class = serializers.ObjectPermissionSerializer
|
|
serializer_class = serializers.ObjectPermissionSerializer
|
|
|
filterset_class = filters.ObjectPermissionFilterSet
|
|
filterset_class = filters.ObjectPermissionFilterSet
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+#
|
|
|
|
|
+# User preferences
|
|
|
|
|
+#
|
|
|
|
|
+
|
|
|
|
|
+class UserConfigViewSet(ViewSet):
|
|
|
|
|
+ """
|
|
|
|
|
+ An API endpoint via which a user can update his or her own UserConfig data (but no one else's).
|
|
|
|
|
+ """
|
|
|
|
|
+ permission_classes = [IsAuthenticated]
|
|
|
|
|
+
|
|
|
|
|
+ def get_queryset(self):
|
|
|
|
|
+ return UserConfig.objects.filter(user=self.request.user)
|
|
|
|
|
+
|
|
|
|
|
+ def list(self, request):
|
|
|
|
|
+ """
|
|
|
|
|
+ Return the UserConfig for the currently authenticated User.
|
|
|
|
|
+ """
|
|
|
|
|
+ userconfig = self.get_queryset().first()
|
|
|
|
|
+
|
|
|
|
|
+ return Response(userconfig.data)
|
|
|
|
|
+
|
|
|
|
|
+ def patch(self, request):
|
|
|
|
|
+ """
|
|
|
|
|
+ Update the UserConfig for the currently authenticated User.
|
|
|
|
|
+ """
|
|
|
|
|
+ # TODO: How can we validate this data?
|
|
|
|
|
+ userconfig = self.get_queryset().first()
|
|
|
|
|
+ userconfig.data.update(request.data)
|
|
|
|
|
+ userconfig.save()
|
|
|
|
|
+
|
|
|
|
|
+ return Response(userconfig.data)
|