for author in authors[:limit]
]
if len(data) < limit:
- data += [
- {
- 'label': b.title,
- 'author': b.author_unicode(),
- 'id': b.id,
- 'url': b.get_absolute_url()
- }
- for b in Book.objects.filter(findable=True, title__iregex='\m' + prefix)[:limit-len(data)]
- ]
+ for b in Book.objects.filter(findable=True, title__iregex='\m' + prefix)[:limit-len(data)]:
+ author_str = b.author_unicode()
+ translator = b.translator()
+ if translator:
+ author_str += ' (tłum. ' + translator + ')'
+ data.append(
+ {
+ 'label': b.title,
+ 'author': author_str,
+ 'id': b.id,
+ 'url': b.get_absolute_url()
+ }
+ )
if mozhint:
data = [
'genre': genre,
},
'tags': {
- 'epoch': Tag.objects.filter(category='epoch'),
- 'genre': Tag.objects.filter(category='genre'),
- 'kind': Tag.objects.filter(category='kind'),
+ 'epoch': Tag.objects.filter(category='epoch', for_books=True),
+ 'genre': Tag.objects.filter(category='genre', for_books=True),
+ 'kind': Tag.objects.filter(category='kind', for_books=True),
},
})
def ensure_exists(r):
try:
- r.book
+ if not r.book:
+ return False
except Book.DoesNotExist:
return False
- print(lang, r.book.language)
if lang and r.book.language != lang:
return False
if only_audio and not r.book.has_mp3_file():
def ensure_exists(r):
try:
- return r.picture
+ if not r.picture:
+ return False
except Picture.DoesNotExist:
return False
if genre and not r.picture.tags.filter(category='genre', slug=genre).exists():
return False
+ return True
+
results = [r for r in results if ensure_exists(r)]
return results