Преглед изворни кода

Refactor: create Alias.unsubscribe_link

Son NK пре 4 година
родитељ
комит
ea45ac119e
2 измењених фајлова са 12 додато и 6 уклоњено
  1. 9 0
      app/models.py
  2. 3 6
      email_handler.py

+ 9 - 0
app/models.py

@@ -1020,6 +1020,15 @@ class Alias(db.Model, ModelMixin):
         else:
         else:
             return self.user.email
             return self.user.email
 
 
+    def unsubscribe_link(self) -> (str, bool):
+        """return the unsubscribe link along with whether this is via email (mailto:) or Http POST
+        The mailto: method is preferred
+        """
+        if UNSUBSCRIBER:
+            return f"mailto:{UNSUBSCRIBER}?subject={self.id}=", True
+        else:
+            return f"{URL}/dashboard/unsubscribe/{self.id}", False
+
     def __repr__(self):
     def __repr__(self):
         return f"<Alias {self.id} {self.email}>"
         return f"<Alias {self.id} {self.email}>"
 
 

+ 3 - 6
email_handler.py

@@ -654,12 +654,9 @@ def forward_email_to_mailbox(
         add_or_replace_header(msg, "To", to_header.strip())
         add_or_replace_header(msg, "To", to_header.strip())
 
 
     # add List-Unsubscribe header
     # add List-Unsubscribe header
-    if UNSUBSCRIBER:
-        unsubscribe_link = f"mailto:{UNSUBSCRIBER}?subject={alias.id}="
-        add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>")
-    else:
-        unsubscribe_link = f"{URL}/dashboard/unsubscribe/{alias.id}"
-        add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>")
+    unsubscribe_link, via_email = alias.unsubscribe_link()
+    add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>")
+    if not via_email:
         add_or_replace_header(
         add_or_replace_header(
             msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click"
             msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click"
         )
         )