class Meta:
model = Fragment
fields = ['book', 'anchor', 'text', 'url', 'themes']
+
+
+class FilterTagSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Tag
+ fields = ['id', 'category', 'name']
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"),
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
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)