--- a/server/ammico/views.py Wed May 27 19:03:08 2015 +0200
+++ b/server/ammico/views.py Wed May 27 19:05:20 2015 +0200
@@ -9,7 +9,7 @@
import requests
from rest_framework import status
from rest_framework.authentication import TokenAuthentication
-from rest_framework.permissions import IsAuthenticated
+from rest_framework.permissions import IsAuthenticated, AllowAny
from rest_framework.response import Response
from rest_framework.views import APIView
@@ -65,6 +65,22 @@
}
)
+class PublicBooks(APIView):
+ """
+ Send back published books
+ """
+
+ authentication_classes = (TokenAuthentication,)
+ permission_classes = (AllowAny,)
+
+ def get(self, request):
+ """
+ Return a list of all Books.
+ """
+ books = Book.objects.filter(public=True)
+ serializer = BookSerializer(books, many=True)
+ return Response(serializer.data)
+
class ListBooks(APIView):
"""
Views to list all books.
@@ -94,7 +110,7 @@
try:
book = Book.objects.get(user = request.user.id, id=request.data['idParent'])
except Book.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_400_BAD_REQUEST)
new_book = deepcopy(book)
new_book.title = request.data['title']
new_book.idArticle = None
@@ -132,49 +148,44 @@
try:
book = Book.objects.get(user = request.user.id, id=idBook)
except Book.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_404_NOT_FOUND)
serializer = BookSerializer(book)
return Response(serializer.data)
- def post(self, request, idBook):
+ def put(self, request, idBook):
"""
update a Book
"""
try:
book = Book.objects.get(user = request.user.id, id=idBook)
except Book.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_204_NO_CONTENT)
+
+ if (book.idArticle):
+ return Response(status=status.HTTP_403_FORBIDDEN)
+
serializer = BookSerializer(book, data=request.data)
if serializer.is_valid():
serializer.save()
- return Response(serializer.data, status=status.HTTP_201_CREATED)
+ return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, idBook):
"""
delete a book
"""
- book = Book.objects.get(user = request.user.id, id = idBook)
+ try:
+ book = Book.objects.get(user = request.user.id, id = idBook)
+ except Book.DoesNotExist:
+ return Response(status=status.HTTP_404_NOT_FOUND)
+
+ if (book.idArticle):
+ return Response(status=status.HTTP_403_FORBIDDEN)
+
book.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
-class BookSlides(APIView):
- """
- Get the slides from a book
- """
- authentication_classes = (TokenAuthentication,)
- permission_classes = (IsAuthenticated,)
-
- def get(self, request, idBook):
- try:
- book = Book.objects.get(user = request.user.id, id=idBook)
- except Book.DoesNotExist:
- return HttpResponse(status=404)
-
- serializer = SlideSerializer(book.slides.all(), many=True)
- return Response(serializer.data)
-
class SlidesOrder(APIView):
"""
@@ -191,7 +202,7 @@
try:
book = Book.objects.get(user = request.user.id, id=idBook)
except Book.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_404_NOT_FOUND)
response = {}
response["order"] = book.get_slide_order()
return Response(response)
@@ -203,7 +214,10 @@
try:
book = Book.objects.get(user = request.user.id, id=idBook)
except Book.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_204_NO_CONTENT)
+
+ if (book.idArticle):
+ return Response(status=status.HTTP_403_FORBIDDEN)
book.set_slide_order(request.data['order'])
return Response(status=status.HTTP_200_OK)
@@ -221,10 +235,14 @@
Return a list of slide
"""
if 'idBook' in request.GET:
- slides = Slide.objects.filter(book__user = request.user.id, book = request.GET['idBook'])
+ if 'limit' in request.GET:
+ limit = int(request.GET['limit'])
+ else:
+ limit= None;
+ slides = Slide.objects.filter(book__user = request.user.id, book = request.GET['idBook'])[:limit]
else:
slides = Slide.objects.filter(book__user = request.user.id)
- ## if idBook in request
+
serializer = SlideSerializer(slides, many=True)
return Response(serializer.data)
@@ -232,6 +250,15 @@
"""
Add a slide
"""
+ print (request.data)
+ if 'book' in request.data:
+ try:
+ book = Book.objects.get(user = request.user.id, id=request.data['book'])
+ except Book.DoesNotExist:
+ return Response(status=status.HTTP_204_NO_CONTENT)
+ if (book.idArticle):
+ return Response(status=status.HTTP_403_FORBIDDEN)
+
serializer = SlideSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
@@ -253,23 +280,27 @@
try:
slide = Slide.objects.get(book__user = request.user.id, id=idSlide)
except Slide.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_404_NOT_FOUND)
serializer = SlideSerializer(slide)
return Response(serializer.data)
- def post(self, request, idSlide):
+ def put(self, request, idSlide):
"""
Update slide information
"""
try:
slide = Slide.objects.get(book__user = request.user.id, id=idSlide)
except Slide.DoesNotExist:
- return HttpResponse(status=404)
+ return HttpResponse(status=status.HTTP_204_NO_CONTENT)
+
+ if (slide.book.idArticle):
+ return Response(status=status.HTTP_403_FORBIDDEN)
+
serializer = SlideSerializer(slide, data=request.data)
if serializer.is_valid():
serializer.save()
- return Response(serializer.data, status=status.HTTP_201_CREATED)
+ return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, idSlide):
@@ -279,7 +310,10 @@
try:
slide = Slide.objects.get(book__user = request.user.id, id = idSlide)
except Slide.DoesNotExist:
- return HttpResponse(status=404)
+ return Response(status=status.HTTP_404_NOT_FOUND)
+
+ if (slide.book.idArticle):
+ return Response(status=status.HTTP_403_FORBIDDEN)
slide.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
\ No newline at end of file