1
1
from rest_framework import serializers
2
2
from .utils import FirebaseAPI
3
3
from .models import *
4
- from website .models import Profile ,ValidReferral
4
+ from website .models import Profile , ValidReferral
5
5
from django .conf import settings
6
6
from rest_framework .exceptions import ParseError
7
7
import requests
8
+
9
+
8
10
class LoginSerializer (serializers .Serializer ):
9
11
id_token = serializers .CharField (max_length = 2400 )
10
12
provider_token = serializers .CharField (max_length = 2400 , required = False )
@@ -13,73 +15,76 @@ def validate_access_token(self, access_token):
13
15
return FirebaseAPI .verify_id_token (access_token )
14
16
15
17
def validate (self , attrs ):
16
- id_token = attrs .get (' id_token' , None )
17
- provider_token = attrs .get (' provider_token' , None )
18
+ id_token = attrs .get (" id_token" , None )
19
+ provider_token = attrs .get (" provider_token" , None )
18
20
19
21
user = None
20
22
21
23
if id_token :
22
24
jwt = self .validate_access_token (id_token )
23
- uid = jwt [' uid' ]
24
- provider = FirebaseAPI .get_provider (jwt )
25
-
25
+ uid = jwt [" uid" ]
26
+ provider = FirebaseAPI .get_provider (jwt )
27
+
26
28
try :
27
29
account = VerifiedAccount .objects .get (pk = uid )
28
30
except VerifiedAccount .DoesNotExist :
29
- raise serializers .ValidationError (' No such account exists' )
30
-
31
+ raise serializers .ValidationError (" No such account exists" )
32
+
31
33
user = account .user
32
- # add the verification status to the validated data
33
- attrs [' is_verified' ] = account .get_verified_status ()
34
- profile = user .profile
34
+ # add the verification status to the validated data
35
+ attrs [" is_verified" ] = account .get_verified_status ()
36
+ profile = user .profile
35
37
# because we also need the frontend to know if the profile is complete
36
38
# this line automatically applies referral code if needed
37
- attrs [' is_profile_complete' ] = profile .get_or_set_profile_status ()
39
+ attrs [" is_profile_complete" ] = profile .get_or_set_profile_status ()
38
40
if provider_token :
39
41
account .provider_token = provider_token
40
42
account .save ()
41
43
else :
42
- raise ParseError (' Provide access_token or username to continue.' )
44
+ raise ParseError (" Provide access_token or username to continue." )
43
45
# Did we get back an active user?
44
46
if user :
45
47
if not user .is_active :
46
- raise serializers .ValidationError (' User account is disabled.' )
48
+ raise serializers .ValidationError (" User account is disabled." )
47
49
else :
48
50
raise serializers .ValidationError (
49
- 'Unable to log in with provided credentials.' )
51
+ "Unable to log in with provided credentials."
52
+ )
50
53
51
- attrs [' user' ] = user
54
+ attrs [" user" ] = user
52
55
return attrs
53
56
54
57
55
58
class RegisterSerializer (serializers .Serializer ):
56
-
59
+
57
60
id_token = serializers .CharField (max_length = 2400 , required = True )
58
61
# provider_token = serializers.CharField(max_length=2400, required=False)
59
62
first_name = serializers .CharField (max_length = 40 , allow_blank = False )
60
63
last_name = serializers .CharField (max_length = 100 , allow_blank = True , required = False )
61
- applied_referral_code = serializers .CharField (max_length = 500 ,required = False , allow_blank = True )
64
+ applied_referral_code = serializers .CharField (
65
+ max_length = 500 , required = False , allow_blank = True
66
+ )
62
67
# g_recaptcha_response = serializers.CharField(max_length=500, required=True)
63
68
64
69
def validate_id_token (self , access_token ):
65
70
return FirebaseAPI .verify_id_token (access_token )
66
71
67
- def validate_first_name (self ,name ):
68
- if name == None or name == '' :
72
+ def validate_first_name (self , name ):
73
+ if name == None or name == "" :
69
74
raise serializers .ValidationError ("First Name cannot be blank" )
70
75
return name
71
76
72
- def validate_applied_referral_code (self ,code ):
73
- if code is None or code == "" :
77
+ def validate_applied_referral_code (self , code ):
78
+ if code is None or code == "" :
74
79
return None
75
80
try :
76
- referred_by = Profile .objects .get (referral_code = code )
81
+ referred_by = Profile .objects .get (referral_code = code )
77
82
if not referred_by .get_or_set_profile_status ():
78
83
raise serializers .ValidationError ("Invalid Referral Code" )
79
84
except :
80
85
raise serializers .ValidationError ("Invalid Referral Code" )
81
86
return referred_by
82
-
87
+
83
88
# def validate_g_recaptcha_response(self, token):
84
89
# data= {
85
90
# 'secret':settings.GOOGLE_RECAPTCHA_SECRET_KEY,
@@ -91,57 +96,56 @@ def validate_applied_referral_code(self,code):
91
96
# return
92
97
# raise serializers.ValidationError("Captcha could not be verified. Please try again.")
93
98
94
- def get_user (self , data ,jwt ):
99
+ def get_user (self , data , jwt ):
95
100
user = User ()
96
- uid = jwt [' uid' ]
97
- email = jwt .get (' email' , '' )
101
+ uid = jwt [" uid" ]
102
+ email = jwt .get (" email" , "" )
98
103
user .username = uid
99
104
user .email = email
100
- user .first_name = data .get (' first_name' )
101
- user .last_name = data .get (' last_name' , "" )
102
- user .gender = data .get (' gender' )
105
+ user .first_name = data .get (" first_name" )
106
+ user .last_name = data .get (" last_name" , "" )
107
+ user .gender = data .get (" gender" )
103
108
return user
104
109
105
-
106
110
def save (self ):
107
111
data = self .validated_data
108
- jwt = data .get (' id_token' )
112
+ jwt = data .get (" id_token" )
109
113
# print(jwt)
110
- uid = jwt [' uid' ]
114
+ uid = jwt [" uid" ]
111
115
provider = FirebaseAPI .get_provider (jwt )
112
116
# provider_uid = None
113
117
# if provider !=VerifiedAccount.AUTH_EMAIL_PROVIDER:
114
118
# provider_uid = FirebaseAPI.get_provider_uid(jwt, provider)
115
- user = self .get_user (data ,jwt )
119
+ user = self .get_user (data , jwt )
116
120
try :
117
121
user .validate_unique ()
118
122
except Exception as e :
119
123
raise serializers .ValidationError (detail = "User already exists" )
120
124
user .save ()
121
125
account , _ = VerifiedAccount .objects .get_or_create (
122
- uid = uid , user = user , provider = provider )
126
+ uid = uid , user = user , provider = provider
127
+ )
123
128
124
129
if provider == VerifiedAccount .AUTH_EMAIL_PROVIDER :
125
- account .is_verified = False
130
+ account .is_verified = False
126
131
account .save ()
127
-
128
- referred_by = data .get ('applied_referral_code' , None )
129
132
130
- profile ,_ = Profile .objects .get_or_create (user = user ,referred_by = referred_by )
133
+ referred_by = data .get ("applied_referral_code" , None )
134
+
135
+ profile , _ = Profile .objects .get_or_create (user = user , referred_by = referred_by )
131
136
profile .name = user .first_name + " " + user .last_name
132
137
profile .save ()
133
138
return user
134
139
135
140
136
141
class RegisterResponseSerializer (serializers .Serializer ):
137
142
user_id = serializers .IntegerField ()
138
- token = serializers .CharField (max_length = 500 )
143
+ token = serializers .CharField (max_length = 500 )
139
144
verification_status = serializers .BooleanField ()
140
145
141
146
142
-
143
147
class LoginResponseSerializer (serializers .Serializer ):
144
- user_id = serializers .IntegerField ()
148
+ user_id = serializers .IntegerField ()
145
149
token = serializers .CharField (max_length = 500 )
146
150
verification_status = serializers .BooleanField ()
147
- is_profile_complete = serializers .BooleanField ()
151
+ is_profile_complete = serializers .BooleanField ()
0 commit comments