From d8ed1cbbc3bd29c3878730e5c0676d7dc9d78b37 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 1 Oct 2020 20:51:56 +0200 Subject: [PATCH] Dedupe email address --- app/models.py | 23 ++++++++++------------- tests/test_models.py | 11 +++++++++++ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/app/models.py b/app/models.py index 56ed883f..779663ea 100644 --- a/app/models.py +++ b/app/models.py @@ -1181,19 +1181,16 @@ 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 "" - 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() + 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 = (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() diff --git a/tests/test_models.py b/tests/test_models.py index f3e5905f..25932687 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -133,8 +133,19 @@ def test_new_addr(flask_client): ) assert c1.new_addr() == '"abcd@example.com via SimpleLogin" ' + # set sender format = FULL + user.sender_format = SenderFormatEnum.FULL.value + db.session.commit() + assert c1.new_addr() == '"First Last - abcd@example.com" ' + + # 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" ' + # 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" '