1+ from django .shortcuts import get_object_or_404
12from django .views .generic .base import TemplateView
2- from rest_framework import parsers , renderers
3+ from rest_framework import parsers , renderers , generics , status
34from rest_framework .authtoken .models import Token
45from rest_framework .authtoken .serializers import AuthTokenSerializer
6+ from rest_framework .permissions import AllowAny
57from rest_framework .response import Response
68from rest_framework .views import APIView
9+ from tests .models import User , Organisation , Membership
10+ from tests import serializers
711
812
913class TestView (TemplateView ):
@@ -27,3 +31,70 @@ def post(self, request):
2731 user = serializer .validated_data ['user' ]
2832 token , created = Token .objects .get_or_create (user = user )
2933 return Response ({'token' : token .key })
34+
35+
36+ class UserRegistrationView (generics .CreateAPIView ):
37+
38+ permission_classes = (AllowAny ,)
39+ serializer_class = serializers .UserRegistrationSerializer
40+
41+
42+ class UserProfileView (generics .RetrieveUpdateAPIView ):
43+
44+ serializer_class = serializers .UserProfileSerializer
45+
46+ def get_object (self ):
47+ return self .request .user
48+
49+
50+ class PasswordResetView (APIView ):
51+
52+ permission_classes = (AllowAny ,)
53+ queryset = User .objects .all ()
54+
55+ def get_object (self ):
56+ email = self .request .data .get ('email' )
57+ obj = get_object_or_404 (self .queryset , email = email )
58+ return obj
59+
60+ def post (self , request , * args , ** kwargs ):
61+ user = self .get_object ()
62+ user .send_reset_password_email ()
63+ return Response ({}, status = status .HTTP_200_OK )
64+
65+
66+ class PasswordResetConfirmView (APIView ):
67+
68+ permission_classes = (AllowAny ,)
69+ serializer_class = serializers .ResetPasswordSerializer
70+
71+ def post (self , request , * args , ** kwargs ):
72+ serializer = serializers .ResetPasswordSerializer (data = request .data )
73+ if not serializer .is_valid ():
74+ return Response ({'errors' : serializer .errors }, status = status .HTTP_400_BAD_REQUEST )
75+ return Response ({"msg" : "Password updated successfully." }, status = status .HTTP_200_OK )
76+
77+
78+ class CreateOrganisationView (generics .CreateAPIView ):
79+
80+ serializer_class = serializers .CreateOrganisationSerializer
81+
82+
83+ class OrganisationMembersView (generics .ListAPIView ):
84+
85+ serializer_class = serializers .OrganisationMembersSerializer
86+
87+ def get_queryset (self ):
88+ organisation = Organisation .objects .order_by ('?' ).first ()
89+ return Membership .objects .filter (organisation = organisation )
90+
91+
92+ class LeaveOrganisationView (generics .DestroyAPIView ):
93+
94+ def get_object (self ):
95+ return Membership .objects .order_by ('?' ).first ()
96+
97+ def delete (self , request , * args , ** kwargs ):
98+ instance = self .get_object ()
99+ self .perform_destroy (instance )
100+ return Response (status = status .HTTP_204_NO_CONTENT )
0 commit comments