diff --git a/app/celery/nightly_tasks.py b/app/celery/nightly_tasks.py index 73086fb40..060834550 100644 --- a/app/celery/nightly_tasks.py +++ b/app/celery/nightly_tasks.py @@ -258,19 +258,27 @@ def raise_alert_if_letter_notifications_still_sending(): today = datetime.utcnow().date() # Do nothing on the weekend - if today.isoweekday() in [6, 7]: + if today.isoweekday() in {6, 7}: # sat, sun return - if today.isoweekday() in [1, 2]: + if today.isoweekday() in {1, 2}: # mon, tues. look for files from before the weekend offset_days = 4 else: offset_days = 2 - still_sending = Notification.query.filter( + + q = Notification.query.filter( Notification.notification_type == LETTER_TYPE, Notification.status == NOTIFICATION_SENDING, Notification.key_type == KEY_TYPE_NORMAL, func.date(Notification.sent_at) <= today - timedelta(days=offset_days) - ).count() + ) + + if today.isoweekday() in {2, 4}: # on tue, thu, we only care about first class letters + q = q.filter( + Notification.postage == 'first' + ) + + still_sending = q.count() if still_sending: message = "There are {} letters in the 'sending' state from {}".format( diff --git a/tests/app/celery/test_nightly_tasks.py b/tests/app/celery/test_nightly_tasks.py index 8eeedbe0b..e1c86c1ba 100644 --- a/tests/app/celery/test_nightly_tasks.py +++ b/tests/app/celery/test_nightly_tasks.py @@ -471,8 +471,8 @@ def test_alert_if_letter_notifications_still_sending_does_nothing_on_the_weekend def test_monday_alert_if_letter_notifications_still_sending_reports_thursday_letters(sample_letter_template, mocker): thursday = datetime(2018, 1, 11, 13, 30) yesterday = datetime(2018, 1, 14, 13, 30) - create_notification(template=sample_letter_template, status='sending', sent_at=thursday) - create_notification(template=sample_letter_template, status='sending', sent_at=yesterday) + create_notification(template=sample_letter_template, status='sending', sent_at=thursday, postage='second') + create_notification(template=sample_letter_template, status='sending', sent_at=yesterday, postage='second') mock_create_ticket = mocker.patch("app.celery.nightly_tasks.zendesk_client.create_ticket") @@ -489,8 +489,10 @@ def test_monday_alert_if_letter_notifications_still_sending_reports_thursday_let def test_tuesday_alert_if_letter_notifications_still_sending_reports_friday_letters(sample_letter_template, mocker): friday = datetime(2018, 1, 12, 13, 30) yesterday = datetime(2018, 1, 14, 13, 30) - create_notification(template=sample_letter_template, status='sending', sent_at=friday) - create_notification(template=sample_letter_template, status='sending', sent_at=yesterday) + create_notification(template=sample_letter_template, status='sending', sent_at=friday, postage='first') + create_notification(template=sample_letter_template, status='sending', sent_at=yesterday, postage='first') + # doesn't get reported because it's second class, and it's tuesday today + create_notification(template=sample_letter_template, status='sending', sent_at=friday, postage='second') mock_create_ticket = mocker.patch("app.celery.nightly_tasks.zendesk_client.create_ticket")