add an ammico view to login automatically with jwt and serve the ammico app
authorrougeronj
Thu, 04 Jun 2015 20:07:25 +0200
changeset 111 6b397990e314
parent 110 3233361fa673
child 112 53dc561c38d1
add an ammico view to login automatically with jwt and serve the ammico app
server/ammico/urls.py
server/ammico/views.py
--- a/server/ammico/urls.py	Thu Jun 04 20:05:54 2015 +0200
+++ b/server/ammico/urls.py	Thu Jun 04 20:07:25 2015 +0200
@@ -1,11 +1,10 @@
 from django.conf.urls import patterns, url, include
-from django.views.generic.base import TemplateView
 
-from ammico.views import ListBooks, InfoBook, ListSlides, InfoSlide, SlidesOrder, PublicBooks
+from ammico.views import ListBooks, InfoBook, ListSlides, InfoSlide, SlidesOrder, PublicBooks, AmmicoView
 
 
 urlpatterns = patterns('',
-    url(r'^$', TemplateView.as_view(template_name="index.html"), name='index'),
+    url(r'^$', AmmicoView.as_view(), name='index'),
     url(r'^books$', ListBooks.as_view()),
     url(r'^books/(?P<idBook>[0-9]+)$', InfoBook.as_view()),
     url(r'^books/(?P<idBook>[0-9]+)/order$', SlidesOrder.as_view()),
--- a/server/ammico/views.py	Thu Jun 04 20:05:54 2015 +0200
+++ b/server/ammico/views.py	Thu Jun 04 20:07:25 2015 +0200
@@ -5,16 +5,20 @@
 
 from django.contrib.auth import get_user_model
 from django.http import HttpResponse
+from django.shortcuts import render
 from django.utils.dateparse import parse_datetime
 import requests
 from rest_framework import status
 from rest_framework.authentication import TokenAuthentication
+from rest_framework.authtoken.models import Token
 from rest_framework.permissions import IsAuthenticated, AllowAny
 from rest_framework.response import Response
 from rest_framework.views import APIView
 
 from ammico.models import Book, Slide
-from ammico.serializers import BookSerializer, SlideSerializer
+from ammico.serializers.ammico import BookSerializer, SlideSerializer
+from config import AUTH_JAMESPOT
+import jwt
 from settings import URL_JAMESPOT
 
 
@@ -64,6 +68,22 @@
                     'date' : parse_datetime(str(datetime.strptime(step['DATE'] + " " + step['TIME'], "%d/%m/%Y %H:%M:%S")))
                 }
             )
+
+class AmmicoView(APIView):
+    permission_classes = (AllowAny,)
+
+    def get(self, request):
+        key = ''
+        if ('k' in request.GET):
+            payload = jwt.decode(request.GET['k'], AUTH_JAMESPOT, algorithms=['HS256'])
+            if (('email' and 'idUser') in payload):
+                user, _ = User.objects.get_or_create(email = payload['email'], idUser = payload['idUser'])
+                populateVisit(user)
+                token, _ = Token.objects.get_or_create(user=user)
+                key = str(token.key)
+            
+        return render(request, 'index.html', {'token': key})
+        
             
 class PublicBooks(APIView):
     """
@@ -118,7 +138,6 @@
             new_book.id = None
             new_book.save()
             for i in book.slides.all():
-                print (i)
                 new_slide = deepcopy(i)
                 new_slide.id = None
                 new_slide.book = new_book
@@ -132,6 +151,7 @@
                 serializer.save()
                 return Response(serializer.data, status=status.HTTP_201_CREATED)
             return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
+        
 
 class InfoBook(APIView):
     """
@@ -250,7 +270,6 @@
         """
         Add a slide
         """
-        print (request.data)
         if 'book' in request.data:
             try:
                 book = Book.objects.get(user = request.user.id, id=request.data['book'])
@@ -296,7 +315,6 @@
         
         if (slide.book.idArticle):
             return Response(status=status.HTTP_403_FORBIDDEN)
-        
         serializer = SlideSerializer(slide, data=request.data)
         if serializer.is_valid():
             serializer.save()