def check_for_missing_rows_in_completed_jobs():
    jobs = find_jobs_with_missing_rows()
    for job in jobs:
        recipient_csv, template, sender_id = get_recipient_csv_and_template_and_sender_id(job)
        missing_rows = find_missing_row_for_job(job.id, job.notification_count)
        for row_to_process in missing_rows:
            row = recipient_csv[row_to_process.missing_row]
            current_app.logger.info(
                "Processing missing row: {} for job: {}".format(row_to_process.missing_row, job.id))
            process_row(row, template, job, job.service, sender_id=sender_id)
예제 #2
0
def test_find_jobs_with_missing_rows_returns_nothing_for_a_job_completed_more_that_a_day_ago(
        sample_email_template):
    job = create_job(template=sample_email_template,
                     notification_count=5,
                     job_status=JOB_STATUS_FINISHED,
                     processing_finished=datetime.utcnow() - timedelta(days=1))
    for i in range(0, 4):
        create_notification(job=job, job_row_number=i)

    results = find_jobs_with_missing_rows()

    assert len(results) == 0
예제 #3
0
def test_find_jobs_with_missing_rows_doesnt_return_jobs_that_are_not_finished(
        sample_email_template, status):
    job = create_job(template=sample_email_template,
                     notification_count=5,
                     job_status=status,
                     processing_finished=datetime.utcnow() -
                     timedelta(minutes=11))
    for i in range(0, 4):
        create_notification(job=job, job_row_number=i)

    results = find_jobs_with_missing_rows()

    assert len(results) == 0
예제 #4
0
def test_find_jobs_with_missing_rows(sample_email_template):
    healthy_job = create_job(template=sample_email_template,
                             notification_count=3,
                             job_status=JOB_STATUS_FINISHED,
                             processing_finished=datetime.utcnow() -
                             timedelta(minutes=20))
    for i in range(0, 3):
        create_notification(job=healthy_job, job_row_number=i)
    job_with_missing_rows = create_job(template=sample_email_template,
                                       notification_count=5,
                                       job_status=JOB_STATUS_FINISHED,
                                       processing_finished=datetime.utcnow() -
                                       timedelta(minutes=20))
    for i in range(0, 4):
        create_notification(job=job_with_missing_rows, job_row_number=i)

    results = find_jobs_with_missing_rows()

    assert len(results) == 1
    assert results[0] == job_with_missing_rows