From 77c67c53145f97641449153ac47ecbbf29e7c2a4 Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Sun, 30 Aug 2020 19:56:45 +0200 Subject: [PATCH] create aliases_for_mailbox() and nb_email_log_for_mailbox() --- app/alias_utils.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/alias_utils.py b/app/alias_utils.py index cc5f21d1..dc1b875e 100644 --- a/app/alias_utils.py +++ b/app/alias_utils.py @@ -19,6 +19,9 @@ from app.models import ( DeletedAlias, DomainDeletedAlias, AliasMailbox, + Mailbox, + EmailLog, + Contact, ) @@ -167,3 +170,30 @@ def delete_alias(alias: Alias, user: User): Alias.query.filter(Alias.id == alias.id).delete() db.session.commit() + + +def aliases_for_mailbox(mailbox: Mailbox) -> [Alias]: + """ + get list of aliases for a given mailbox + """ + ret = set(Alias.query.filter(Alias.mailbox_id == mailbox.id).all()) + + for alias in ( + db.session.query(Alias) + .join(AliasMailbox, Alias.id == AliasMailbox.alias_id) + .filter(AliasMailbox.mailbox_id == mailbox.id) + ): + ret.add(alias) + + return list(ret) + + +def nb_email_log_for_mailbox(mailbox: Mailbox): + aliases = aliases_for_mailbox(mailbox) + alias_ids = [alias.id for alias in aliases] + return ( + db.session.query(EmailLog) + .join(Contact, EmailLog.contact_id == Contact.id) + .filter(Contact.alias_id.in_(alias_ids)) + .count() + )