From dd3260b3aaabf8447a3b2362c086dd0f8fd9a07b Mon Sep 17 00:00:00 2001 From: salazard <hamzatouizrat@yahoo.com> Date: Fri, 28 Oct 2022 21:52:54 +0200 Subject: [PATCH] add charte signe --- users/serializers.py | 12 +++++++++++- users/views.py | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/users/serializers.py b/users/serializers.py index fa0d945..88475ba 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 4091ee9..a2c18d6 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 -- GitLab