server/src/authentication/views.py
changeset 149 8e117699857a
parent 148 9f6f17de6d98
parent 142 925337e6983d
child 150 78e82bf8ff89
equal deleted inserted replaced
148:9f6f17de6d98 149:8e117699857a
     1 
       
     2 import json
       
     3 
       
     4 from django.contrib.auth import get_user_model
       
     5 import requests
       
     6 from rest_framework import serializers, status, permissions, parsers, renderers
       
     7 from rest_framework.authtoken.models import Token
       
     8 from rest_framework.response import Response
       
     9 from rest_framework.views import APIView
       
    10 
       
    11 from config import URL_JAMESPOT
       
    12 from ammico.views import populateVisit
       
    13 
       
    14 
       
    15 #from ammico.views import populateVisit
       
    16 class UserSerializer(serializers.ModelSerializer):
       
    17     class Meta:
       
    18         model = get_user_model()
       
    19 
       
    20 class User(APIView):
       
    21     """
       
    22     get list user or add user
       
    23     """
       
    24     permission_classes = (permissions.AllowAny,)
       
    25     
       
    26     def get(self, request):
       
    27         user = get_user_model().objects.all()
       
    28         serializer = UserSerializer(user, many=True)
       
    29         return Response(serializer.data)
       
    30         
       
    31     def post(self, request):
       
    32         VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields]
       
    33         serialized = UserSerializer(data=request.data)
       
    34         
       
    35         if serialized.is_valid():
       
    36             user_data = {field: data for (field, data) in request.DATA.items() if field in VALID_USER_FIELDS}
       
    37             
       
    38             params = {'o': 'user', 'f': 'get', 'mail': user_data['email']}
       
    39             r = requests.get(URL_JAMESPOT, params=params)
       
    40             infoUser = json.loads(r.content.decode('utf-8'))
       
    41             if ('idUser' in infoUser['VAL']):
       
    42                 user_data.update({"idUser":infoUser['VAL']['idUser']})
       
    43             user = get_user_model().objects.create_user(
       
    44                 **user_data
       
    45             )
       
    46             return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
       
    47         else:
       
    48             return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
       
    49         
       
    50 class ObtainAuthToken(APIView):
       
    51     throttle_classes = ()
       
    52     permission_classes = ()
       
    53     parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
       
    54     renderer_classes = (renderers.JSONRenderer,)
       
    55 
       
    56     def post(self, request):
       
    57         user = get_user_model().objects.get(email = request.data['email'], password = request.data['password'])
       
    58         if (user.idUser and 'idExpo' in request.GET):
       
    59             populateVisit(user, request.GET['idExpo']);
       
    60         token, _ = Token.objects.get_or_create(user=user)
       
    61         return Response({'token': token.key})