Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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()
Beispiel #8
0
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()