minor changes in paypal
[wolnelektury.git] / src / api / handlers.py
index c899976..ab1a44a 100644 (file)
@@ -164,7 +164,8 @@ class BookDetailHandler(BaseHandler, BookDetails):
     """
     allowed_methods = ['GET']
     fields = ['title', 'parent', 'children'] + Book.formats + [
     """
     allowed_methods = ['GET']
     fields = ['title', 'parent', 'children'] + Book.formats + [
-        'media', 'url', 'cover', 'cover_thumb', 'simple_thumb', 'simple_cover', 'fragment_data', 'preview'] + [
+        'media', 'url', 'cover', 'cover_thumb', 'simple_thumb', 'simple_cover', 'fragment_data', 'audio_length',
+        'preview'] + [
             category_plural[c] for c in book_tag_categories]
 
     @piwik_track
             category_plural[c] for c in book_tag_categories]
 
     @piwik_track
@@ -183,7 +184,7 @@ class AnonymousBooksHandler(AnonymousBaseHandler, BookDetails):
     """
     allowed_methods = ('GET',)
     model = Book
     """
     allowed_methods = ('GET',)
     model = Book
-    fields = book_tag_categories + ['href', 'title', 'url', 'cover', 'cover_thumb', 'slug', 'simple_thumb']
+    fields = book_tag_categories + ['href', 'title', 'url', 'cover', 'cover_thumb', 'slug', 'simple_thumb', 'has_audio']
 
     @classmethod
     def genres(cls, book):
 
     @classmethod
     def genres(cls, book):
@@ -322,7 +323,7 @@ class QuerySetProxy(models.QuerySet):
 
 class FilterBooksHandler(AnonymousBooksHandler):
     fields = book_tag_categories + [
 
 class FilterBooksHandler(AnonymousBooksHandler):
     fields = book_tag_categories + [
-        'href', 'title', 'url', 'cover', 'cover_thumb', 'simple_thumb', 'slug', 'key']
+        'href', 'title', 'url', 'cover', 'cover_thumb', 'simple_thumb', 'has_audio', 'slug', 'key']
 
     def parse_bool(self, s):
         if s in ('true', 'false'):
 
     def parse_bool(self, s):
         if s in ('true', 'false'):
@@ -433,6 +434,7 @@ def add_file_getters():
     for book_format in Book.formats:
         setattr(BookDetails, book_format, _file_getter(book_format))
 
     for book_format in Book.formats:
         setattr(BookDetails, book_format, _file_getter(book_format))
 
+
 add_file_getters()
 
 
 add_file_getters()
 
 
@@ -624,7 +626,7 @@ class FragmentsHandler(BaseHandler, FragmentDetails):
 
         """
         try:
 
         """
         try:
-            tags, ancestors = read_tags(tags, allowed=self.categories)
+            tags, ancestors = read_tags(tags, request, allowed=self.categories)
         except ValueError:
             return rc.NOT_FOUND
         fragments = Fragment.tagged.with_all(tags).select_related('book')
         except ValueError:
             return rc.NOT_FOUND
         fragments = Fragment.tagged.with_all(tags).select_related('book')
@@ -654,16 +656,18 @@ class PictureHandler(BaseHandler):
 
 class UserDataHandler(BaseHandler):
     model = BookUserData
 
 class UserDataHandler(BaseHandler):
     model = BookUserData
-    fields = ('state',)
+    fields = ('state', 'username')
     allowed_methods = ('GET', 'POST')
 
     allowed_methods = ('GET', 'POST')
 
-    def read(self, request, slug):
+    def read(self, request, slug=None):
+        if not request.user.is_authenticated():
+            return rc.FORBIDDEN
+        if slug is None:
+            return {'username': request.user.username}
         try:
             book = Book.objects.get(slug=slug)
         except Book.DoesNotExist:
             return rc.NOT_FOUND
         try:
             book = Book.objects.get(slug=slug)
         except Book.DoesNotExist:
             return rc.NOT_FOUND
-        if not request.user.is_authenticated():
-            return rc.FORBIDDEN
         try:
             data = BookUserData.objects.get(book=book, user=request.user)
         except BookUserData.DoesNotExist:
         try:
             data = BookUserData.objects.get(book=book, user=request.user)
         except BookUserData.DoesNotExist:
@@ -702,7 +706,8 @@ class UserShelfHandler(BookDetailHandler):
             return rc.NOT_FOUND
         after = request.GET.get('after')
         count = int(request.GET.get('count', 50))
             return rc.NOT_FOUND
         after = request.GET.get('after')
         count = int(request.GET.get('count', 50))
-        ids = BookUserData.objects.filter(user=request.user, complete=state == 'complete').values_list('book_id', flat=True)
+        ids = BookUserData.objects.filter(user=request.user, complete=state == 'complete')\
+            .values_list('book_id', flat=True)
         books = Book.objects.filter(id__in=list(ids)).distinct().order_by('slug')
         if after:
             books = books.filter(slug__gt=after)
         books = Book.objects.filter(id__in=list(ids)).distinct().order_by('slug')
         if after:
             books = books.filter(slug__gt=after)