diff --git a/accounts/settings.py b/accounts/settings.py index 27437f7..e4af589 100644 --- a/accounts/settings.py +++ b/accounts/settings.py @@ -113,7 +113,7 @@ REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), - 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', + 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': PAGE_SIZE, "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", # 'DEFAULT_THROTTLE_CLASSES': [ diff --git a/apps/users/filters.py b/apps/users/filters.py new file mode 100644 index 0000000..3e15c05 --- /dev/null +++ b/apps/users/filters.py @@ -0,0 +1,12 @@ +import django_filters +from .models import User + + +class UserFilter(django_filters.FilterSet): + class Meta: + model = User + fields = { + 'uuid': ['in'], + } + + diff --git a/apps/users/views.py b/apps/users/views.py index a9b737d..a5fca61 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -7,6 +7,7 @@ from django.urls import reverse from django.utils import timezone from django.utils.decorators import method_decorator from django.views.generic import DetailView, UpdateView +from django_filters.rest_framework import DjangoFilterBackend from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope from rest_framework import generics, status, permissions from rest_framework.permissions import AllowAny @@ -14,6 +15,7 @@ from rest_framework.response import Response from rest_framework.views import APIView from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements +from apps.users.filters import UserFilter from apps.users.forms import OTPAuthenticationForm, ProfileUpdateForm from apps.users.models import User from apps.users.provinces_and_cities import State @@ -28,6 +30,9 @@ class UserListView(generics.ListAPIView): permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] queryset = User.objects.all() serializer_class = PublicUserSerializer + filter_backends = (DjangoFilterBackend,) + filterset_class = UserFilter + required_alternate_scopes = { "GET": [["accounts.profile:list"]], } diff --git a/utils/models.py b/utils/models.py new file mode 100644 index 0000000..0c28a0d --- /dev/null +++ b/utils/models.py @@ -0,0 +1,15 @@ +import json +import uuid +from datetime import datetime + +from django.db import models +from django.utils.translation import gettext_lazy as _ + +class BaseModel(models.Model): + id = None + uuid = models.UUIDField(primary_key=True, editable=True, default=uuid.uuid4, unique=True, db_index=True) + created_at = models.DateTimeField(auto_now_add=True, db_index=True) + updated_at = models.DateTimeField(auto_now=True, db_index=True) + + class Meta: + abstract = True