mirror of
https://github.com/simple-login/app.git
synced 2024-09-27 20:31:30 +02:00
fix filter not working when alias has several mailboxes
This commit is contained in:
parent
5a7df14d58
commit
6e0394d980
@ -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()
|
||||
|
@ -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"""
|
||||
|
Loading…
Reference in New Issue
Block a user