Only send download reminders if there's actually a download

This commit is contained in:
Raphael Michel
2020-03-16 09:22:41 +01:00
parent 9a32668ee1
commit 8d23d75dfd
3 changed files with 36 additions and 2 deletions

View File

@@ -1019,7 +1019,6 @@ def send_download_reminders(sender, **kwargs):
F('event__date_from')
)
).filter(
status=Order.STATUS_PAID,
download_reminder_sent=False,
datetime__lte=now() - timedelta(hours=2),
first_date__gte=today,
@@ -1049,6 +1048,22 @@ def send_download_reminders(sender, **kwargs):
if not all([r for rr, r in allow_ticket_download.send(event, order=o)]):
continue
if not o.ticket_download_available:
continue
positions = o.positions.select_related('item')
if o.status != Order.STATUS_PAID:
if o.status != Order.STATUS_PENDING or o.require_approval or not \
o.event.settings.ticket_download_pending:
continue
send = False
for p in positions:
if p.generate_ticket:
send = True
break
if not send:
continue
with language(o.locale):
o.download_reminder_sent = True
o.save(update_fields=['download_reminder_sent'])
@@ -1066,6 +1081,9 @@ def send_download_reminders(sender, **kwargs):
if event.settings.mail_send_download_reminder_attendee:
for p in o.positions.all():
if not p.generate_ticket:
continue
if p.subevent_id:
reminder_date = (p.subevent.date_from - timedelta(days=days)).replace(
hour=0, minute=0, second=0, microsecond=0

View File

@@ -133,7 +133,7 @@ def timeline_for_event(event, subevent=None):
if not event.has_subevents:
days = event.settings.get('mail_days_download_reminder', as_type=int)
if days is not None:
if days is not None and event.settings.ticket_download:
reminder_date = (ev.date_from - timedelta(days=days)).replace(hour=0, minute=0, second=0, microsecond=0)
tl.append(TimelineEvent(
event=event, subevent=subevent,

View File

@@ -445,8 +445,24 @@ class DownloadReminderTests(TestCase):
order=self.order, item=self.ticket, variation=None,
price=Decimal("23.00"), attendee_name_parts={"full_name": "Peter"}, positionid=1
)
self.event.settings.ticket_download = True
djmail.outbox = []
@classscope(attr='o')
def test_downloads_disabled(self):
self.event.settings.mail_days_download_reminder = 2
self.event.settings.ticket_download = False
send_download_reminders(sender=self.event)
assert len(djmail.outbox) == 0
@classscope(attr='o')
def test_downloads_disabled_per_product(self):
self.event.settings.mail_days_download_reminder = 2
self.ticket.generate_tickets = False
self.ticket.save()
send_download_reminders(sender=self.event)
assert len(djmail.outbox) == 0
@classscope(attr='o')
def test_disabled(self):
send_download_reminders(sender=self.event)