X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/d2b0cc75d0835ad5384bec638fea6ea244eadb40..05901815616a29900729502d346b1eed8d9ae923:/src/wolnelektury/views.py?ds=sidebyside diff --git a/src/wolnelektury/views.py b/src/wolnelektury/views.py index 415a4fd1b..48063d29b 100644 --- a/src/wolnelektury/views.py +++ b/src/wolnelektury/views.py @@ -48,11 +48,25 @@ def main_page(request): # Choose a collection for main. try: - ctx['collection'] = Collection.objects.order_by('?')[:1][0] + ctx['collection'] = Collection.objects.filter(listed=True).order_by('?')[:1][0] except IndexError: pass - ctx['best'] = Book.objects.filter(findable=True).order_by('?')[:5] + best = [] + best_places = 5 + for recommended in Collection.objects.filter(listed=True, role='recommend').order_by('?'): + books = list(recommended.get_books().exclude(id__in=[b.id for b in best]).order_by('?')[:best_places]) + best.extend(books) + best_places -= len(books) + if not best_places: + break + if best_places: + best.extend( + list( + Book.objects.filter(findable=True).exclude(id__in=[b.id for b in best]).order_by('?')[:best_places] + ) + ) + ctx['best'] = best return render(request, "main_page.html", ctx)