X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/81f4a0e5709e2bf818244a07cbb715a54c96f3eb..e7ef95e5867bba96cb445fef0d8932ab5ed6c938:/apps/api/handlers.py?ds=sidebyside diff --git a/apps/api/handlers.py b/apps/api/handlers.py index 270a4fdf6..586e921ca 100644 --- a/apps/api/handlers.py +++ b/apps/api/handlers.py @@ -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 picture.models import Picture +from picture.forms import PictureImportForm from stats.utils import piwik_track @@ -97,14 +99,10 @@ class BookDetailHandler(BaseHandler): '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. """ - kwargs = Book.split_urlid(book) - if not kwargs: - return rc.NOT_FOUND - try: - return Book.objects.get(**kwargs) + return Book.objects.get(slug=slug) 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. """ - return API_BASE + reverse("api_book", args=[book.urlid()]) + return API_BASE + reverse("api_book", args=[book.slug]) @classmethod def url(cls, book): @@ -267,18 +265,10 @@ class FragmentDetailHandler(BaseHandler): 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. """ - 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: - return Fragment.objects.get(anchor=anchor, **fragment_kwargs) + return Fragment.objects.get(book__slug=slug, anchor=anchor) 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. """ - 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): @@ -588,11 +579,11 @@ class PictureHandler(BaseHandler): 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')) - form = BookImportForm(data) + form = PictureImportForm(data) if form.is_valid(): form.save() return rc.CREATED