Example #1
0
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)
Example #2
0
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)
Example #3
0
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
Example #4
0
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