Add DomailMailbox model

This commit is contained in:
Son NK 2020-08-01 12:20:59 +02:00
parent d98cde440a
commit e8fc9752b5
1 changed files with 24 additions and 0 deletions

View File

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