Sendmail: Allow scheduled mails to recover from "missed"

This commit is contained in:
Raphael Michel
2022-11-22 12:28:37 +01:00
parent 9523291651
commit d3589696d7
2 changed files with 4 additions and 2 deletions

View File

@@ -92,6 +92,8 @@ class ScheduledMail(models.Model):
is_dst=False, # prevent AmbiguousTimeError
)
if self.computed_datetime > timezone.now() and self.state == self.STATE_MISSED:
self.state = self.STATE_SCHEDULED
self.last_computed = timezone.now()
def send(self):
@@ -241,7 +243,7 @@ class Rule(models.Model, LoggingMixin):
if sm.computed_datetime != previous:
update_sms.append(sm)
ScheduledMail.objects.bulk_update(update_sms, ['computed_datetime', 'last_computed'], 100)
ScheduledMail.objects.bulk_update(update_sms, ['computed_datetime', 'last_computed', 'state'], 100)
@property
def human_readable_time(self):

View File

@@ -142,7 +142,7 @@ def sendmail_run_rules(sender, **kwargs):
previous = m.computed_datetime
m.recompute()
if m.computed_datetime != previous:
m.save(update_fields=['last_computed', 'computed_datetime'])
m.save(update_fields=['last_computed', 'computed_datetime', 'state'])
else:
unchanged.append(m.pk)