Archived
fix: floating bookmarks
- update floating bookmarks - fix search suggestions - fix filters
This commit is contained in:
@@ -21,6 +21,7 @@ from apps.books.serializers import (
|
||||
ReadingProgressSerializer, StorageSummarySerializer,
|
||||
)
|
||||
from apps.reader.models import ReadingSettings
|
||||
from apps.books.services.ebook_metadata import subjects_from_ebook
|
||||
from apps.books.services.metadata import enrich_ebook_metadata
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -96,7 +97,30 @@ class EBookViewSet(viewsets.ModelViewSet):
|
||||
return EBookDetailSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return EBook.objects.filter(user=self.request.user).select_related("reading_progress", "user")
|
||||
qs = EBook.objects.filter(user=self.request.user).select_related("reading_progress", "user")
|
||||
query = self.request.query_params.get("q", "").strip()
|
||||
if query and self.action == "list":
|
||||
qs = qs.filter(
|
||||
Q(title__icontains=query) | Q(author__icontains=query),
|
||||
)
|
||||
return qs
|
||||
|
||||
@action(detail=False, methods=["get"])
|
||||
def genres(self, request: Request) -> Response:
|
||||
genre_set: set[str] = set()
|
||||
for ebook in self.get_queryset():
|
||||
genre_set.update(subjects_from_ebook(ebook))
|
||||
return Response(sorted(genre_set))
|
||||
|
||||
@action(detail=False, methods=["get"])
|
||||
def authors(self, request: Request) -> Response:
|
||||
author_list = (
|
||||
self.get_queryset()
|
||||
.values_list("author", flat=True)
|
||||
.distinct()
|
||||
.order_by("author")
|
||||
)
|
||||
return Response([a for a in author_list if a])
|
||||
|
||||
@action(detail=True, methods=["get", "patch"])
|
||||
def progress(self, request: Request, pk: int | None = None) -> Response:
|
||||
|
||||
Reference in New Issue
Block a user