1 # This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
5 from django.shortcuts import render, get_object_or_404
6 from django.views.decorators import cache
8 from catalogue.utils import get_random_hash
9 from catalogue.models import Book
10 from social.models import UserList
11 from lesmianator.models import Poem, Continuations
14 def main_page(request):
15 last = Poem.objects.all().order_by('-created_at')[:10]
16 shelves = UserList.objects.filter(user__username='lesmianator')
20 'lesmianator/lesmianator.html',
21 {"last": last, "shelves": shelves})
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)
32 'lesmianator/poem.html',
37 def poem_from_book(request, slug):
38 book = get_object_or_404(Book, slug=slug)
39 user = request.user if request.user.is_authenticated else None
40 text = Poem.write(Continuations.get(book))
41 p = Poem(slug=get_random_hash(text), text=text, created_by=user)
42 p.created_from = json.dumps([book.id])
47 'lesmianator/poem.html',
48 {"poem": p, "books": [book], "book": book})
52 def poem_from_set(request, shelf):
53 user = request.user if request.user.is_authenticated else None
54 tag = get_object_or_404(UserList, slug=shelf)
55 text = Poem.write(Continuations.get(tag))
56 p = Poem(slug=get_random_hash(text), text=text, created_by=user)
57 books = tag.get_books()
58 p.created_from = json.dumps([b.id for b in books])
61 book = books[0] if len(books) == 1 else None
65 'lesmianator/poem.html',
66 {"poem": p, "shelf": tag, "books": books, "book": book})
69 def get_poem(request, poem):
70 p = get_object_or_404(Poem, slug=poem)
72 created_from = json.loads(p.created_from or '[]')
74 books = Book.objects.filter(id__in=created_from)
75 book = books[0] if len(books) == 1 else None
81 'lesmianator/poem.html',
82 {"poem": p, "books": books, "book": book})