Browse Source

temp changes to category

must change after tokens fixed.
master
Mohsen Taba 5 months ago
parent
commit
613b74f700
  1. 23
      apps/library/serializers.py
  2. 40
      apps/library/views.py

23
apps/library/serializers.py

@ -8,6 +8,8 @@ from rest_framework import serializers
from apps.library.models import *
from apps.bookmark.serializers import *
from apps.account.models import User
@ -70,9 +72,11 @@ class BookSerializer(serializers.ModelSerializer):
"""
Get bookmark information for this book.
"""
# Get the current user from the request context
request = self.context.get('request')
user = request.user if request else None
# DEBUG: Hardcode user to root@admin.com
user = User.objects.get(email='root@admin.com')
# # Get the current user from the request context
# request = self.context.get('request')
# user = request.user if request else None
book_mark = BookmarkStatusSerializer.get_bookmark_info(
obj=obj,
user=user,
@ -85,10 +89,12 @@ class BookSerializer(serializers.ModelSerializer):
Get rate information for this book from the current user.
"""
from apps.bookmark.models.rate import Rate
# Get the current user from the request context
request = self.context.get('request')
user = request.user if request and request.user.is_authenticated else None
# DEBUG: Hardcode user to root@admin.com
user = User.objects.get(email='root@admin.com')
# # Get the current user from the request context
# request = self.context.get('request')
# user = request.user if request and request.user.is_authenticated else None
if not user:
return {
@ -155,7 +161,8 @@ class BookDownloadSerializer(serializers.ModelSerializer):
def create(self, validated_data):
"""Create a new book download record"""
book_id = validated_data.pop('book_id')
user = self.context['request'].user
user = User.objects.get(email='root@admin.com')
# user = self.context['request'].user
book = Book.objects.get(id=book_id)
# Create or update the download record

40
apps/library/views.py

@ -1,5 +1,5 @@
from django.db.models import Count, Q
from rest_framework.permissions import IsAuthenticated
from rest_framework.permissions import IsAuthenticated , AllowAny
from rest_framework.response import Response
from rest_framework.generics import ListAPIView, RetrieveAPIView, CreateAPIView
from rest_framework.filters import SearchFilter
@ -11,6 +11,7 @@ from apps.library.pagination import NoPagination
from utils.pagination import StandardResultsSetPagination
from apps.library.models import *
from apps.library.serializers import *
from apps.account.models import User
from apps.library.doc import (
book_list_swagger,
book_detail_swagger,
@ -29,7 +30,7 @@ class CategoryListView(ListAPIView):
API view to list all book categories
"""
serializer_class = CategorySerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
pagination_class = StandardResultsSetPagination
@category_list_swagger
@ -49,7 +50,7 @@ class PinnedBookCollectionListView(ListAPIView):
API view to list pinned book collections with their top 3 book covers
"""
serializer_class = PinnedBookCollectionSerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
pagination_class = NoPagination
@pinned_collection_list_swagger
@ -92,7 +93,7 @@ class BookListView(ListAPIView):
API view to list books with filtering and search capabilities
"""
serializer_class = BookSerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
filter_backends = [SearchFilter]
search_fields = ['title', 'summary', 'publisher', 'isbn']
pagination_class = StandardResultsSetPagination
@ -139,9 +140,16 @@ class BookListView(ListAPIView):
# Import Bookmark model here to avoid circular imports
from apps.bookmark.models import Bookmark
# Get all bookmarked book IDs for the current user
# DEBUG: Hardcode user to root@admin.com
user = User.objects.get(email='root@admin.com')
# # Get all bookmarked book IDs for the current user
# bookmarked_ids = Bookmark.objects.filter(
# user=self.request.user,
# service=Bookmark.ServiceChoices.LIBRARY,
# status=True
# ).values_list('content_id', flat=True)
bookmarked_ids = Bookmark.objects.filter(
user=self.request.user,
user=user,
service=Bookmark.ServiceChoices.LIBRARY,
status=True
).values_list('content_id', flat=True)
@ -174,7 +182,7 @@ class BookDetailView(RetrieveAPIView):
API view to retrieve detailed information about a specific book
"""
serializer_class = BookSerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
queryset = Book.objects.filter(status=True)
@book_detail_swagger
@ -194,7 +202,7 @@ class MiddleBookCollectionListView(ListAPIView):
API view to list middle section book collections with their books
"""
serializer_class = MiddleBookCollectionSerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
pagination_class = NoPagination
@middle_collection_list_swagger
@ -213,7 +221,7 @@ class DownloadedBooksListView(ListAPIView):
API view to list books that have been downloaded by the current user
"""
serializer_class = BookSerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
filter_backends = [SearchFilter]
search_fields = ['title', 'summary', 'publisher', 'isbn']
pagination_class = StandardResultsSetPagination
@ -249,12 +257,18 @@ class DownloadedBooksListView(ListAPIView):
return super().get(request, *args, **kwargs)
def get_queryset(self):
# Get all downloaded book IDs for the current user
# DEBUG: Hardcode user to root@admin.com
user = User.objects.get(email='root@admin.com')
# # Get all downloaded book IDs for the current user
# downloaded_ids = BookDownload.objects.filter(
# user=self.request.user,
# status=True
# ).values_list('book_id', flat=True)
downloaded_ids = BookDownload.objects.filter(
user=self.request.user,
user=user,
status=True
).values_list('book_id', flat=True)
# Return books that match these IDs
return Book.objects.filter(
id__in=downloaded_ids,
@ -267,7 +281,7 @@ class BookDownloadCreateAPIView(CreateAPIView):
API view to create a book download record and increment the book's download count
"""
serializer_class = BookDownloadSerializer
permission_classes = (IsAuthenticated,)
permission_classes = (AllowAny,)
@swagger_auto_schema(
operation_id="download_book",

Loading…
Cancel
Save