X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/f25170a0a98f982f01ca5d93425ce85477bd930e..8887547a016bbf665ffc4175346f655f0dfa63fb:/src/api/handlers.py diff --git a/src/api/handlers.py b/src/api/handlers.py index ab1a44a52..830f0a99a 100644 --- a/src/api/handlers.py +++ b/src/api/handlers.py @@ -9,6 +9,7 @@ from django.core.urlresolvers import reverse from django.http.response import HttpResponse from django.utils.functional import lazy from django.db import models +from migdal.models import Entry from piston.handler import AnonymousBaseHandler, BaseHandler from piston.utils import rc from sorl.thumbnail import default @@ -714,3 +715,30 @@ class UserShelfHandler(BookDetailHandler): if count: books = books[:count] return books + + +class BlogEntryHandler(BaseHandler): + model = Entry + fields = ('title', 'lead', 'body', 'place', 'time', 'image_url', 'gallery_urls', 'type', 'key') + + def read(self, request): + after = request.GET.get('after') + count = int(request.GET.get('count', 20)) + entries = Entry.published_objects.filter(in_stream=True).order_by('-first_published_at') + if after: + entries = entries.filter(first_published_at__lt=after) + if count: + entries = entries[:count] + return entries + + @classmethod + def image_url(cls, entry): + return entry.image.url if entry.image else None + + @classmethod + def gallery_urls(cls, entry): + return [photo.url() for photo in entry.photo_set.all()] + + @classmethod + def key(cls, entry): + return entry.first_published_at