Commit 6462c054 authored by Ilham Maulana's avatar Ilham Maulana 💻

fix: sift categories endpoint to not use drf

parent 342ad9d6
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.filters import SearchFilter
from django_filters.rest_framework import DjangoFilterBackend
from book.models import Book, Category
from .serializers import BookSerializer, CategorySerializer
@csrf_exempt
......@@ -51,40 +45,19 @@ def bookView(request):
return JsonResponse({"message": "Invalid request method"}, status=405)
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all().order_by("created_at")
serializer_class = BookSerializer
filter_backends = [DjangoFilterBackend, SearchFilter]
filterset_fields = ["category__name"]
search_fields = ["title"]
def get_queryset(self):
year = self.request.query_params.get("year")
queryset = self.queryset
if year is not None:
return queryset.filter(publish_date__year=year)
return queryset
def update(self, request, pk):
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
@csrf_exempt
def categoryView(request):
categories = Category.objects.all().order_by("created_at")
if request.method == "GET":
data = []
for category_item in categories:
category = {
"id": category_item.id,
"name": category_item.name,
}
data.append(category)
class CategoryViewSet(viewsets.ModelViewSet):
queryset = Category.objects.all().order_by("created_at")
serializer_class = CategorySerializer
filter_backends = [DjangoFilterBackend, SearchFilter]
filterset_fields = ["created_at", "updated_at"]
search_fields = ["name"]
return JsonResponse(data, safe=False, status=200)
def update(self, request, pk):
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
return JsonResponse({"message": "Invalid request method"}, status=405)
......@@ -14,17 +14,15 @@ from .auth.views import (
resetPasswordConfirmView,
)
from .book.views import bookView, CategoryViewSet
from .book.views import bookView, categoryView
from .loans.views import (
BookLoanViewSet,
OverduedBookLoanViewSet,
UpComingBookLoanViewSet,
MemberLoanViewSet,
)
router = routers.DefaultRouter()
router.register(r"categories", CategoryViewSet, basename="categories")
router.register(r"book-loans", BookLoanViewSet, basename="book_loans")
router.register(
r"overdued-loans", OverduedBookLoanViewSet, basename="book_loans_overdued"
......@@ -33,9 +31,6 @@ router.register(
r"upcoming-loans", UpComingBookLoanViewSet, basename="book_loans_upcoming"
)
router_member_loan = routers.DefaultRouter()
router_member_loan.register(r"loans", MemberLoanViewSet, basename="member_loans")
urlpatterns = [
path("", include(router.urls)),
# auth
......@@ -55,4 +50,6 @@ urlpatterns = [
path("auth/check-auth-session", checkAuthSessionView, name="check_auth_session"),
# books
path("books", bookView, name="books"),
# categories
path("categories", categoryView, name="categories"),
]
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