diff --git a/app/errors.py b/app/errors.py new file mode 100644 index 00000000..aa8d76e7 --- /dev/null +++ b/app/errors.py @@ -0,0 +1,3 @@ +class AliasInTrashError(Exception): + """raised when alias is deleted before """ + pass diff --git a/app/models.py b/app/models.py index ee2c3e8c..e6e044fb 100644 --- a/app/models.py +++ b/app/models.py @@ -630,6 +630,18 @@ class Alias(db.Model, ModelMixin): user = db.relationship(User) mailbox = db.relationship("Mailbox") + @classmethod + def create(cls, **kw): + r = cls(**kw) + + # make sure alias is not in global trash, i.e. DeletedAlias table + email = kw["email"] + if DeletedAlias.get_by(email=email): + raise AliasInTrashError + + db.session.add(r) + return r + @classmethod def create_new(cls, user, prefix, note=None, mailbox_id=None): if not prefix: