From: Michael Tremer Date: Sun, 24 Nov 2019 21:21:54 +0000 (+0000) Subject: campaigns: Do not send promotional emails when we do not have consent X-Git-Url: http://git.ipfire.org/?p=ipfire.org.git;a=commitdiff_plain;h=a0f2633fcc10e2f33facc7834eb7416c0f32cfb9 campaigns: Do not send promotional emails when we do not have consent Signed-off-by: Michael Tremer --- diff --git a/src/backend/campaigns.py b/src/backend/campaigns.py index 2a6cdf5e..ab305ff4 100644 --- a/src/backend/campaigns.py +++ b/src/backend/campaigns.py @@ -22,9 +22,9 @@ class Campaigns(Object): # Launch all campaigns self.db.execute("INSERT INTO campaign_emails(account_uid, template, \ - launch_at, repeat_after) \ + launch_at, repeat_after, promotional) \ SELECT %s, template, COALESCE(launch_at, CURRENT_TIMESTAMP + launch_after), \ - repeat_after FROM campaign_templates WHERE name = %s", + repeat_after, promotional FROM campaign_templates WHERE name = %s", account.uid, name) def _get_campaign_emails(self, query, *args): @@ -60,6 +60,19 @@ class CampaignEmail(Object): def repeat_after(self): return self.data.repeat_after + @property + def promotional(self): + return self.data.promotional + + @property + def should_be_sent(self): + # Send all non-promotional emails + if not self.promotional: + return True + + # For promotional emails, send them if we have consent + return self.account.consents_to_promotional_emails + def send(self): # Delete if the account does not exist any more if not self.account: @@ -68,7 +81,8 @@ class CampaignEmail(Object): logging.debug("Sending %s to %s" % (self.template, self.account)) # Generate the email - self.backend.messages.send_template(self.template, account=self.account) + if self.should_be_sent: + self.backend.messages.send_template(self.template, account=self.account) # Update this email for the next launch self._update()