diff --git a/users/serializers.py b/users/serializers.py index fa0d945045b66544a26a25ab4fe243c098ca2425..88475ba47a08c2ff3dca96f146afd339595775c6 100644 --- a/users/serializers.py +++ b/users/serializers.py @@ -12,8 +12,18 @@ class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: # noqa model = User fields = ('id', 'email', 'profile_type', - 'first_name', 'last_name', 'phone_number', 'url',) + 'first_name', 'last_name', 'phone_number', 'url') extra_kwargs = { 'email': {'read_only': True}, 'url': {'view_name': 'api:user-detail'}, } +class CharterSerializer(serializers.ModelSerializer): + """Hyperlinked serializer for user objects.""" + + class Meta: # noqa + model = User + fields = ('id', 'email', 'profile_type', + 'first_name', 'last_name', 'phone_number', 'url') + extra_kwargs = { + 'email': {'read_only': True}, + } diff --git a/users/views.py b/users/views.py index 4091ee9950e356583824727d3bb22cdeb806b6fe..a2c18d6d8d9eefa0e01d0c165a6b205055502d11 100644 --- a/users/views.py +++ b/users/views.py @@ -1,9 +1,15 @@ """Users API views.""" +import email from django.contrib.auth import get_user_model from dry_rest_permissions.generics import DRYPermissions from rest_framework import viewsets -from .serializers import UserSerializer +from .serializers import UserSerializer, CharterSerializer +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework.decorators import action +from rest_framework import status + User = get_user_model() @@ -21,3 +27,33 @@ class UserViewSet(viewsets.ReadOnlyModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer permission_classes = (DRYPermissions,) + +class UserCheckChartViewSet(APIView): + """API endpoint that allows to see of user have signed charter. + + retrieve: + Return a email . + + list: + Return a boolean value. + """ + def get(self, *args, **kwargs): + user = User.objects.filter(email=self.request.query_params.get('email')) + if user[0].HasSignedCharter : + resp = status.HTTP_200_OK + else : + resp= status.HTTP_404_NOT_FOUND + return Response( status=resp) + + + def post(self, *args, **kwargs): + user = User.objects.filter(email=self.request.query_params.get('email')) + if len(user) != 0 : + resp = status.HTTP_200_OK + else : + resp= status.HTTP_404_NOT_FOUND + user[0].HasSignedCharter = True + user[0].save() + return Response( status=resp) + + \ No newline at end of file