added link to PR, some cleaning
[wolnelektury.git] / apps / api / handlers.py
1 # -*- coding: utf-8 -*-
2 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
4 #
5 from functools import wraps
6
7 from django.shortcuts import get_object_or_404
8 from piston.handler import AnonymousBaseHandler, BaseHandler
9 from piston.utils import rc, validate
10 from catalogue.models import Book
11 from catalogue.forms import BookImportForm
12
13
14
15 class AnonymousBooksHandler(AnonymousBaseHandler):
16     model = Book
17     fields = ('slug', 'title')
18
19     def read(self, request, slug=None):
20         if slug:
21             return get_object_or_404(Book, slug=slug)
22         else:
23             return Book.objects.all()
24
25
26 class BooksHandler(BaseHandler):
27     model = Book
28     fields = ('slug', 'title')
29     anonymous = AnonymousBooksHandler
30
31     def create(self, request):
32         if not request.user.has_perm('catalogue.add_book'):
33             return rc.FORBIDDEN
34
35         form = BookImportForm(request.POST, request.FILES)
36         if form.is_valid():
37             form.save()
38             return rc.CREATED
39         else:
40             return rc.BAD_REQUEST
41