Commit c6257697 authored by Ilham Maulana's avatar Ilham Maulana 💻

feat: member loan api,

fix: deactivated search book loan
parent 46a43802
...@@ -4,15 +4,14 @@ from rest_framework.response import Response ...@@ -4,15 +4,14 @@ from rest_framework.response import Response
from rest_framework.filters import SearchFilter from rest_framework.filters import SearchFilter
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from .serializers import BookLoan, BookLoanSerializer from .serializers import BookLoan, BookLoanSerializer, MemberLoanSerializer
class BookLoanViewSet(viewsets.ModelViewSet): class BookLoanViewSet(viewsets.ModelViewSet):
queryset = BookLoan.objects.all().order_by("loan_date") queryset = BookLoan.objects.all().order_by("loan_date")
serializer_class = BookLoanSerializer serializer_class = BookLoanSerializer
filter_backends = [DjangoFilterBackend, SearchFilter] filter_backends = [DjangoFilterBackend, SearchFilter]
filterset_fields = ["loan_date", "due_date", "return_date", "member__id"] filterset_fields = ["loan_date", "due_date", "return_date"]
search_fields = ["book__title", "member__name"]
def update(self, request, pk): def update(self, request, pk):
instance = self.get_object() instance = self.get_object()
...@@ -40,3 +39,12 @@ class UpComingBookLoanViewSet(BookLoanViewSet): ...@@ -40,3 +39,12 @@ class UpComingBookLoanViewSet(BookLoanViewSet):
.filter(due_date__gte=now) .filter(due_date__gte=now)
.order_by("loan_date") .order_by("loan_date")
) )
class MemberLoanViewSet(BookLoanViewSet):
queryset = BookLoan.objects.all()
serializer_class = MemberLoanSerializer
def get_queryset(self):
member_id = self.kwargs.get("member_id")
return BookLoan.objects.filter(member__id=member_id).order_by("loan_date")
...@@ -14,6 +14,7 @@ from .loans.views import ( ...@@ -14,6 +14,7 @@ from .loans.views import (
BookLoanViewSet, BookLoanViewSet,
OverduedBookLoanViewSet, OverduedBookLoanViewSet,
UpComingBookLoanViewSet, UpComingBookLoanViewSet,
MemberLoanViewSet,
) )
...@@ -30,6 +31,9 @@ router.register( ...@@ -30,6 +31,9 @@ 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
...@@ -39,4 +43,9 @@ urlpatterns = [ ...@@ -39,4 +43,9 @@ urlpatterns = [
), ),
path("members/auth/login", MemberLoginView.as_view(), name="member_login"), path("members/auth/login", MemberLoginView.as_view(), name="member_login"),
path("members/auth/logout", MemberLogoutView.as_view(), name="member_logout"), path("members/auth/logout", MemberLogoutView.as_view(), name="member_logout"),
path(
"members/<int:member_id>/",
include(router_member_loan.urls),
name="member_loans",
),
] ]
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