fnp
/
wolnelektury.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from:
ab9b52b
)
update
master
author
Radek Czajka
<rczajka@rczajka.pl>
Fri, 14 Mar 2025 08:05:15 +0000
(09:05 +0100)
committer
Radek Czajka
<rczajka@rczajka.pl>
Fri, 14 Mar 2025 08:05:15 +0000
(09:05 +0100)
requirements/requirements.txt
patch
|
blob
|
history
src/catalogue/api/serializers.py
patch
|
blob
|
history
src/catalogue/api/urls2.py
patch
|
blob
|
history
src/catalogue/api/views.py
patch
|
blob
|
history
diff --git
a/requirements/requirements.txt
b/requirements/requirements.txt
index
10498cb
..
084f0da
100644
(file)
--- a/
requirements/requirements.txt
+++ b/
requirements/requirements.txt
@@
-40,7
+40,7
@@
mutagen==1.47
sorl-thumbnail==12.10.0
# home-brewed & dependencies
sorl-thumbnail==12.10.0
# home-brewed & dependencies
-librarian==24.5.
7
+librarian==24.5.
8
# celery tasks
celery[redis]==5.4.0
# celery tasks
celery[redis]==5.4.0
diff --git
a/src/catalogue/api/serializers.py
b/src/catalogue/api/serializers.py
index
3e3874d
..
60e52a0
100644
(file)
--- a/
src/catalogue/api/serializers.py
+++ b/
src/catalogue/api/serializers.py
@@
-350,3
+350,9
@@
class FragmentDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Fragment
fields = ['book', 'anchor', 'text', 'url', 'themes']
class Meta:
model = Fragment
fields = ['book', 'anchor', 'text', 'url', 'themes']
+
+
+class FilterTagSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Tag
+ fields = ['id', 'category', 'name']
diff --git
a/src/catalogue/api/urls2.py
b/src/catalogue/api/urls2.py
index
164cdca
..
b16af66
100644
(file)
--- a/
src/catalogue/api/urls2.py
+++ b/
src/catalogue/api/urls2.py
@@
-20,6
+20,11
@@
urlpatterns = [
name='catalogue_api_book'
),
name='catalogue_api_book'
),
+ path('suggested-tags/',
+ piwik_track_view(views.SuggestedTags.as_view()),
+ name='catalogue_api_suggested_tags'
+ ),
+
path('authors/',
piwik_track_view(views.AuthorList.as_view()),
name="catalogue_api_author_list"),
path('authors/',
piwik_track_view(views.AuthorList.as_view()),
name="catalogue_api_author_list"),
diff --git
a/src/catalogue/api/views.py
b/src/catalogue/api/views.py
index
dac1968
..
0e758b1
100644
(file)
--- a/
src/catalogue/api/views.py
+++ b/
src/catalogue/api/views.py
@@
-19,6
+19,7
@@
from rest_framework import status
from api.handlers import read_tags
from api.utils import vary_on_auth
from catalogue.forms import BookImportForm
from api.handlers import read_tags
from api.utils import vary_on_auth
from catalogue.forms import BookImportForm
+from catalogue.helpers import get_top_level_related_tags
from catalogue.models import Book, Collection, Tag, Fragment, BookMedia
from catalogue.models.tag import prefetch_relations
from club.models import Membership
from catalogue.models import Book, Collection, Tag, Fragment, BookMedia
from catalogue.models.tag import prefetch_relations
from club.models import Membership
@@
-493,3
+494,13
@@
class FragmentView(RetrieveAPIView):
book__slug=self.kwargs['book'],
anchor=self.kwargs['anchor']
)
book__slug=self.kwargs['book'],
anchor=self.kwargs['anchor']
)
+
+
+class SuggestedTags(ListAPIView):
+ serializer_class = serializers.FilterTagSerializer
+
+ def get_queryset(self):
+ tag_ids = self.request.GET.getlist('tag', [])
+ tags = [get_object_or_404(Tag, id=tid) for tid in tag_ids]
+ related_tags = list(t.id for t in get_top_level_related_tags(tags))
+ return Tag.objects.filter(id__in=related_tags)