diff --git a/src/pretix/plugins/sendmail/forms.py b/src/pretix/plugins/sendmail/forms.py index 1dc858024c..26b09c8a4a 100644 --- a/src/pretix/plugins/sendmail/forms.py +++ b/src/pretix/plugins/sendmail/forms.py @@ -158,7 +158,12 @@ class OrderMailForm(BaseMailForm): ), label=pgettext_lazy('sendmail_form', 'Restrict to products'), required=True, - queryset=Item.objects.none() + queryset=Item.objects.none(), + help_text=pgettext_lazy( + 'sendmail_form', + 'There may be multiple mails sent out to the same mail address if one order contains multiple attendee ' + 'products for it, if you restrict to products while also restricting mails to attendees only. ' + 'This is intended, as every one of those get linked to their own separate order page restricted to only that product.') ) filter_checkins = forms.BooleanField( label=_('Filter check-in status'), @@ -371,6 +376,11 @@ class RuleForm(FormPlaceholderMixin, I18nModelForm): del self.fields['subevent'] self.fields['limit_products'].queryset = Item.objects.filter(event=self.event) + self.fields['limit_products'].help_text = pgettext_lazy( + 'sendmail_form', + 'There may be multiple mails sent out to the same mail address if one order contains multiple attendee ' + 'products for it, if you restrict to products while also restricting mails to attendees only. ' + 'This is intended, as every one of those get linked to their own separate order page restricted to only that product.') self.fields['schedule_type'] = forms.ChoiceField( label=_('Type of schedule time'), diff --git a/src/pretix/plugins/sendmail/tasks.py b/src/pretix/plugins/sendmail/tasks.py index 03345dfada..bd017bee10 100644 --- a/src/pretix/plugins/sendmail/tasks.py +++ b/src/pretix/plugins/sendmail/tasks.py @@ -85,8 +85,6 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict, ) ), ).prefetch_related('addons', 'subevent'): - if p.addon_to_id is not None: - continue if p.item_id not in items and not any(a.item_id in items for a in p.addons.all()): continue @@ -106,6 +104,10 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict, if p.attendee_email == o.email and send_to_order: continue + # the amount of mails could be further restricted if we filter out those where the addon-attendee-email + # is the same as the main-product-attendee-email, however, that bears many issues, e.g. if one of + # those mail-addresses was only a placeholder or if restrictions are set and the main-product is + # excluded -- for now it seems best not to filter them at this point in time if subevent and p.subevent_id != subevent: continue diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index c131644631..cc503e9a62 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -174,7 +174,6 @@ class OrderPositionDetailMixin(NoSearchIndexViewMixin): def position(self): qs = OrderPosition.objects.filter( order__event=self.request.event, - addon_to__isnull=True, order__code=self.kwargs['order'], positionid=self.kwargs['position'] ).select_related('order', 'order__event')