def generate_otp(self): # Block users marked as blocked try: self.user = User.get_or_create( {'phone': self.phone, 'login_type': str(self.login_type)}) except MultipleResultsFound as error: APIException(500, str(error)) if self.user and self.user.blocked: self.message = USER_BLOCKED_TEXT return False self.otp_obj = AuthOtp.get_or_create({'user_id': self.user.id, 'is_active': True}, self.sign_up_ip) if not self.is_valid_otp_request(): return False self.otp = get_random_otp() self.otp_obj.update_otp_obj(otp=self.otp, otp_counter=self.otp_obj.otp_counter + 1, retry_counter=0, expiry=(datetime.datetime.now() + datetime.timedelta( seconds=OTP_EXPIRY_TIME)) ) return True