Commit 230799c6 authored by Ilham Maulana's avatar Ilham Maulana 💻

fix: user profile update endpoint

parent 77f68fcb
...@@ -11,7 +11,6 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -11,7 +11,6 @@ class UserSerializer(serializers.ModelSerializer):
"id", "id",
"username", "username",
"email", "email",
"password",
"first_name", "first_name",
"last_name", "last_name",
"is_staff", "is_staff",
...@@ -19,10 +18,8 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -19,10 +18,8 @@ class UserSerializer(serializers.ModelSerializer):
extra_kwargs = {"password": {"write_only": True}} extra_kwargs = {"password": {"write_only": True}}
def update(self, instance, validated_data): def update(self, instance, validated_data):
partial = self.context.get("is_partial", False) partial = validated_data.get("is_partial", False)
return serializers.ModelSerializer.update( return serializers.ModelSerializer.update(self, instance, validated_data)
self, instance, validated_data, partial=partial
)
class LoginHistorySerializer(serializers.ModelSerializer): class LoginHistorySerializer(serializers.ModelSerializer):
......
...@@ -19,6 +19,8 @@ from .serializers import ( ...@@ -19,6 +19,8 @@ from .serializers import (
Member, Member,
MemberSerializer, MemberSerializer,
TokenSerializer, TokenSerializer,
User,
UserSerializer,
) )
from .permissions import IsStaffUser, IsNotStaffUser from .permissions import IsStaffUser, IsNotStaffUser
...@@ -284,3 +286,15 @@ class ResetPasswordConfirmView(views.APIView): ...@@ -284,3 +286,15 @@ class ResetPasswordConfirmView(views.APIView):
{"message": "Reset password success"}, {"message": "Reset password success"},
status=status.HTTP_200_OK, status=status.HTTP_200_OK,
) )
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all().order_by("id")
def update(self, request, pk):
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
...@@ -14,6 +14,7 @@ from .auth.views import ( ...@@ -14,6 +14,7 @@ from .auth.views import (
TokenResetPasswordView, TokenResetPasswordView,
ResetPasswordConfirmView, ResetPasswordConfirmView,
UserDetailView, UserDetailView,
UserViewSet,
) )
from .book.views import BookViewSet, CategoryViewSet from .book.views import BookViewSet, CategoryViewSet
from .loans.views import ( from .loans.views import (
...@@ -25,6 +26,7 @@ from .loans.views import ( ...@@ -25,6 +26,7 @@ from .loans.views import (
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r"user", UserViewSet, basename="user")
router.register(r"librarians", LibrarianViewSet, basename="librarians") router.register(r"librarians", LibrarianViewSet, basename="librarians")
router.register(r"members", MemberViewSet, basename="members") router.register(r"members", MemberViewSet, basename="members")
router.register(r"books", BookViewSet, basename="books") router.register(r"books", BookViewSet, basename="books")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment