From 5f502776b12afce0e21d41ad1e36a6ee72627b0b Mon Sep 17 00:00:00 2001 From: Felix Rindt Date: Wed, 22 Jul 2020 18:20:05 +0200 Subject: [PATCH] send canonical mails depending on sales channel --- src/pretix/base/models/orders.py | 2 +- src/pretix/base/services/orders.py | 14 ++++++++----- src/pretix/base/settings.py | 8 ++++++++ src/pretix/control/forms/event.py | 20 +++++++++++++++++++ .../templates/pretixcontrol/event/mail.html | 2 ++ 5 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index 4b62a0c9dc..937c16170e 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -1491,7 +1491,7 @@ class OrderPayment(models.Model): trigger_pdf=not send_mail or not self.order.event.settings.invoice_email_attachment ) - if send_mail: + if send_mail and self.order.sales_channel in self.order.event.settings.mail_sales_channel_paid_placed: self._send_paid_mail(invoice, user, mail_text) if self.order.event.settings.mail_send_order_paid_attendee: for p in self.order.positions.all(): diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index a895dd0a88..9909edfff7 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -960,11 +960,12 @@ def _perform_order(event: Event, payment_provider: str, position_ids: List[str], email_attendees = event.settings.mail_send_order_placed_attendee email_attendees_template = event.settings.mail_text_order_placed_attendee - _order_placed_email(event, order, pprov, email_template, log_entry, invoice, payment) - if email_attendees: - for p in order.positions.all(): - if p.addon_to_id is None and p.attendee_email and p.attendee_email != order.email: - _order_placed_email_attendee(event, order, p, email_attendees_template, log_entry) + if sales_channel in event.settings.mail_sales_channel_placed_paid: + _order_placed_email(event, order, pprov, email_template, log_entry, invoice, payment) + if email_attendees: + for p in order.positions.all(): + if p.addon_to_id is None and p.attendee_email and p.attendee_email != order.email: + _order_placed_email_attendee(event, order, p, email_attendees_template, log_entry) return order.id @@ -1056,6 +1057,9 @@ def send_download_reminders(sender, **kwargs): if days is None: continue + if o.sales_channel not in event.settings.mail_sales_channel_placed_paid: + continue + reminder_date = (o.first_date - timedelta(days=days)).replace(hour=0, minute=0, second=0, microsecond=0) if now() < reminder_date or o.datetime > reminder_date: continue diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index a73b8823c3..af8b925dcd 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -1190,6 +1190,14 @@ DEFAULTS = { "Defaults to your event name."), ) }, + 'mail_sales_channel_placed_paid': { + 'default': ['web'], + 'type': list, + }, + 'mail_sales_channel_ticket_reminder': { + 'default': ['web'], + 'type': list, + }, 'mail_text_signature': { 'type': LazyI18nString, 'default': "" diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 350063623c..057e1f0af2 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -758,6 +758,26 @@ class MailSettingsForm(SettingsForm): 'mail_attach_ical', ] + mail_sales_channel_placed_paid = forms.MultipleChoiceField( + choices=[(ident, sc.verbose_name) for ident, sc in get_all_sales_channels().items()], + label=_('Sales Channels for Checkout Emails'), + help_text=_('Restrict Order placed and paid emails to orders from certain sales channels.'), + widget=forms.CheckboxSelectMultiple( + attrs={'class': 'scrolling-multiple-choice'} + ), + required=False, + ) + + mail_sales_channel_ticket_reminder = forms.MultipleChoiceField( + choices=[(ident, sc.verbose_name) for ident, sc in get_all_sales_channels().items()], + label=_('Sales Channels for Ticket Emails'), + help_text=_('Restrict ticket reminder emails to orders from certain sales channels.'), + widget=forms.CheckboxSelectMultiple( + attrs={'class': 'scrolling-multiple-choice'} + ), + required=False, + ) + mail_bcc = forms.CharField( label=_("Bcc address"), help_text=_("All emails will be sent to this address as a Bcc copy"), diff --git a/src/pretix/control/templates/pretixcontrol/event/mail.html b/src/pretix/control/templates/pretixcontrol/event/mail.html index 0988ebaccc..18579ccc83 100644 --- a/src/pretix/control/templates/pretixcontrol/event/mail.html +++ b/src/pretix/control/templates/pretixcontrol/event/mail.html @@ -17,6 +17,8 @@ {% bootstrap_field form.mail_text_signature layout="control" %} {% bootstrap_field form.mail_bcc layout="control" %} {% bootstrap_field form.mail_attach_ical layout="control" %} + {% bootstrap_field form.mail_sales_channel_placed_paid layout="control" %} + {% bootstrap_field form.mail_sales_channel_ticket_reminder layout="control" %}
{% trans "E-mail design" %}