Handle IntegrityError when creating new alias

This commit is contained in:
Son NK 2020-10-24 15:50:29 +02:00
parent bdec727cd1
commit 9f50ab4cce

View file

@ -3,6 +3,7 @@ from dataclasses import dataclass
from flask import render_template, redirect, url_for, flash, request from flask import render_template, redirect, url_for, flash, request
from flask_login import login_required, current_user from flask_login import login_required, current_user
from itsdangerous import TimestampSigner, SignatureExpired from itsdangerous import TimestampSigner, SignatureExpired
from sqlalchemy.exc import IntegrityError
from app.config import ( from app.config import (
DISABLE_ALIAS_SUFFIX, DISABLE_ALIAS_SUFFIX,
@ -203,14 +204,20 @@ def custom_alias():
if domain: if domain:
custom_domain_id = domain.id custom_domain_id = domain.id
alias = Alias.create( try:
user_id=current_user.id, alias = Alias.create(
email=full_alias, user_id=current_user.id,
note=alias_note, email=full_alias,
mailbox_id=mailboxes[0].id, note=alias_note,
custom_domain_id=custom_domain_id, mailbox_id=mailboxes[0].id,
) custom_domain_id=custom_domain_id,
db.session.flush() )
db.session.flush()
except IntegrityError:
LOG.warning("Alias %s already exists", full_alias)
db.session.rollback()
flash("Unknown error, please retry", "error")
return redirect(url_for("dashboard.custom_alias"))
for i in range(1, len(mailboxes)): for i in range(1, len(mailboxes)):
AliasMailbox.create( AliasMailbox.create(