server/authentication/views.py
changeset 51 032280909e65
child 61 5abd0a9eafbc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/server/authentication/views.py	Thu Apr 02 11:57:39 2015 +0200
@@ -0,0 +1,66 @@
+
+import json
+
+from django.contrib.auth import get_user_model
+import requests
+from rest_framework import serializers, status, permissions
+from rest_framework.authentication import TokenAuthentication
+from rest_framework.authtoken.models import Token
+from rest_framework.exceptions import ParseError
+from rest_framework.permissions import IsAuthenticated
+from rest_framework.response import Response
+from rest_framework.views import APIView
+
+from config import URL_JAMESPOT
+
+
+class UserSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = get_user_model()
+
+class User(APIView):
+    """
+    get list user or add user
+    """
+    permission_classes = (permissions.AllowAny,)
+    
+    def get(self, request):
+        print ("here ?")
+        user = get_user_model().objects.all()
+        serializer = UserSerializer(user, many=True)
+        return Response(serializer.data)
+        
+    def post(self, request):
+        VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields]
+        DEFAULTS = {
+            "groups":"",
+            "user_permissions":""
+        }
+        request.data.update(DEFAULTS)
+        serialized = UserSerializer(data=request.data)
+        
+        if serialized.is_valid():
+            user_data = {field: data for (field, data) in request.DATA.items() if field in VALID_USER_FIELDS}
+            
+            params = {'o': 'user', 'f': 'get', 'mail': user_data['email']}
+            r = requests.get(URL_JAMESPOT, params=params)
+            infoUser = json.loads(r.content.decode('utf-8'))
+            
+            user_data.update({"idUser":infoUser['VAL']['idUser']})
+            
+            user = get_user_model().objects.create_user(
+                **user_data
+            )
+            return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
+        else:
+            return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
+
+class AuthView(APIView):
+    """
+    Authentication is needed for this methods
+    """
+    authentication_classes = (TokenAuthentication,)
+    permission_classes = (IsAuthenticated,)
+ 
+    def get(self, request, format=None):
+        return Response({'detail': "I suppose you are authenticated"})
\ No newline at end of file