1 # Create your views here.
3 from django.http import Http404
4 from django.shortcuts import render_to_response, get_object_or_404
5 from django.template import RequestContext
6 from django.contrib.auth.decorators import login_required
7 from django.views.decorators import cache
9 from catalogue.utils import get_random_hash
10 from catalogue.models import Book, Tag
11 from lesmianator.models import Poem, Continuations
14 def main_page(request):
15 last = Poem.objects.all().order_by('-created_at')[:10]
16 shelves = Tag.objects.filter(user__username='lesmianator')
18 return render_to_response('lesmianator/lesmianator.html',
19 {"last": last, "shelves": shelves},
20 context_instance=RequestContext(request))
24 def new_poem(request):
25 user = request.user if request.user.is_authenticated() else None
27 p = Poem(slug=get_random_hash(text), text=text, created_by=user)
30 return render_to_response('lesmianator/poem.html',
32 context_instance=RequestContext(request))
36 def poem_from_book(request, slug):
37 book = get_object_or_404(Book, slug=slug)
38 user = request.user if request.user.is_authenticated() else None
39 text = Poem.write(Continuations.get(book))
40 p = Poem(slug=get_random_hash(text), text=text, created_by=user)
41 p.set_created_from_value([book.id])
44 return render_to_response('lesmianator/poem.html',
45 {"poem": p, "books": [book], "book": book},
46 context_instance=RequestContext(request))
50 def poem_from_set(request, shelf):
51 user = request.user if request.user.is_authenticated() else None
52 tag = get_object_or_404(Tag, category='set', slug=shelf)
53 text = Poem.write(Continuations.get(tag))
54 p = Poem(slug=get_random_hash(text), text=text, created_by=user)
55 books = Book.tagged.with_any((tag,))
56 p.set_created_from_value([b.id for b in books])
59 book = books[0] if len(books) == 1 else None
61 return render_to_response('lesmianator/poem.html',
62 {"poem": p, "shelf": tag, "books": books, "book": book},
63 context_instance=RequestContext(request))
65 def get_poem(request, poem):
66 p = get_object_or_404(Poem, slug=poem)
69 books = Book.objects.filter(id__in=p.get_created_from_value())
70 book = books[0] if len(books) == 1 else None
74 return render_to_response('lesmianator/poem.html',
75 {"poem": p, "books": books, "book": book},
76 context_instance=RequestContext(request))