Account Management mostly implemented

This commit is contained in:
Alexander Laevens
2022-11-25 18:50:30 -07:00
parent 35fc396050
commit 839147e0b0
175 changed files with 7508 additions and 72 deletions

View File

@@ -1,7 +1,10 @@
from rest_framework import generics, permissions, views, status
from rest_framework import generics, permissions, viewsets, mixins, filters, pagination
from rest_framework.response import Response
from users import serializers, models
from users.models import *
from users.serializers import *
class Pagination(pagination.PageNumberPagination):
page_size = 4
class IsOwner(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
@@ -12,10 +15,17 @@ class IsOwner(permissions.BasePermission):
# Anyone can register
class RegisterUserView(generics.CreateAPIView):
model = models.User
serializer_class = serializers.UserSerializer
class UsersListView(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
model = User
serializer_class = UserSerializer
permission_classes = [permissions.AllowAny]
queryset = User.objects.all().order_by("first_name", "last_name", "username")
filter_backends = [filters.SearchFilter]
search_fields = ["username", "first_name", "last_name"]
pagination_class = Pagination
def get_serializer(self, *args, **kwargs):
return super().get_serializer(*args, **kwargs)
# Allows user to modify their own data only
@@ -24,13 +34,13 @@ class ModifyUserView(generics.RetrieveUpdateDestroyAPIView):
permissions.IsAuthenticated,
IsOwner
]
model = models.User
serializer_class = serializers.UserSerializer
model = User
serializer_class = UserSerializer
def get_object(self):
return models.User.objects.get(pk=self.request.user.id)
return User.objects.get(pk=self.request.user.id)
def retrieve(self, request, *args, **kwargs):
user = models.User.objects.get(pk=request.user.id)
serializer = serializers.UserSerializer(user)
user = User.objects.get(pk=request.user.id)
serializer = UserSerializer(user, context={"request":request})
return Response(serializer.data)