fix: floating bookmarks

- update floating bookmarks
- fix search suggestions
- fix filters
This commit is contained in:
2026-06-03 22:33:24 -05:00
parent 054e7689bd
commit d9c66e68a6
11 changed files with 296 additions and 75 deletions
+25 -1
View File
@@ -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: