Merge pull request #297 from TheLastProject/feature/dedupe_email

Dedupe email address
This commit is contained in:
Son Nguyen Kim 2020-10-04 15:08:15 +02:00 committed by GitHub
commit a4bcf59bfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 12 deletions

View File

@ -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 ""
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("@", " 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()
(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()

View File

@ -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>'