def main(jobid, service, session): job = session.query(Job).get(jobid) if not job: die("Job ({}) was not found.".format(jobid)) try: sb = social_broadcast(job, service) session.add(sb) session.commit() print green("Great, broadcasting was successful.") except Exception as exc: die(exc)
def test_social_broadcast_fail(session, monkeypatch, job): session.add(job) session.commit() mock = MagicMock() mock.side_effect = requests.HTTPError() monkeypatch.setattr('jobber.functions.Zapier.broadcast', mock) sb = social_broadcast(job, 'twitter') assert not sb.success assert sb.service == 'twitter' assert sb.data == json.dumps({}) assert sb.job_id == job.id
def test_social_broadcast(session, monkeypatch, job): data = {'status': 'success', 'foo': 'bar'} session.add(job) session.commit() mock = MagicMock() mock.return_value = data monkeypatch.setattr('jobber.functions.Zapier.broadcast', mock) sb = social_broadcast(job, 'twitter') assert sb.success assert sb.service == 'twitter' assert sb.data == json.dumps(data) assert sb.job_id == job.id
def test_social_broadcast(session, monkeypatch, job): data = { 'status': 'success', 'foo': 'bar' } session.add(job) session.commit() mock = MagicMock() mock.return_value = data monkeypatch.setattr('jobber.functions.Zapier.broadcast', mock) sb = social_broadcast(job, 'twitter') assert sb.success assert sb.service == 'twitter' assert sb.data == json.dumps(data) assert sb.job_id == job.id
def main(session): logger.info('Selecting candidates for broadcast.') threshold = settings.BROADCAST_EXPIRY_THRESHOLD_DAYS services = settings.ZAPIER_WEBHOOKS.keys() selection = [] for job in session.query(Job).filter_by(published=True): broadcasts = session.query(SocialBroadcast)\ .filter_by(job=job, success=True)\ .order_by(SocialBroadcast.created.desc())\ .all() if not broadcasts: logger.debug( "Selecting job ({}) because it has not been " "broadcasted before.".format(job.id) ) selection.append(job) continue diff = (now() - broadcasts[0].created).days if diff >= threshold: logger.debug( "Selecting job ({}) because it has not been " "successfully broadcasted for {} days.".format(job.id, threshold) ) selection.append(job) continue logger.debug("Skipping job ({}) for broadcasting.".format(job.id)) logger.info("Selected {} candidates for broadcast.".format(len(selection))) for selected in selection: for service in services: sb = social_broadcast(selected, service) session.add(sb) session.commit()
def main(session): logger.info('Selecting candidates for broadcast.') threshold = settings.BROADCAST_EXPIRY_THRESHOLD_DAYS services = settings.ZAPIER_WEBHOOKS.keys() selection = [] for job in session.query(Job).filter_by(published=True): broadcasts = session.query(SocialBroadcast)\ .filter_by(job=job, success=True)\ .order_by(SocialBroadcast.created.desc())\ .all() if not broadcasts: logger.debug("Selecting job ({}) because it has not been " "broadcasted before.".format(job.id)) selection.append(job) continue diff = (now() - broadcasts[0].created).days if diff >= threshold: logger.debug("Selecting job ({}) because it has not been " "successfully broadcasted for {} days.".format( job.id, threshold)) selection.append(job) continue logger.debug("Skipping job ({}) for broadcasting.".format(job.id)) logger.info("Selected {} candidates for broadcast.".format(len(selection))) for selected in selection: for service in services: sb = social_broadcast(selected, service) session.add(sb) session.commit()