Simple app to add configuration options to a Django project.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 36 lines 1.3 kB view raw
1from rest_framework import viewsets 2from rest_framework.permissions import IsAuthenticated 3 4from options import get_option_model, get_user_option_model 5from options.rest_framework.permissions import IsAdminForNoSafeMethods 6from options.rest_framework.serializers import OptionSerializer, UserOptionSerializer 7 8Option = get_option_model() 9UserOption = get_user_option_model() 10 11 12class OptionViewSet(viewsets.ModelViewSet): 13 queryset = Option.objects.all() 14 serializer_class = OptionSerializer 15 permission_classes = (IsAdminForNoSafeMethods,) 16 17 def get_queryset(self): 18 queryset = super().get_queryset() 19 if self.request.user.is_authenticated and self.request.user.is_staff: 20 return queryset 21 return queryset.public() 22 23 24class UserOptionViewSet(viewsets.ModelViewSet): 25 queryset = UserOption.objects.filter_user_customizable() 26 serializer_class = UserOptionSerializer 27 permission_classes = (IsAuthenticated,) 28 29 def get_queryset(self): 30 queryset = super().get_queryset() 31 if self.request.user.is_authenticated and self.request.user.is_staff: 32 return queryset 33 return queryset.public().filter(user=self.request.user) 34 35 def perform_create(self, serializer): 36 serializer.save(user=self.request.user)