mirror of
https://github.com/simple-login/app.git
synced 2024-09-21 07:25:59 +08:00
create aliases_for_mailbox() and nb_email_log_for_mailbox()
This commit is contained in:
parent
8079746e47
commit
77c67c5314
|
@ -19,6 +19,9 @@ from app.models import (
|
||||||
DeletedAlias,
|
DeletedAlias,
|
||||||
DomainDeletedAlias,
|
DomainDeletedAlias,
|
||||||
AliasMailbox,
|
AliasMailbox,
|
||||||
|
Mailbox,
|
||||||
|
EmailLog,
|
||||||
|
Contact,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,3 +170,30 @@ def delete_alias(alias: Alias, user: User):
|
||||||
|
|
||||||
Alias.query.filter(Alias.id == alias.id).delete()
|
Alias.query.filter(Alias.id == alias.id).delete()
|
||||||
db.session.commit()
|
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()
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in a new issue