diff --git a/app/models.py b/app/models.py index a5b23f04..0bc40075 100644 --- a/app/models.py +++ b/app/models.py @@ -1272,6 +1272,17 @@ class Directory(db.Model, ModelMixin): user = db.relationship(User) + _mailboxes = db.relationship( + "Mailbox", secondary="directory_mailbox", lazy="joined" + ) + + @property + def mailboxes(self): + if self._mailboxes: + return self._mailboxes + else: + return [self.user.default_mailbox] + def nb_alias(self): return Alias.filter_by(directory_id=self.id).count() @@ -1446,6 +1457,19 @@ class AliasMailbox(db.Model, ModelMixin): ) +class DirectoryMailbox(db.Model, ModelMixin): + __table_args__ = ( + db.UniqueConstraint("directory_id", "mailbox_id", name="uq_directory_mailbox"), + ) + + directory_id = db.Column( + db.ForeignKey(Directory.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