Merge branch 'dev'
[wolnelektury.git] / src / picture / views.py
index 4337058..5de38b2 100644 (file)
@@ -2,6 +2,7 @@
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+from django.conf import settings
 from django.contrib.auth.decorators import permission_required
 from django.shortcuts import render_to_response, get_object_or_404, render
 from django.template import RequestContext
@@ -26,18 +27,17 @@ from sponsors.models import Sponsor
 #             books_nav.setdefault(tag.sort_key[0], []).append(tag)
 #
 #     return render_to_response(template_name, locals(), context_instance=RequestContext(request))
+from wolnelektury.utils import ajax
 
 
 def picture_list_thumb(request, filter=None, get_filter=None, template_name='picture/picture_list_thumb.html',
                        cache_key=None, context=None):
-    book_list = Picture.objects.all()
+    pictures = Picture.objects.all()
     if filter:
-        book_list = book_list.filter(filter)
+        pictures = pictures.filter(filter)
     if get_filter:
-        book_list = book_list.filter(get_filter())
-    book_list = book_list.order_by('sort_key_author')
-    book_list = list(book_list)
-    return render_to_response(template_name, {'book_list': book_list}, context_instance=RequestContext(request))
+        pictures = pictures.filter(get_filter())
+    return render_to_response(template_name, {'book_list': list(pictures)}, context_instance=RequestContext(request))
 
 
 def picture_detail(request, slug):
@@ -69,6 +69,33 @@ def picture_viewer(request, slug):
     }, context_instance=RequestContext(request))
 
 
+@ajax(method='get')
+def picture_page(request, key=None):
+    pictures = Picture.objects.order_by('-id')
+    if key is not None:
+        pictures = pictures.filter(id__lt=key)
+    pictures = pictures[:settings.PICTURE_PAGE_SIZE]
+    picture_data = [
+        {
+            'id': picture.id,
+            'title': picture.title,
+            'author': picture.author_unicode(),
+            'epoch': picture.tag_unicode('epoch'),
+            'kind': picture.tag_unicode('kind'),
+            'genre': picture.tag_unicode('genre'),
+            'style': picture.extra_info['style'],
+            'image_url': picture.image_file.url,
+            'width': picture.width,
+            'height': picture.height,
+        }
+        for picture in pictures
+    ]
+    return {
+        'pictures': picture_data,
+        'count': Picture.objects.count(),
+    }
+
+
 # =========
 # = Admin =
 # =========
@@ -100,10 +127,9 @@ def import_picture(request):
 @ssi_included
 def picture_mini(request, pk, with_link=True):
     picture = get_object_or_404(Picture, pk=pk)
-    author_str = ", ".join(tag.name for tag in picture.tags.filter(category='author'))
     return render(request, 'picture/picture_mini_box.html', {
         'picture': picture,
-        'author_str': author_str,
+        'author': picture.author_unicode(),
         'with_link': with_link,
     })