add order management od the slides on server side
authorrougeronj
Tue, 31 Mar 2015 12:22:00 +0200
changeset 46 f909e7f2917d
parent 45 19f3f0a7fbd7
child 47 dd750778535c
add order management od the slides on server side
server/ammico/urls.py
server/ammico/views.py
--- a/server/ammico/urls.py	Tue Mar 31 12:21:22 2015 +0200
+++ b/server/ammico/urls.py	Tue Mar 31 12:22:00 2015 +0200
@@ -1,14 +1,15 @@
 from django.conf.urls import patterns, url, include
 
-from ammico.views import populateUser, ListBooks, InfoBook, ListSlides, InfoSlide, GetSlides
+from ammico.views import populateUser, ListBooks, InfoBook, ListSlides, InfoSlide, BookSlides, SlidesOrder
 
 
 urlpatterns = patterns('',
-    url(r'^populateUser/$', populateUser, name='populateUser'),
-    url(r'^books/$', ListBooks.as_view()),
+    url(r'^populateUser$', populateUser, name='populateUser'),
+    url(r'^books$', ListBooks.as_view()),
     url(r'^books/(?P<idBook>[0-9]+)$', InfoBook.as_view()),
-    url(r'^books/(?P<idBook>[0-9]+)/slides$', GetSlides.as_view()),
-    url(r'^slides/$', ListSlides.as_view()),
+    url(r'^books/(?P<idBook>[0-9]+)/order$', SlidesOrder.as_view()),
+    url(r'^books/(?P<idBook>[0-9]+)/slides$', BookSlides.as_view()),
+    url(r'^slides$', ListSlides.as_view()),
     url(r'^slides/(?P<idSlide>[0-9]+)$', InfoSlide.as_view()),
-    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
+    url(r'^api-auth', include('rest_framework.urls', namespace='rest_framework')),
 )
--- a/server/ammico/views.py	Tue Mar 31 12:21:22 2015 +0200
+++ b/server/ammico/views.py	Tue Mar 31 12:22:00 2015 +0200
@@ -72,7 +72,7 @@
     """
     #authentication_classes = (authentication.TokenAuthentication,)
     #permission_classes = (permissions.IsAdminUser,)
-    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+    permission_classes = (permissions.AllowAny,)
 
     def get(self, request):
         """
@@ -88,7 +88,7 @@
     """
     #authentication_classes = (authentication.TokenAuthentication,)
     #permission_classes = (permissions.IsAdminUser,)
-    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+    permission_classes = (permissions.AllowAny,)
 
     def get(self, request, idBook):
         try:
@@ -104,23 +104,49 @@
         book.delete()
         return Response(status=status.HTTP_204_NO_CONTENT)
     
-class GetSlides(APIView):
+class BookSlides(APIView):
     """
     View to get book informations.
     """
     #authentication_classes = (authentication.TokenAuthentication,)
     #permission_classes = (permissions.IsAdminUser,)
-    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+    permission_classes = (permissions.AllowAny,)
 
     def get(self, request, idBook):
         try:
             book = Book.objects.get(id=idBook)
         except Book.DoesNotExist:
             return HttpResponse(status=404)
-        print(book)
         
         serializer = SlideSerializer(book.slides.all(), many=True)
         return Response(serializer.data)
+    
+
+class SlidesOrder(APIView):
+    """
+    Get/Set Slides order
+    """
+    #authentication_classes = (authentication.TokenAuthentication,)
+    #permission_classes = (permissions.IsAdminUser,)
+    permission_classes = (permissions.AllowAny,)
+
+    def get(self, request, idBook):
+        try:
+            book = Book.objects.get(id=idBook)
+        except Book.DoesNotExist:
+            return HttpResponse(status=404)
+        response = {}
+        response["order"] = book.get_slide_order()
+        return Response(response)
+    
+    def post(self, request, idBook):
+        try:
+            book = Book.objects.get(id=idBook)
+        except Book.DoesNotExist:
+            return HttpResponse(status=404)
+        
+        book.set_slide_order(request.data['order'])
+        return Response(status=status.HTTP_200_OK)
 
 class ListSlides(APIView):
     """
@@ -128,15 +154,22 @@
     """
     #authentication_classes = (authentication.TokenAuthentication,)
     #permission_classes = (permissions.IsAdminUser,)
-    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+    permission_classes = (permissions.AllowAny,)
 
-    def get(self, request, format=None):
+    def get(self, request):
         """
         Return a list of slide
         """               
         slides = Slide.objects.filter()
         serializer = SlideSerializer(slides, many=True)
         return Response(serializer.data)
+    
+    def post(self, request):
+        serializer = SlideSerializer(data=request.data)
+        if serializer.is_valid():
+            serializer.save()
+            return Response(serializer.data, status=status.HTTP_201_CREATED)
+        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
 
 class InfoSlide(APIView):
     """
@@ -144,7 +177,7 @@
     """
     #authentication_classes = (authentication.TokenAuthentication,)
     #permission_classes = (permissions.IsAdminUser,)
-    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+    permission_classes = (permissions.AllowAny,)
 
     def get(self, request, idSlide):
         try:
@@ -156,14 +189,21 @@
         return Response(serializer.data)
     
     def post(self, request, idSlide):
-        print (request.data)
-        serializer = SlideSerializer(data=request.data)
+        try:
+            slide = Slide.objects.get(id=idSlide)
+        except Book.DoesNotExist:
+            return HttpResponse(status=404)
+        serializer = SlideSerializer(slide, data=request.data)
         if serializer.is_valid():
             serializer.save()
             return Response(serializer.data, status=status.HTTP_201_CREATED)
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
     
     def delete(self, request, idSlide):
-        slide = Slide.objects.get(id = idSlide)
+        try:
+            slide = Slide.objects.get(id = idSlide)
+        except Book.DoesNotExist:
+            return HttpResponse(status=404)
+        
         slide.delete()
         return Response(status=status.HTTP_204_NO_CONTENT)
\ No newline at end of file