fix filter not working when alias has several mailboxes

This commit is contained in:
Son NK 2020-11-03 15:10:57 +01:00
parent 5a7df14d58
commit 6e0394d980
2 changed files with 26 additions and 11 deletions

View File

@ -223,18 +223,30 @@ def get_alias_infos_with_pagination_v3(
.subquery()
)
mailboxes_sub = (
db.session.query(
Alias.id,
func.count(AliasMailbox.id).label("nb_matched_mailboxes"),
)
.join(AliasMailbox, Alias.id == AliasMailbox.alias_id, isouter=True)
.join(Mailbox, AliasMailbox.mailbox_id == Mailbox.id, isouter=True)
)
if query:
mailboxes_sub = mailboxes_sub.filter(
or_(Mailbox.email == None, Mailbox.email.ilike(f"%{query}%"))
mailboxes_sub = (
db.session.query(
Alias.id,
func.count(Mailbox.id).label("nb_matched_mailboxes"),
)
.join(AliasMailbox, Alias.id == AliasMailbox.alias_id, isouter=True)
.join(
Mailbox,
and_(
AliasMailbox.mailbox_id == Mailbox.id,
Mailbox.email.ilike(f"%{query}%"),
),
isouter=True,
)
)
else:
mailboxes_sub = (
db.session.query(
Alias.id,
func.count(Mailbox.id).label("nb_matched_mailboxes"),
)
.join(AliasMailbox, Alias.id == AliasMailbox.alias_id, isouter=True)
.join(Mailbox, AliasMailbox.mailbox_id == Mailbox.id, isouter=True)
)
mailboxes_sub = mailboxes_sub.group_by(Alias.id).subquery()

View File

@ -81,6 +81,9 @@ def test_get_alias_infos_with_pagination_v3_query_alias_mailboxes(flask_client):
alias_infos = get_alias_infos_with_pagination_v3(user, query=mb.email)
assert len(alias_infos) == 1
alias_infos = get_alias_infos_with_pagination_v3(user, query=alias.email)
assert len(alias_infos) == 1
def test_get_alias_infos_with_pagination_v3_query_alias_note(flask_client):
"""test the query on the alias note"""