Commit 041514f6 authored by impfundev's avatar impfundev

feat: books, members, librarians, book_loans list endpoint

parent 11672ca0
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from rest_framework import serializers from rest_framework import serializers
from books.models import Book
from members.models import Members
from book_loans.models import BookLoans
from librarians.models import Librarians
class UserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = get_user_model() model = get_user_model()
fields = ["url", "id", "username", "email", "is_staff"] fields = ["url", "id", "username", "email", "password", "is_staff"]
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ["title", "description", "stock", "created_at", "updated_at"]
class MemberSerializer(serializers.ModelSerializer):
class Meta:
model = Members
fields = ["name", "email", "password", "created_at", "updated_at"]
class LibrarianSerializer(serializers.ModelSerializer):
class Meta:
model = Librarians
fields = ["name", "email", "password", "created_at", "updated_at"]
class BookLoanSerializer(serializers.ModelSerializer):
class Meta:
model = BookLoans
fields = [
"book",
"member",
"librarians",
"notes",
"loan_date",
"due_date",
"return_date",
"created_at",
"updated_at",
]
from django.urls import path, include from django.urls import path, include
from rest_framework import routers from rest_framework import routers
from api.views import UserViewSet from api.views import (
UserViewSet,
BookViewSet,
MemberViewSet,
LibrarianViewSet,
BookLoanViewSet,
)
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r"users", UserViewSet, basename="user") router.register(r"users", UserViewSet, basename="user")
router.register(r"books", BookViewSet, basename="books")
router.register(r"members", MemberViewSet, basename="members")
router.register(r"librarians", LibrarianViewSet, basename="librarians")
router.register(r"book_loans", BookLoanViewSet, basename="book_loans")
urlpatterns = [ urlpatterns = [
path("", include(router.urls)), path("", include(router.urls)),
......
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from api.serializers import get_user_model, UserSerializer from django_filters.rest_framework import DjangoFilterBackend
from api.serializers import (
get_user_model,
UserSerializer,
Book,
BookSerializer,
Members,
MemberSerializer,
Librarians,
LibrarianSerializer,
BookLoans,
BookLoanSerializer,
)
class UserViewSet(ModelViewSet): class UserViewSet(ModelViewSet):
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
queryset = get_user_model().objects.all().order_by("id") queryset = get_user_model().objects.all().order_by("id")
serializer_class = UserSerializer serializer_class = UserSerializer
class BookViewSet(ModelViewSet):
queryset = Book.objects.all().order_by("created_at")
serializer_class = BookSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ["title", "description"]
class MemberViewSet(ModelViewSet):
queryset = Members.objects.all().order_by("created_at")
serializer_class = MemberSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ["name", "email"]
class LibrarianViewSet(ModelViewSet):
queryset = Librarians.objects.all().order_by("created_at")
serializer_class = LibrarianSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ["name", "email"]
class BookLoanViewSet(ModelViewSet):
queryset = BookLoans.objects.all().order_by("created_at")
serializer_class = BookLoanSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = [
"loan_date",
"due_date",
"return_date",
]
...@@ -25,7 +25,7 @@ JWT_SECRET = getenv("JWT_SECRET", default="") ...@@ -25,7 +25,7 @@ JWT_SECRET = getenv("JWT_SECRET", default="")
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "django-insecure-3-$!7+86e)2ps3i+3=da5(7-a=gt$p_@+=)fuh2jj-2!eym$3y" SECRET_KEY = JWT_SECRET
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
...@@ -64,6 +64,7 @@ INSTALLED_APPS = [ ...@@ -64,6 +64,7 @@ INSTALLED_APPS = [
"debug_toolbar", "debug_toolbar",
"rest_framework", "rest_framework",
"rest_framework.authtoken", "rest_framework.authtoken",
"django_filters",
"allauth", "allauth",
"allauth.account", "allauth.account",
"allauth.socialaccount", "allauth.socialaccount",
...@@ -88,6 +89,7 @@ REST_FRAMEWORK = { ...@@ -88,6 +89,7 @@ REST_FRAMEWORK = {
"rest_framework.authentication.SessionAuthentication", "rest_framework.authentication.SessionAuthentication",
"rest_framework.authentication.TokenAuthentication", "rest_framework.authentication.TokenAuthentication",
], ],
"DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend"],
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
"PAGE_SIZE": 10, "PAGE_SIZE": 10,
} }
......
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