X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/663e996e1f8b3dfd0904a44dc40541e67814079e..e1e0bdc6aed0ca388dd1c8da7a0721beb0f1a2e4:/src/search/views.py diff --git a/src/search/views.py b/src/search/views.py index 4f9a25602..6a9e1ea84 100644 --- a/src/search/views.py +++ b/src/search/views.py @@ -29,52 +29,58 @@ def get_hints(prefix, user=None, limit=10): data = [] if len(data) < limit: authors = catalogue.models.Tag.objects.filter( - category='author', name_pl__iregex='\m' + prefix).only('name', 'id', 'slug', 'category') + category='author', name_pl__iregex=r'\m' + prefix).only('name', 'id', 'slug', 'category') data.extend([ { 'type': 'author', 'label': author.name, 'url': author.get_absolute_url(), 'img': get_thumbnail(author.photo, '72x72', crop='top').url if author.photo else '', + 'slug': author.slug, + 'id': author.id, } for author in authors[:limit - len(data)] ]) if user is not None and user.is_authenticated and len(data) < limit: tags = social.models.UserList.objects.filter( - user=user, name__iregex='\m' + prefix).only('name', 'id', 'slug') + user=user, name__iregex=r'\m' + prefix).only('name', 'id', 'slug') data.extend([ { 'type': 'userlist', 'label': tag.name, 'url': tag.get_absolute_url(), + 'slug': tag.slug, } for tag in tags[:limit - len(data)] ]) if len(data) < limit: tags = catalogue.models.Tag.objects.filter( - category__in=('theme', 'genre', 'epoch', 'kind'), name_pl__iregex='\m' + prefix).only('name', 'id', 'slug', 'category') + category__in=('theme', 'genre', 'epoch', 'kind'), name_pl__iregex=r'\m' + prefix).only('name', 'id', 'slug', 'category') data.extend([ { 'type': tag.category, 'label': tag.name, 'url': tag.get_absolute_url(), + 'slug': tag.slug, + 'id': tag.id, } for tag in tags[:limit - len(data)] ]) if len(data) < limit: collections = catalogue.models.Collection.objects.filter( - title_pl__iregex='\m' + prefix).only('title', 'slug') + title_pl__iregex=r'\m' + prefix).only('title', 'slug') data.extend([ { 'type': 'collection', 'label': collection.title, 'url': collection.get_absolute_url(), + 'slug': collection.slug, } for collection in collections[:limit - len(data)] ]) if len(data) < limit: - for b in catalogue.models.Book.objects.filter(findable=True, title__iregex='\m' + prefix)[:limit-len(data)]: + for b in catalogue.models.Book.objects.filter(findable=True, title__iregex=r'\m' + prefix)[:limit-len(data)]: author_str = b.author_unicode() translator = b.translator() if translator: @@ -86,18 +92,20 @@ def get_hints(prefix, user=None, limit=10): 'author': author_str, 'url': b.get_absolute_url(), 'img': get_thumbnail(b.cover_clean, '72x72').url if b.cover_clean else '', + 'slug': b.slug, } ) if len(data) < limit: infos = infopages.models.InfoPage.objects.filter( published=True, findable=True, - title_pl__iregex='\m' + prefix).only('title', 'id', 'slug') + title_pl__iregex=r'\m' + prefix).only('title', 'id', 'slug') data.extend([ { 'type': 'info', 'label': info.title, 'url': info.get_absolute_url(), + 'slug': info.slug, } for info in infos[:limit - len(data)] ])