Пример #1
0
    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