server/authentication/views.py
changeset 61 5abd0a9eafbc
parent 51 032280909e65
child 72 ed2ee692ff6f
equal deleted inserted replaced
60:7d624c1013a3 61:5abd0a9eafbc
     1 
     1 
     2 import json
     2 import json
     3 
     3 
     4 from django.contrib.auth import get_user_model
     4 from django.contrib.auth import get_user_model
     5 import requests
     5 import requests
     6 from rest_framework import serializers, status, permissions
     6 from rest_framework import serializers, status, permissions, parsers, renderers
     7 from rest_framework.authentication import TokenAuthentication
       
     8 from rest_framework.authtoken.models import Token
     7 from rest_framework.authtoken.models import Token
     9 from rest_framework.exceptions import ParseError
     8 from rest_framework.authtoken.serializers import AuthTokenSerializer
    10 from rest_framework.permissions import IsAuthenticated
       
    11 from rest_framework.response import Response
     9 from rest_framework.response import Response
    12 from rest_framework.views import APIView
    10 from rest_framework.views import APIView
    13 
    11 
    14 from config import URL_JAMESPOT
    12 from config import URL_JAMESPOT
       
    13 from ammico.views import populateVisite
    15 
    14 
    16 
    15 
    17 class UserSerializer(serializers.ModelSerializer):
    16 class UserSerializer(serializers.ModelSerializer):
    18     class Meta:
    17     class Meta:
    19         model = get_user_model()
    18         model = get_user_model()
    43             user_data = {field: data for (field, data) in request.DATA.items() if field in VALID_USER_FIELDS}
    42             user_data = {field: data for (field, data) in request.DATA.items() if field in VALID_USER_FIELDS}
    44             
    43             
    45             params = {'o': 'user', 'f': 'get', 'mail': user_data['email']}
    44             params = {'o': 'user', 'f': 'get', 'mail': user_data['email']}
    46             r = requests.get(URL_JAMESPOT, params=params)
    45             r = requests.get(URL_JAMESPOT, params=params)
    47             infoUser = json.loads(r.content.decode('utf-8'))
    46             infoUser = json.loads(r.content.decode('utf-8'))
    48             
    47             if ('idUser' in infoUser['VAL']):
    49             user_data.update({"idUser":infoUser['VAL']['idUser']})
    48                 user_data.update({"idUser":infoUser['VAL']['idUser']})
    50             
       
    51             user = get_user_model().objects.create_user(
    49             user = get_user_model().objects.create_user(
    52                 **user_data
    50                 **user_data
    53             )
    51             )
    54             return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
    52             return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
    55         else:
    53         else:
    56             return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
    54             return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
       
    55         
       
    56 class ObtainAuthToken(APIView):
       
    57     throttle_classes = ()
       
    58     permission_classes = ()
       
    59     parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
       
    60     renderer_classes = (renderers.JSONRenderer,)
    57 
    61 
    58 class AuthView(APIView):
    62     def post(self, request):
    59     """
    63         serializer = AuthTokenSerializer(data=request.data)
    60     Authentication is needed for this methods
    64         serializer.is_valid(raise_exception=True)
    61     """
    65         user = serializer.validated_data['user']
    62     authentication_classes = (TokenAuthentication,)
    66         populateVisite(user)
    63     permission_classes = (IsAuthenticated,)
    67         token, created = Token.objects.get_or_create(user=user)
    64  
    68         return Response({'token': token.key})
    65     def get(self, request, format=None):
       
    66         return Response({'detail': "I suppose you are authenticated"})