From e8fc9752b5a9a10a4319e15e9ac6e0bacb068c12 Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Sat, 1 Aug 2020 12:20:59 +0200 Subject: [PATCH] Add DomailMailbox model --- app/models.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/models.py b/app/models.py index 1c08ba42..86d3143d 100644 --- a/app/models.py +++ b/app/models.py @@ -1353,11 +1353,20 @@ class CustomDomain(db.Model, ModelMixin): db.Boolean, nullable=False, default=False, server_default="0" ) + _mailboxes = db.relationship("Mailbox", secondary="domain_mailbox", lazy="joined") + # an alias is created automatically the first time it receives an email catch_all = db.Column(db.Boolean, nullable=False, default=False, server_default="0") user = db.relationship(User, foreign_keys=[user_id]) + @property + def mailboxes(self): + if self._mailboxes: + return self._mailboxes + else: + return [self.user.default_mailbox] + def nb_alias(self): return Alias.filter_by(custom_domain_id=self.id).count() @@ -1625,6 +1634,21 @@ class DirectoryMailbox(db.Model, ModelMixin): ) +class DomainMailbox(db.Model, ModelMixin): + """store the owning mailboxes for a domain""" + + __table_args__ = ( + db.UniqueConstraint("domain_id", "mailbox_id", name="uq_domain_mailbox"), + ) + + domain_id = db.Column( + db.ForeignKey(CustomDomain.id, ondelete="cascade"), nullable=False + ) + mailbox_id = db.Column( + db.ForeignKey(Mailbox.id, ondelete="cascade"), nullable=False + ) + + _NB_RECOVERY_CODE = 8 _RECOVERY_CODE_LENGTH = 8