server/authentication/views.py
changeset 51 032280909e65
child 61 5abd0a9eafbc
equal deleted inserted replaced
50:c641b33f910f 51:032280909e65
       
     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
       
     7 from rest_framework.authentication import TokenAuthentication
       
     8 from rest_framework.authtoken.models import Token
       
     9 from rest_framework.exceptions import ParseError
       
    10 from rest_framework.permissions import IsAuthenticated
       
    11 from rest_framework.response import Response
       
    12 from rest_framework.views import APIView
       
    13 
       
    14 from config import URL_JAMESPOT
       
    15 
       
    16 
       
    17 class UserSerializer(serializers.ModelSerializer):
       
    18     class Meta:
       
    19         model = get_user_model()
       
    20 
       
    21 class User(APIView):
       
    22     """
       
    23     get list user or add user
       
    24     """
       
    25     permission_classes = (permissions.AllowAny,)
       
    26     
       
    27     def get(self, request):
       
    28         print ("here ?")
       
    29         user = get_user_model().objects.all()
       
    30         serializer = UserSerializer(user, many=True)
       
    31         return Response(serializer.data)
       
    32         
       
    33     def post(self, request):
       
    34         VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields]
       
    35         DEFAULTS = {
       
    36             "groups":"",
       
    37             "user_permissions":""
       
    38         }
       
    39         request.data.update(DEFAULTS)
       
    40         serialized = UserSerializer(data=request.data)
       
    41         
       
    42         if serialized.is_valid():
       
    43             user_data = {field: data for (field, data) in request.DATA.items() if field in VALID_USER_FIELDS}
       
    44             
       
    45             params = {'o': 'user', 'f': 'get', 'mail': user_data['email']}
       
    46             r = requests.get(URL_JAMESPOT, params=params)
       
    47             infoUser = json.loads(r.content.decode('utf-8'))
       
    48             
       
    49             user_data.update({"idUser":infoUser['VAL']['idUser']})
       
    50             
       
    51             user = get_user_model().objects.create_user(
       
    52                 **user_data
       
    53             )
       
    54             return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
       
    55         else:
       
    56             return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
       
    57 
       
    58 class AuthView(APIView):
       
    59     """
       
    60     Authentication is needed for this methods
       
    61     """
       
    62     authentication_classes = (TokenAuthentication,)
       
    63     permission_classes = (IsAuthenticated,)
       
    64  
       
    65     def get(self, request, format=None):
       
    66         return Response({'detail': "I suppose you are authenticated"})