Kaynağa Gözat

Merge pull request #297 from TheLastProject/feature/dedupe_email

Dedupe email address
Son Nguyen Kim 4 yıl önce
ebeveyn
işleme
a4bcf59bfe
2 değiştirilmiş dosya ile 24 ekleme ve 12 silme
  1. 13 12
      app/models.py
  2. 11 0
      tests/test_models.py

+ 13 - 12
app/models.py

@@ -1184,19 +1184,20 @@ class Contact(db.Model, ModelMixin):
             or user.sender_format == SenderFormatEnum.VIA.value
         ):
             new_name = f"{self.website_email} via SimpleLogin"
-        elif user.sender_format == SenderFormatEnum.AT.value:
-            name = self.name or ""
-            new_name = (
-                name + (" - " if name else "") + self.website_email.replace("@", " at ")
-            ).strip()
-        elif user.sender_format == SenderFormatEnum.A.value:
-            name = self.name or ""
+        else:
+            if user.sender_format == SenderFormatEnum.AT.value:
+                formatted_email = self.website_email.replace("@", " at ").strip()
+            elif user.sender_format == SenderFormatEnum.A.value:
+                formatted_email = self.website_email.replace("@", "(a)").strip()
+            elif user.sender_format == SenderFormatEnum.FULL.value:
+                formatted_email = self.website_email.strip()
+
+            # Prefix name to formatted email if available
             new_name = (
-                name + (" - " if name else "") + self.website_email.replace("@", "(a)")
-            ).strip()
-        elif user.sender_format == SenderFormatEnum.FULL.value:
-            name = self.name or ""
-            new_name = (name + (" - " if name else "") + self.website_email).strip()
+                (self.name + " - " + formatted_email)
+                if self.name and self.name != self.website_email.strip()
+                else formatted_email
+            )
 
         new_addr = formataddr((new_name, self.reply_email)).strip()
         return new_addr.strip()

+ 11 - 0
tests/test_models.py

@@ -133,8 +133,19 @@ def test_new_addr(flask_client):
     )
     assert c1.new_addr() == '"abcd@example.com via SimpleLogin" <rep@SL>'
 
+    # set sender format = FULL
+    user.sender_format = SenderFormatEnum.FULL.value
+    db.session.commit()
+    assert c1.new_addr() == '"First Last - abcd@example.com" <rep@SL>'
+
+    # Make sure email isn't duplicated if sender name equals email
+    c1.name = "abcd@example.com"
+    db.session.commit()
+    assert c1.new_addr() == '"abcd@example.com" <rep@SL>'
+
     # set sender_format = AT
     user.sender_format = SenderFormatEnum.AT.value
+    c1.name = "First Last"
     db.session.commit()
     assert c1.new_addr() == '"First Last - abcd at example.com" <rep@SL>'