From 5b236dfc818975d684b262180103ec2f4f1e2f45 Mon Sep 17 00:00:00 2001 From: jain Date: Fri, 18 Aug 2023 16:37:42 +0530 Subject: [PATCH 1/4] remove threading from login api --- account/views.py | 4 ++-- celerybeat-schedule | Bin 16384 -> 16384 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/account/views.py b/account/views.py index f91f1fe..c6fbb12 100644 --- a/account/views.py +++ b/account/views.py @@ -321,8 +321,8 @@ class UserLogin(viewsets.ViewSet): ERROR_CODE["2069"], response_status=status.HTTP_401_UNAUTHORIZED ) - # storing device id in using thread so the time would be reduced - threading.Thread(target=user_device_details, args=(user, device_id)) + # storing device id in using celery task so the time would be reduced + user_device_details.delay(user, device_id) return custom_response(SUCCESS_CODE['3003'], serializer, response_status=status.HTTP_200_OK) else: return custom_error_response(ERROR_CODE["2002"], response_status=status.HTTP_401_UNAUTHORIZED) diff --git a/celerybeat-schedule b/celerybeat-schedule index 4a3bd313044e9169fbcb11bdbf27bec6aaff8fe8..cc8251c7500206755f61cdf0ff0b24e019ea84c5 100644 GIT binary patch delta 325 zcmZo@U~Fh$oS?I@q?dnUgU4n@f&ctcObigf3#AzhAPi2viBUnDa}<`aF!35}7E=Ak z!Rrc@Vh5^Ny;)Z81LNduL#fH?25OT7jm?-c7$?s%*0*3zPDw0DEy>JH<$^N`S)94p zpK}OtGiY)cMijCpCzWRAlw{@=bET)2B$kvEaTT&nW;7A0XOG|n8XjMoSCE;Uos(L~ z(N@SARLB*<3=|CwaW3TcW^60u2`c1mE946*Y8Da}bO=1MNg z&nrnx;wlu-@MiF4h+qV2)hZOs0K$?&p`b$H+Cq^e&DuiI+Cs6CLh+zNi3l;E60kXw grLx&%r9hA&5W27_Dr5*jQP+^LLi>rw zAU43lON|!bl+a85fFetPpi7qm?b@kRr%s(ZwNrsE1={y?M@w!y1V(}u!6R{ek9Xu9 z`MLLf5Gm>VCm&52b;B4GG-NBl;ZN{~~d`UUAtWEDP>iyp@XANwb z025#WOn?b60Vco%m;e)C0!)AjFoFM!z>*%BtpdRum;({uIN&(oIA9%c9^gE{d4Tf( z=K;czs8nrCYg^Ob-}m+Yr~3Q*m7J=$soOX8{>nqlU^ z925cOz#K*iD8F&{%Y{g~_Er7)lkzivo*Z)G{Ha(lhm&z|KL2$}1hSt!ua&Tyukjg= zd7g~tH_vaMm3xMI9>B{$@;y>>34l6!2bPS*o=0%juiH2KXxb`8HH(5rY7m%7o+au z^oCjbxin{9J5_yn9a}n)-;;iT$CvI2JX7{@sHD8N9SA@8cpKe2=-wh1>nnB??D+0h zPoxK_l_~(O9QjmQMpD-|5$da_j@|xtAe|1~L(9NpavQ1F@EQ`&h||t`j9c=+oz#~ix#Xz$F8MtIQYW{9-0&fSCo!S z=<QMriKv6)=f>Q@@+JbtkoZZ}!E=;Wo6D9|$7zFADobhm#FlE7X3~x}F&cyJh zgtHdRwr6n643gt+jf!H9L@|f!$PN8ag@%V$FmJ&*6vbpFiUlo-MH-7nTe4so^+2PY mkKw{GQCw7_Sg~L=YU233FaajO1egF5U;<2l2{3`zn!sPFW|t2D From b4026a4f118066fb36ab451687734dded8a750d1 Mon Sep 17 00:00:00 2001 From: jain Date: Fri, 18 Aug 2023 18:12:14 +0530 Subject: [PATCH 2/4] middleware --- account/custom_middleware.py | 5 +++-- account/utils.py | 4 +++- account/views.py | 6 +++++- guardian/views.py | 9 +++++++-- junior/views.py | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/account/custom_middleware.py b/account/custom_middleware.py index ec2e315..c2125cd 100644 --- a/account/custom_middleware.py +++ b/account/custom_middleware.py @@ -39,8 +39,9 @@ class CustomMiddleware(object): # Code to be executed after the view is called device_id = request.META.get('HTTP_DEVICE_ID') user_type = request.META.get('HTTP_USER_TYPE') + api_endpoint = request.path if request.user.is_authenticated: - """device details""" + # device details device_details = UserDeviceDetails.objects.filter(user=request.user, device_id=device_id).last() if user_type and str(user_type) == str(NUMBER['one']): junior = Junior.objects.filter(auth=request.user, is_active=False).last() @@ -52,7 +53,7 @@ class CustomMiddleware(object): if guardian: custom_error = custom_error_response(ERROR_CODE['2075'], response_status=status.HTTP_404_NOT_FOUND) response = custom_response(custom_error) - if device_id and not device_details: + if device_id and not device_details and api_endpoint != '/api/v1/user/login/': custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND) response = custom_response(custom_error) return response diff --git a/account/utils.py b/account/utils.py index e016940..ad910ba 100644 --- a/account/utils.py +++ b/account/utils.py @@ -137,10 +137,12 @@ def user_device_details(user, device_id): device_id: string return """ - device_details, created = UserDeviceDetails.objects.get_or_create(user=user) + device_details, created = UserDeviceDetails.objects.get_or_create(user__id=user) if device_details: device_details.device_id = device_id device_details.save() + return True + return False def send_support_email(name, sender, subject, message): diff --git a/account/views.py b/account/views.py index c6fbb12..bf3a7d5 100644 --- a/account/views.py +++ b/account/views.py @@ -322,7 +322,11 @@ class UserLogin(viewsets.ViewSet): response_status=status.HTTP_401_UNAUTHORIZED ) # storing device id in using celery task so the time would be reduced - user_device_details.delay(user, device_id) + # user_device_details.delay(user.id, device_id) + device_details, created = UserDeviceDetails.objects.get_or_create(user=user) + if device_details: + device_details.device_id = device_id + device_details.save() return custom_response(SUCCESS_CODE['3003'], serializer, response_status=status.HTTP_200_OK) else: return custom_error_response(ERROR_CODE["2002"], response_status=status.HTTP_401_UNAUTHORIZED) diff --git a/guardian/views.py b/guardian/views.py index d06f5b9..ad6a134 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -260,7 +260,7 @@ class ApproveJuniorAPIView(viewsets.ViewSet): guardian = Guardian.objects.filter(user__email=self.request.user).last() # fetch junior query junior_queryset = Junior.objects.filter(id=self.request.data.get('junior_id')).last() - if junior_queryset and junior_queryset.is_deleted: + if junior_queryset and (junior_queryset.is_deleted or not junior_queryset.is_active): return custom_error_response(ERROR_CODE['2073'], response_status=status.HTTP_400_BAD_REQUEST) # action 1 is use for approve and 2 for reject if request.data['action'] == '1': @@ -295,7 +295,12 @@ class ApproveTaskAPIView(viewsets.ViewSet): task_queryset = JuniorTask.objects.filter(id=self.request.data.get('task_id'), guardian=guardian, junior=self.request.data.get('junior_id')).last() - if task_queryset and task_queryset.junior.is_deleted: + print("task_queryset.junior.is_deleted===>",task_queryset.junior.is_deleted) + print("task_queryset.junior.is_active===>",task_queryset.junior.is_active) + print("task_queryset.junior.is_deleted===>", type(task_queryset.junior.is_deleted)) + print("task_queryset.junior.is_active===>", type(task_queryset.junior.is_active)) + print("99999===>",(task_queryset.junior.is_deleted or not task_queryset.junior.is_active)) + if task_queryset and (task_queryset.junior.is_deleted or not task_queryset.junior.is_active): return custom_error_response(ERROR_CODE['2072'], response_status=status.HTTP_400_BAD_REQUEST) # use ApproveJuniorSerializer serializer serializer = ApproveTaskSerializer(context={"guardian_code": guardian.guardian_code, diff --git a/junior/views.py b/junior/views.py index 7a83b0a..1fdf2be 100644 --- a/junior/views.py +++ b/junior/views.py @@ -339,7 +339,7 @@ class CompleteJuniorTaskAPIView(views.APIView): task_queryset = JuniorTask.objects.filter(id=task_id, junior__auth__email=self.request.user ).select_related('guardian', 'junior').last() if task_queryset: - if task_queryset.junior.is_deleted: + if task_queryset.junior.is_deleted or not task_queryset.junior.is_active: return custom_error_response(ERROR_CODE['2074'], response_status=status.HTTP_400_BAD_REQUEST) # use CompleteTaskSerializer serializer if task_queryset.task_status in [str(NUMBER['four']), str(NUMBER['five'])]: From cdf1a7b74ea51beb70bd7647e3402fcca01aa267 Mon Sep 17 00:00:00 2001 From: jain Date: Fri, 18 Aug 2023 18:29:46 +0530 Subject: [PATCH 3/4] add comma --- account/views.py | 4 ++-- guardian/serializers.py | 2 +- guardian/views.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/account/views.py b/account/views.py index bf3a7d5..f5cb15f 100644 --- a/account/views.py +++ b/account/views.py @@ -235,7 +235,7 @@ class ForgotPasswordAPIView(views.APIView): 'verification_code': verification_code } ) - expiry = OTP_EXPIRY + expiry = timezone.now() + timezone.timedelta(days=1) user_data, created = UserEmailOtp.objects.get_or_create(email=email) if created: user_data.expired_at = expiry @@ -454,7 +454,7 @@ class ReSendEmailOtp(viewsets.ModelViewSet): def create(self, request, *args, **kwargs): otp = generate_otp() if User.objects.filter(email=request.data['email']): - expiry = OTP_EXPIRY + expiry = timezone.now() + timezone.timedelta(days=1) email_data, created = UserEmailOtp.objects.get_or_create(email=request.data['email']) if created: email_data.expired_at = expiry diff --git a/guardian/serializers.py b/guardian/serializers.py index f36bd46..8db860b 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -251,7 +251,7 @@ class GuardianDetailSerializer(serializers.ModelSerializer): """Meta info""" model = Guardian fields = ['id', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'gender', 'dob', - 'guardian_code','is_active', 'is_complete_profile', 'created_at', 'image', 'is_deleted' + 'guardian_code','is_active', 'is_complete_profile', 'created_at', 'image', 'is_deleted', 'updated_at'] class TaskDetailsSerializer(serializers.ModelSerializer): """Task detail serializer""" diff --git a/guardian/views.py b/guardian/views.py index ad6a134..e7a4b87 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -66,7 +66,7 @@ class SignupViewset(viewsets.ModelViewSet): """Generate otp""" otp = generate_otp() # expire otp after 1 day - expiry = OTP_EXPIRY + expiry = timezone.now() + timezone.timedelta(days=1) # create user email otp object UserEmailOtp.objects.create(email=request.data['email'], otp=otp, user_type=str(request.data['user_type']), expired_at=expiry) From 3921f76f22642911d2ec7fa86c9442a5daef7179 Mon Sep 17 00:00:00 2001 From: jain Date: Fri, 18 Aug 2023 18:31:27 +0530 Subject: [PATCH 4/4] remove print statement --- guardian/views.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/guardian/views.py b/guardian/views.py index e7a4b87..9b9a0aa 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -295,11 +295,6 @@ class ApproveTaskAPIView(viewsets.ViewSet): task_queryset = JuniorTask.objects.filter(id=self.request.data.get('task_id'), guardian=guardian, junior=self.request.data.get('junior_id')).last() - print("task_queryset.junior.is_deleted===>",task_queryset.junior.is_deleted) - print("task_queryset.junior.is_active===>",task_queryset.junior.is_active) - print("task_queryset.junior.is_deleted===>", type(task_queryset.junior.is_deleted)) - print("task_queryset.junior.is_active===>", type(task_queryset.junior.is_active)) - print("99999===>",(task_queryset.junior.is_deleted or not task_queryset.junior.is_active)) if task_queryset and (task_queryset.junior.is_deleted or not task_queryset.junior.is_active): return custom_error_response(ERROR_CODE['2072'], response_status=status.HTTP_400_BAD_REQUEST) # use ApproveJuniorSerializer serializer