Add missing constraint.
[wolnelektury.git] / src / lesmianator / views.py
index f814bbc..b4cbf69 100644 (file)
@@ -1,7 +1,7 @@
-# -*- coding: utf-8 -*-
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+import json
 from django.shortcuts import render, get_object_or_404
 from django.views.decorators import cache
 
@@ -16,12 +16,12 @@ def main_page(request):
 
     return render(
         request,
-        'lesmianator/lesmianator.html',
+        'lesmianator/2022/lesmianator.html' if request.EXPERIMENTS['layout'].value else 'lesmianator/lesmianator.html',
         {"last": last, "shelves": shelves})
 
 @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()
@@ -35,10 +35,10 @@ 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
+    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.created_from = [book.id]
+    p.created_from = json.dumps([book.id])
     p.save()
 
     return render(
@@ -49,12 +49,12 @@ def poem_from_book(request, slug):
 
 @cache.never_cache
 def poem_from_set(request, shelf):
-    user = request.user if request.user.is_authenticated() else None
+    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)
     books = Book.tagged.with_any((tag,))
-    p.created_from = [b.id for b in books]
+    p.created_from = json.dumps([b.id for b in books])
     p.save()
 
     book = books[0] if len(books) == 1 else None
@@ -68,8 +68,9 @@ def poem_from_set(request, shelf):
 def get_poem(request, poem):
     p = get_object_or_404(Poem, slug=poem)
     p.visit()
-    if p.created_from:
-        books = Book.objects.filter(id__in=p.created_from)
+    created_from = json.loads(p.created_from or '[]')
+    if created_from:
+        books = Book.objects.filter(id__in=created_from)
         book = books[0] if len(books) == 1 else None
     else:
         books = book = None