custom pdf download via ajaxable
[wolnelektury.git] / apps / api / handlers.py
index 270a4fd..586e921 100644 (file)
@@ -15,6 +15,8 @@ from api.helpers import timestamp
 from api.models import Deleted
 from catalogue.forms import BookImportForm
 from catalogue.models import Book, Tag, BookMedia, Fragment
 from api.models import Deleted
 from catalogue.forms import BookImportForm
 from catalogue.models import Book, Tag, BookMedia, Fragment
+from picture.models import Picture
+from picture.forms import PictureImportForm
 
 from stats.utils import piwik_track
 
 
 from stats.utils import piwik_track
 
@@ -97,14 +99,10 @@ class BookDetailHandler(BaseHandler):
         'media', 'url'] + category_singular.keys()
 
     @piwik_track
         'media', 'url'] + category_singular.keys()
 
     @piwik_track
-    def read(self, request, book):
+    def read(self, request, slug):
         """ Returns details of a book, identified by a slug and lang. """
         """ Returns details of a book, identified by a slug and lang. """
-        kwargs = Book.split_urlid(book)
-        if not kwargs:
-            return rc.NOT_FOUND
-
         try:
         try:
-            return Book.objects.get(**kwargs)
+            return Book.objects.get(slug=slug)
         except Book.DoesNotExist:
             return rc.NOT_FOUND
 
         except Book.DoesNotExist:
             return rc.NOT_FOUND
 
@@ -125,7 +123,7 @@ class AnonymousBooksHandler(AnonymousBaseHandler):
     @classmethod
     def href(cls, book):
         """ Returns an URI for a Book in the API. """
     @classmethod
     def href(cls, book):
         """ Returns an URI for a Book in the API. """
-        return API_BASE + reverse("api_book", args=[book.urlid()])
+        return API_BASE + reverse("api_book", args=[book.slug])
 
     @classmethod
     def url(cls, book):
 
     @classmethod
     def url(cls, book):
@@ -267,18 +265,10 @@ class FragmentDetailHandler(BaseHandler):
     fields = ['book', 'anchor', 'text', 'url', 'themes']
 
     @piwik_track
     fields = ['book', 'anchor', 'text', 'url', 'themes']
 
     @piwik_track
-    def read(self, request, book, anchor):
+    def read(self, request, slug, anchor):
         """ Returns details of a fragment, identified by book slug and anchor. """
         """ Returns details of a fragment, identified by book slug and anchor. """
-        kwargs = Book.split_urlid(book)
-        if not kwargs:
-            return rc.NOT_FOUND
-
-        fragment_kwargs = {}
-        for field, value in kwargs.items():
-            fragment_kwargs['book__' + field] = value
-
         try:
         try:
-            return Fragment.objects.get(anchor=anchor, **fragment_kwargs)
+            return Fragment.objects.get(book__slug=slug, anchor=anchor)
         except Fragment.DoesNotExist:
             return rc.NOT_FOUND
 
         except Fragment.DoesNotExist:
             return rc.NOT_FOUND
 
@@ -315,7 +305,8 @@ class FragmentsHandler(BaseHandler):
     def href(cls, fragment):
         """ Returns URI in the API for the fragment. """
 
     def href(cls, fragment):
         """ Returns URI in the API for the fragment. """
 
-        return API_BASE + reverse("api_fragment", args=[fragment.book.urlid(), fragment.anchor])
+        return API_BASE + reverse("api_fragment", 
+            args=[fragment.book.slug, fragment.anchor])
 
     @classmethod
     def url(cls, fragment):
 
     @classmethod
     def url(cls, fragment):
@@ -588,11 +579,11 @@ class PictureHandler(BaseHandler):
     allowed_methods = ('POST',)
 
     def create(self, request):
     allowed_methods = ('POST',)
 
     def create(self, request):
-        if not request.user.has_perm('catalogue.add_book'):
+        if not request.user.has_perm('picture.add_picture'):
             return rc.FORBIDDEN
 
         data = json.loads(request.POST.get('data'))
             return rc.FORBIDDEN
 
         data = json.loads(request.POST.get('data'))
-        form = BookImportForm(data)
+        form = PictureImportForm(data)
         if form.is_valid():
             form.save()
             return rc.CREATED
         if form.is_valid():
             form.save()
             return rc.CREATED