def main_page(request): ctx = { 'last_published': Book.objects.exclude(cover_thumb='').filter( parent=None).order_by('-created_at')[:6], 'theme_books': [], 'cite': get_or_choose_cite(request), } # for category in ('author', 'epoch', 'genre', 'kind'): # try: # ctx[category] = Tag.objects.filter(category=category).order_by('?')[:1][0] # except IndexError: # pass # FIXME: find this theme and books properly. if Fragment.objects.exists(): while True: ctx['theme'] = Tag.objects.filter( category='theme').order_by('?')[:1][0] tf = Fragment.tagged.with_any( [ctx['theme']]).select_related('book').order_by('?')[:100] if not tf: continue ctx['theme_fragment'] = tf[0] for f in tf: if f.book not in ctx['theme_books']: ctx['theme_books'].append(f.book) if len(ctx['theme_books']) == 3: break break # Choose a collection for main. try: ctx['collection'] = Collection.objects.order_by('?')[:1][0] except IndexError: pass ctx['best'] = Book.objects.order_by('?')[:5] return render(request, "main_page.html", ctx)
def main_page(request): ctx = { 'last_published': Book.objects.exclude(cover_thumb='').filter(parent=None).order_by('-created_at')[:6], 'theme_books': [], 'cite': get_or_choose_cite(request), } # for category in ('author', 'epoch', 'genre', 'kind'): # try: # ctx[category] = Tag.objects.filter(category=category).order_by('?')[:1][0] # except IndexError: # pass # FIXME: find this theme and books properly. if Fragment.objects.exists(): while True: ctx['theme'] = Tag.objects.filter(category='theme').order_by('?')[:1][0] tf = Fragment.tagged.with_any([ctx['theme']]).select_related('book').order_by('?')[:100] if not tf: continue ctx['theme_fragment'] = tf[0] for f in tf: if f.book not in ctx['theme_books']: ctx['theme_books'].append(f.book) if len(ctx['theme_books']) == 3: break break # Choose a collection for main. try: ctx['collection'] = Collection.objects.order_by('?')[:1][0] except IndexError: pass ctx['best'] = Book.objects.order_by('?')[:5] return render(request, "main_page.html", ctx)
def choose_cite_tag(request, book_id=None, tag_ids=None): cite = get_or_choose_cite(request, book_id, tag_ids) return cite.pk if cite is not None else None