Scheduled emails: Extend filter by subevents (Z#23122902) (#3551)

To create automated mail rules for specific subevents only, this adds a selection widget to choose which, only appearing if there are any subevents to select.
This commit is contained in:
Phin Wolkwitz
2023-09-06 12:05:37 +02:00
committed by GitHub
parent 8913d35838
commit 991f245dce
7 changed files with 127 additions and 10 deletions

View File

@@ -253,6 +253,58 @@ def test_sendmail_rule_send_correct_subevent(order, event_series, subevent1, sub
assert djmail.outbox[0].to[0] == p1.attendee_email
@pytest.mark.django_db
@scopes_disabled()
def test_sendmail_rule_specified_subevent(order, event_series, subevent1, subevent2, item):
djmail.outbox = []
order.all_positions.create(item=item, price=13, subevent=subevent1)
order.all_positions.create(item=item, price=23, subevent=subevent2)
order.status = order.STATUS_PAID
order.save()
rule = event_series.sendmail_rules.create(date_is_absolute=False, offset_is_after=False, send_offset_days=1,
send_offset_time=datetime.time(4, 30), subevent=subevent1,
subject='meow', template='meow meow meow')
sendmail_run_rules(None)
assert len(djmail.outbox) == 1
m = ScheduledMail.objects.filter(rule=rule).first()
assert m.subevent == subevent1
@pytest.mark.django_db
@scopes_disabled()
def test_sendmail_rule_all_subevents(event_series, subevent1, subevent2, item):
djmail.outbox = []
o1 = Order.objects.create(event=item.event, status=Order.STATUS_PAID,
expires=now() + datetime.timedelta(hours=1),
total=13, code='DUMMY', email='dummy1@dummy.test',
datetime=now(), locale='en')
o1.all_positions.create(item=item, price=13, subevent=subevent1)
o1.all_positions.create(item=item, price=13, subevent=subevent2)
o2 = Order.objects.create(event=item.event, status=Order.STATUS_PAID,
expires=now() + datetime.timedelta(hours=1),
total=13, code='DUMMY', email='dummy2@dummy.test',
datetime=now(), locale='en')
o2.all_positions.create(item=item, price=23, subevent=subevent1)
o2.all_positions.create(item=item, price=23, subevent=subevent2)
rule = event_series.sendmail_rules.create(date_is_absolute=False, offset_is_after=False, send_offset_days=1,
send_offset_time=datetime.time(4, 30), subevent=None,
subject='meow', template='meow meow meow')
sendmail_run_rules(None)
ms = ScheduledMail.objects.filter(rule=rule)
assert len(ms) == 2 # one for each subevent
assert ms.get(subevent=subevent1) is not None
assert ms.get(subevent=subevent2) is not None
@pytest.mark.django_db
@scopes_disabled()
def test_sendmail_rule_send_correct_products(event, order, item, item2):