mypertamina-microsite-api/microsite_api/user_profile/views.py
2026-02-26 11:06:14 +07:00

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]