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.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt 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 book.models import Book, Category
from .serializers import BookSerializer, CategorySerializer
@csrf_exempt @csrf_exempt
...@@ -51,40 +45,19 @@ def bookView(request): ...@@ -51,40 +45,19 @@ def bookView(request):
return JsonResponse({"message": "Invalid request method"}, status=405) return JsonResponse({"message": "Invalid request method"}, status=405)
class BookViewSet(viewsets.ModelViewSet): @csrf_exempt
queryset = Book.objects.all().order_by("created_at") def categoryView(request):
serializer_class = BookSerializer categories = Category.objects.all().order_by("created_at")
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)
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): return JsonResponse(data, safe=False, status=200)
queryset = Category.objects.all().order_by("created_at")
serializer_class = CategorySerializer
filter_backends = [DjangoFilterBackend, SearchFilter]
filterset_fields = ["created_at", "updated_at"]
search_fields = ["name"]
def update(self, request, pk): return JsonResponse({"message": "Invalid request method"}, status=405)
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)
...@@ -14,17 +14,15 @@ from .auth.views import ( ...@@ -14,17 +14,15 @@ from .auth.views import (
resetPasswordConfirmView, resetPasswordConfirmView,
) )
from .book.views import bookView, CategoryViewSet from .book.views import bookView, categoryView
from .loans.views import ( from .loans.views import (
BookLoanViewSet, BookLoanViewSet,
OverduedBookLoanViewSet, OverduedBookLoanViewSet,
UpComingBookLoanViewSet, UpComingBookLoanViewSet,
MemberLoanViewSet,
) )
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r"categories", CategoryViewSet, basename="categories")
router.register(r"book-loans", BookLoanViewSet, basename="book_loans") router.register(r"book-loans", BookLoanViewSet, basename="book_loans")
router.register( router.register(
r"overdued-loans", OverduedBookLoanViewSet, basename="book_loans_overdued" r"overdued-loans", OverduedBookLoanViewSet, basename="book_loans_overdued"
...@@ -33,9 +31,6 @@ router.register( ...@@ -33,9 +31,6 @@ router.register(
r"upcoming-loans", UpComingBookLoanViewSet, basename="book_loans_upcoming" r"upcoming-loans", UpComingBookLoanViewSet, basename="book_loans_upcoming"
) )
router_member_loan = routers.DefaultRouter()
router_member_loan.register(r"loans", MemberLoanViewSet, basename="member_loans")
urlpatterns = [ urlpatterns = [
path("", include(router.urls)), path("", include(router.urls)),
# auth # auth
...@@ -55,4 +50,6 @@ urlpatterns = [ ...@@ -55,4 +50,6 @@ urlpatterns = [
path("auth/check-auth-session", checkAuthSessionView, name="check_auth_session"), path("auth/check-auth-session", checkAuthSessionView, name="check_auth_session"),
# books # books
path("books", bookView, name="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