41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
from rest_framework import filters, generics, permissions
|
|
from django.contrib.auth import get_user_model
|
|
from user_profile.permissions import TargetIsStaff
|
|
from user_profile import serializers
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
|
|
User = get_user_model()
|
|
|
|
class UserList(generics.ListCreateAPIView):
|
|
queryset = User.objects.all()
|
|
serializer_class = serializers.UserCreateSerializer
|
|
permission_classes = [TargetIsStaff]
|
|
filter_backends = [filters.SearchFilter, filters.OrderingFilter, DjangoFilterBackend]
|
|
search_fields = ['username', 'email', 'first_name', 'last_name']
|
|
filterset_fields = ['username', 'email', 'first_name', 'last_name']
|
|
ordering_fields = '__all__'
|
|
|
|
def get_serializer_class(self):
|
|
serializer_class = self.serializer_class
|
|
|
|
if self.request.method == 'GET':
|
|
serializer_class = serializers.UserRetrieveSerializer
|
|
|
|
return serializer_class
|
|
|
|
class UserDetail(generics.RetrieveUpdateDestroyAPIView):
|
|
queryset = User.objects.all()
|
|
serializer_class = serializers.UserUpdateSerializer
|
|
permission_classes = [TargetIsStaff]
|
|
def get_serializer_class(self):
|
|
serializer_class = self.serializer_class
|
|
|
|
if self.request.method == 'GET':
|
|
serializer_class = serializers.UserRetrieveSerializer
|
|
|
|
return serializer_class
|
|
|
|
class UserPasswordUpdate(generics.UpdateAPIView):
|
|
queryset = User.objects.all()
|
|
serializer_class = serializers.UserUpdatePasswordSerializer
|
|
permission_classes = [TargetIsStaff] |