def handle_file_failed(dongle, remote, channel, files, ret, err): logger.info("handle file failed %s[%s]: %s" % (remote, channel, files)) logger.debug(err) try: rules = get_campaign_rule(files) if rules is None: raise Exception("No matching rule for files %s!" % files) record = None try_again = False for rule in get_campaign_rule(files): record = RemoteBluetoothDeviceFilesRejected() record.dongle = UploaderBluetoothDongle.objects.get(address=dongle) record.campaign = rule record.ret_value = ret record.setRemoteDevice(remote) record.save() # from here we try again either on timeout or if rejected count is # smaller than filter, for any of the matching rules # if only 1 campaign matches we do it all over! try_again = try_again | rule.tryAgain(record) logger.info("try again: %s" % try_again) if try_again: from openproximity.rpc.server import OpenProximityService uploader = OpenProximityService.getUploader() if uploader: logger.info("trying again") return do_upload(uploader, files, remote) else: logger.info("no uploader registered") except Exception, err: logger.error("OOOPS!!!") logger.exception(err)
def upload_after_rejected(rules, services, dongle=None, remote=None): if len(rules) == 0: return False uploader = get_uploader(services) if not uploader: raise Exception("No uploader, can't try again") logger.info("trying again") files = set() use_same = False for rule in rules: files=files.union( set(get_files_from_campaign(rule)) ) if rule.upload_on_discovered: use_same=True do_upload(uploader, files, remote, dongle=dongle if use_same else None) return True
def upload_after_rejected(rules, services, dongle=None, remote=None): if len(rules) == 0: return False uploader = get_uploader(services) if not uploader: raise Exception("No uploader, can't try again") logger.info("trying again") files = set() use_same = False for rule in rules: files = files.union(set(get_files_from_campaign(rule))) if rule.upload_on_discovered: use_same = True do_upload(uploader, files, remote, dongle=dongle if use_same else None) return True