2
2
from rest_framework import viewsets , status
3
3
from rest_framework .response import Response
4
4
from .serializers import CreateTransactionSerializer , HelpCenterSerializer , PaymentInfoSerializer , ProfileSerializer , RecentEarningsSerializer , UserSerializer , TransactionSerializer , ReferralSerializer , GetReferralSerializer , ForgotPasswordSerializer , ForgotPasswordCheckPinSerializer , UserResetPassword , SocialAccountSerializer , generate_username , UserStatsSerializer , ProfileImageSerializer
5
- from .models import HelpCenter , ResetPassword , Transaction , Referral , Wallet , Profile , RecentEarnings , SocialAccount
5
+ from .models import HelpCenter , ResetPassword , Transaction , Referral , Wallet , Profile , RecentEarnings , SocialAccount , VerifyUser
6
6
from django .contrib .auth import authenticate , get_user_model
7
7
from rest_framework .permissions import IsAuthenticated
8
8
from rest_framework .authentication import TokenAuthentication
@@ -79,7 +79,7 @@ def create(self, request, *args, **kwargs):
79
79
user = User .objects .get (pk = serializer .data ['id' ])
80
80
user .is_active = False
81
81
user .save ()
82
- send_email (user )
82
+ SendVerificationEmail (user . get_username (), user . email )
83
83
84
84
# Save device_id in Profile model
85
85
profile = Profile .objects .get (user = user )
@@ -163,7 +163,7 @@ def post(self, request, format=None):
163
163
referrer_wallet .save ()
164
164
165
165
#Writing the earning history from database
166
- referrer_earning = RecentEarnings .objects .create (user = current_user , way_to_earn = "Referral Points" , point_earned = 50 )
166
+ referrer_earning = RecentEarnings .objects .create (user = current_user , way_to_earn = "Referral Points" , point_earned = 100 )
167
167
referrer_earning .save ()
168
168
169
169
@@ -237,6 +237,43 @@ def get(self, request, format=None):
237
237
referrals = Referral .objects .filter (code = request .user .profile .user_code )
238
238
serializer = GetReferralSerializer (referrals , many = True )
239
239
return Response (serializer .data )
240
+
241
+
242
+ def SendVerificationEmail (username , email ):
243
+ #Deleting all the objects that are old than 15 mins
244
+ VerifyUser .objects .filter (created_at__lte = timezone .now () - timezone .timedelta (minutes = 15 )).delete ()
245
+
246
+ # Check if there is an existing ResetPassword object for the user
247
+ verify_user = VerifyUser .objects .filter (user = User .objects .get (username = username )).first ()
248
+
249
+ # If there is an existing ResetPassword object and it was created less than 15 minutes ago, return an error
250
+ if verify_user and timezone .now () < verify_user .created_at + timezone .timedelta (minutes = 15 ):
251
+ time_diff = (verify_user .created_at + timezone .timedelta (minutes = 15 ) - timezone .now ()).seconds // 60
252
+ return Response ({'message' : f'Please wait { time_diff } minutes before requesting a new PIN.' }, status = status .HTTP_400_BAD_REQUEST )
253
+
254
+
255
+ # Generate a new PIN and create a new ResetPassword object for the user
256
+ pin = get_random_string (length = 4 , allowed_chars = '1234567890' )
257
+ verify_user_object = VerifyUser .objects .create (user = User .objects .get (username = username ), pin = pin )
258
+ verify_user_object .save ()
259
+
260
+ #Sending the Email
261
+
262
+ context = {"username" : User .objects .get (email = email ).username , "pin" : pin }
263
+ email_body = render_to_string ('mail/forget_email.html' , context )
264
+
265
+ email = EmailMessage (
266
+ 'Password Reset for Zolo Earn App' ,
267
+ email_body ,
268
+ 'zoloearn.llc@gmail.com' ,
269
+ to = [email ]
270
+ )
271
+
272
+ email .content_subtype = 'html'
273
+ email .send ()
274
+
275
+
276
+
240
277
241
278
242
279
class ForgotPasswordView (APIView ):
@@ -537,7 +574,7 @@ def post(self, request):
537
574
538
575
if userProfile .new_user :
539
576
if userWallet .points >= userAmount :
540
- if userAmount >= 2000 :
577
+ if userAmount >= 5000 :
541
578
userWallet .points -= userAmount
542
579
#Set new user to false
543
580
userProfile .new_user = False
@@ -561,7 +598,7 @@ def post(self, request):
561
598
serializer .save (user = user )
562
599
return Response ({"message" :"Withdrawal Successful" }, status = status .HTTP_200_OK )
563
600
else :
564
- return Response ({"message" :"Points Less Than Minimum Withdraw" }, status = status .HTTP_400_BAD_REQUEST )
601
+ return Response ({"message" :"Points Less Than Minimum Withdraw (Changes Made Recently) " }, status = status .HTTP_400_BAD_REQUEST )
565
602
else :
566
603
return Response ({"message" :"Not Enough Points In Wallet" }, status = status .HTTP_400_BAD_REQUEST )
567
604
@@ -621,7 +658,7 @@ def post(self, request):
621
658
622
659
class VersionCheck (APIView ):
623
660
def get (self , request , * args , ** kwargs ):
624
- latest_version = "2.1 "
661
+ latest_version = "2.2 "
625
662
return Response ({"message" : latest_version })
626
663
627
664
0 commit comments