X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/f293bf6e6217d2277d11b65fdb63bc35badc8e68..0a693dbc08fd1c2c95538f627985fc03f9e3b684:/apps/api/handlers.py diff --git a/apps/api/handlers.py b/apps/api/handlers.py index f99dd90ab..586e921ca 100644 --- a/apps/api/handlers.py +++ b/apps/api/handlers.py @@ -16,6 +16,7 @@ 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 @@ -98,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 @@ -126,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): @@ -268,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 @@ -316,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): @@ -589,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