X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/7e890833260e5aef8ae217d195309b76fa91c02f..b9bf77dc8f2d4b1b64bd7a29730bec3e3f885a6e:/apps/lesmianator/views.py diff --git a/apps/lesmianator/views.py b/apps/lesmianator/views.py index 3307a2598..cebcf8bae 100644 --- a/apps/lesmianator/views.py +++ b/apps/lesmianator/views.py @@ -1,5 +1,6 @@ # Create your views here. +from django.http import Http404 from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext from django.contrib.auth.decorators import login_required @@ -23,7 +24,7 @@ def main_page(request): @cache.never_cache def new_poem(request): - user = request.user if request.user.is_authenticated else None + user = request.user if request.user.is_authenticated() else None text = Poem.write() p = Poem(slug=get_random_hash(text), text=text, created_by=user) p.save() @@ -34,9 +35,12 @@ def new_poem(request): @cache.never_cache -def poem_from_book(request, slug): - book = get_object_or_404(Book, slug=slug) - user = request.user if request.user.is_authenticated else None +def poem_from_book(request, book): + kwargs = Book.split_urlid(book) + if kwargs is None: + raise Http404 + book = get_object_or_404(Book, **kwargs) + user = request.user if request.user.is_authenticated() else None text = Poem.write(Continuations.get(book)) p = Poem(slug=get_random_hash(text), text=text, created_by=user) p.set_created_from_value([book.id]) @@ -48,9 +52,8 @@ def poem_from_book(request, slug): @cache.never_cache -@login_required def poem_from_set(request, shelf): - user = request.user + user = request.user if request.user.is_authenticated() else None tag = get_object_or_404(Tag, category='set', slug=shelf) text = Poem.write(Continuations.get(tag)) p = Poem(slug=get_random_hash(text), text=text, created_by=user) @@ -67,8 +70,11 @@ def poem_from_set(request, shelf): def get_poem(request, poem): p = get_object_or_404(Poem, slug=poem) p.visit() - books = Book.objects.filter(id__in=p.get_created_from_value()) - book = books[0] if len(books) == 1 else None + if p.created_from: + books = Book.objects.filter(id__in=p.get_created_from_value()) + book = books[0] if len(books) == 1 else None + else: + books = book = None return render_to_response('lesmianator/poem.html', {"poem": p, "books": books, "book": book},