]> git.ipfire.org Git - ipfire.org.git/commitdiff
campaigns: Do not send promotional emails when we do not have consent
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 24 Nov 2019 21:21:54 +0000 (21:21 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 24 Nov 2019 21:21:54 +0000 (21:21 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/campaigns.py

index 2a6cdf5eaeb8c6c7cb8a7c2996cb126679f30965..ab305ff43071d138ae35346a42f3dac7f74d68de 100644 (file)
@@ -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()