handle case where contact is concurrently created

This commit is contained in:
Son NK 2020-09-09 17:00:07 +02:00
parent 6a8c0d6f76
commit 0c9106717b
1 changed files with 14 additions and 9 deletions

View File

@ -241,15 +241,20 @@ def replace_header_when_forward(msg: Message, alias: Alias, header: str):
reply_email = generate_reply_email()
contact = Contact.create(
user_id=alias.user_id,
alias_id=alias.id,
website_email=contact_email,
name=contact_name,
reply_email=reply_email,
is_cc=header.lower() == "cc",
)
db.session.commit()
try:
contact = Contact.create(
user_id=alias.user_id,
alias_id=alias.id,
website_email=contact_email,
name=contact_name,
reply_email=reply_email,
is_cc=header.lower() == "cc",
)
db.session.commit()
except IntegrityError:
LOG.warning("Contact %s %s already exist", alias, contact_email)
db.session.rollback()
contact = Contact.get_by(alias_id=alias.id, website_email=contact_email)
new_addrs.append(contact.new_addr())