Skip to content

Commit 6064e41

Browse files
authored
update last_updated on send_bulk (#496)
1 parent 411a834 commit 6064e41

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

post_office/mail.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ def send(email):
388388

389389
# Update statuses of sent emails
390390
email_ids = [email.id for email in sent_emails]
391-
Email.objects.filter(id__in=email_ids).update(status=STATUS.sent)
391+
Email.objects.filter(id__in=email_ids).update(status=STATUS.sent, last_updated=timezone.now())
392392

393393
# Update statuses and conditionally requeue failed emails
394394
num_failed, num_requeued = 0, 0
@@ -407,8 +407,9 @@ def send(email):
407407
else:
408408
email.status = STATUS.failed
409409
num_failed += 1
410+
email.last_updated = timezone.now()
410411

411-
Email.objects.bulk_update(emails_failed, ['status', 'scheduled_time', 'number_of_retries'])
412+
Email.objects.bulk_update(emails_failed, ['status', 'scheduled_time', 'number_of_retries', 'last_updated'])
412413

413414
# If log level is 0, log nothing, 1 logs only sending failures
414415
# and 2 means log both successes and failures

post_office/tests/test_mail.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,32 @@ def test_send_bulk(self):
9696
status=STATUS.queued,
9797
backend_alias='locmem',
9898
)
99+
original_last_updated = email.last_updated
100+
99101
_send_bulk([email], uses_multiprocessing=False)
100-
self.assertEqual(Email.objects.get(id=email.id).status, STATUS.sent)
102+
email.refresh_from_db()
103+
self.assertEqual(email.status, STATUS.sent)
104+
self.assertGreater(email.last_updated, original_last_updated)
105+
self.assertEqual(len(mail.outbox), 1)
106+
self.assertEqual(mail.outbox[0].subject, 'send bulk')
107+
108+
# test fail
109+
email = Email.objects.create(
110+
111+
from_email='[email protected]',
112+
subject='send bulk',
113+
message='Message',
114+
status=STATUS.queued,
115+
backend_alias='locmem',
116+
)
117+
original_last_updated = email.last_updated
118+
with patch.object(Email, 'dispatch', side_effect=ValueError('test')):
119+
_send_bulk([email], uses_multiprocessing=False)
120+
121+
email.refresh_from_db()
122+
self.assertEqual(email.status, STATUS.requeued)
123+
self.assertEqual(email.number_of_retries, 1)
124+
self.assertGreater(email.last_updated, original_last_updated)
101125
self.assertEqual(len(mail.outbox), 1)
102126
self.assertEqual(mail.outbox[0].subject, 'send bulk')
103127

0 commit comments

Comments
 (0)