fnp
/
wolnelektury.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f62cf7a
)
Stub recommendation api
author
Radek Czajka
<rczajka@rczajka.pl>
Mon, 22 Dec 2025 10:26:09 +0000
(11:26 +0100)
committer
Radek Czajka
<rczajka@rczajka.pl>
Mon, 22 Dec 2025 10:26:09 +0000
(11:26 +0100)
src/catalogue/api/urls2.py
patch
|
blob
|
history
src/catalogue/api/views.py
patch
|
blob
|
history
src/catalogue/models/book.py
patch
|
blob
|
history
src/catalogue/templates/catalogue/book_detail.html
patch
|
blob
|
history
src/catalogue/templatetags/catalogue_tags.py
patch
|
blob
|
history
diff --git
a/src/catalogue/api/urls2.py
b/src/catalogue/api/urls2.py
index
46f2a36
..
3353b25
100644
(file)
--- a/
src/catalogue/api/urls2.py
+++ b/
src/catalogue/api/urls2.py
@@
-31,6
+31,9
@@
urlpatterns = [
path('books/<slug:slug>/sync/',
views.BookSyncView.as_view()
),
path('books/<slug:slug>/sync/',
views.BookSyncView.as_view()
),
+ path('books/<slug:slug>/recommended/',
+ views.BookRecommendationsView.as_view()
+ ),
path('suggested-tags/',
piwik_track_view(views.SuggestedTags.as_view()),
path('suggested-tags/',
piwik_track_view(views.SuggestedTags.as_view()),
diff --git
a/src/catalogue/api/views.py
b/src/catalogue/api/views.py
index
0f3a95f
..
8cd2b6e
100644
(file)
--- a/
src/catalogue/api/views.py
+++ b/
src/catalogue/api/views.py
@@
-226,6
+226,18
@@
class BookList2(ListAPIView):
return books
return books
+class BookRecommendationsView(ListAPIView):
+ serializer_class = serializers.BookSerializer2
+ pagination_class = None
+
+ def get_queryset(self):
+ book = get_object_or_404(
+ Book,
+ slug=self.kwargs['slug']
+ )
+ return book.recommended(limit=3)
+
+
class BookList11Labs(BookList2):
serializer_class = serializers.BookSerializer11Labs
class BookList11Labs(BookList2):
serializer_class = serializers.BookSerializer11Labs
diff --git
a/src/catalogue/models/book.py
b/src/catalogue/models/book.py
index
ee3aecb
..
eae021b
100644
(file)
--- a/
src/catalogue/models/book.py
+++ b/
src/catalogue/models/book.py
@@
-1001,6
+1001,12
@@
class Book(models.Model):
elif isinstance(publisher, list):
return ', '.join(publisher)
elif isinstance(publisher, list):
return ', '.join(publisher)
+ def recommended(self, limit=4):
+ books_qs = type(self).objects.filter(findable=True)
+ books_qs = books_qs.exclude(common_slug=self.common_slug).exclude(ancestor=self)
+ books = type(self).tagged.related_to(self, books_qs)[:limit]
+ return books
+
@classmethod
def tagged_top_level(cls, tags):
""" Returns top-level books tagged with `tags`.
@classmethod
def tagged_top_level(cls, tags):
""" Returns top-level books tagged with `tags`.
diff --git
a/src/catalogue/templates/catalogue/book_detail.html
b/src/catalogue/templates/catalogue/book_detail.html
index
ccce18b
..
2f51787
100644
(file)
--- a/
src/catalogue/templates/catalogue/book_detail.html
+++ b/
src/catalogue/templates/catalogue/book_detail.html
@@
-444,7
+444,7
@@
{% endif %}
{% endif %}
- {% related_books
_2022
book taken=book.other_versions|length as related_books %}
+ {% related_books book taken=book.other_versions|length as related_books %}
{% for rel in related_books %}
<article class="l-books__item">
<figure class="l-books__item__img">
{% for rel in related_books %}
<article class="l-books__item">
<figure class="l-books__item__img">
diff --git
a/src/catalogue/templatetags/catalogue_tags.py
b/src/catalogue/templatetags/catalogue_tags.py
index
e79563c
..
6c2368d
100644
(file)
--- a/
src/catalogue/templatetags/catalogue_tags.py
+++ b/
src/catalogue/templatetags/catalogue_tags.py
@@
-309,16
+309,8
@@
def plain_list(context, object_list, with_initials=True, by_author=False, choice
@register.simple_tag
@register.simple_tag
-def related_books_2022(book=None, limit=4, taken=0):
- limit -= taken
- max_books = limit
-
- books_qs = Book.objects.filter(findable=True)
- if book is not None:
- books_qs = books_qs.exclude(common_slug=book.common_slug).exclude(ancestor=book)
- books = Book.tagged.related_to(book, books_qs)[:max_books]
-
- return books
+def related_books(book, limit=4, taken=0):
+ return book.recommended(limit=limit - taken)
@register.simple_tag
@register.simple_tag