diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index d15e9ce246..09c5505f19 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -984,7 +984,7 @@ def send_download_reminders(sender, **kwargs): continue reminder_date = (o.first_date - timedelta(days=days)).replace(hour=0, minute=0, second=0, microsecond=0) - if now() < reminder_date: + if now() < reminder_date or o.datetime > reminder_date: continue with transaction.atomic(): diff --git a/src/tests/base/test_orders.py b/src/tests/base/test_orders.py index d8546b89e7..82121efc7d 100644 --- a/src/tests/base/test_orders.py +++ b/src/tests/base/test_orders.py @@ -434,7 +434,7 @@ class DownloadReminderTests(TestCase): self.order = Order.objects.create( code='FOO', event=self.event, email='dummy@dummy.test', status=Order.STATUS_PAID, locale='en', - datetime=now() - timedelta(hours=4), + datetime=now() - timedelta(days=4), expires=now() - timedelta(hours=4) + timedelta(days=10), total=Decimal('46.00'), ) @@ -533,6 +533,14 @@ class DownloadReminderTests(TestCase): send_download_reminders(sender=self.event) assert len(djmail.outbox) == 0 + @classscope(attr='o') + def test_not_sent_after_reminder_date(self): + self.order.datetime = self.event.date_from - timedelta(days=1) + self.order.save() + self.event.settings.mail_days_download_reminder = 2 + send_download_reminders(sender=self.event) + assert len(djmail.outbox) == 0 + class OrderCancelTests(TestCase): def setUp(self):