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"}) |
|