diff --git a/app/api/serializer.py b/app/api/serializer.py index 37e08606..2b9e2657 100644 --- a/app/api/serializer.py +++ b/app/api/serializer.py @@ -129,7 +129,7 @@ def get_alias_infos_with_pagination(user, page_id=0, query=None) -> [AliasInfo]: def get_alias_infos_with_pagination_v3( - user, page_id=0, query=None, sort=None, alias_filter=None + user, page_id=0, query=None, sort=None, alias_filter=None, mailbox_id=None ) -> [AliasInfo]: # subquery on alias annotated with nb_reply, nb_blocked, nb_forward, max_created_at, latest_email_log_created_at alias_activity_subquery = ( @@ -214,29 +214,24 @@ def get_alias_infos_with_pagination_v3( ) if query: - q = ( - # to find mailbox whose email match the query - q.join(AliasMailbox, Alias.id == AliasMailbox.alias_id, isouter=True) - .join( - Mailbox, - or_( - Mailbox.id == Alias.mailbox_id, - Mailbox.id == AliasMailbox.mailbox_id, - ), - ) - .filter( - or_( - Alias.email.ilike(f"%{query}%"), - Alias.note.ilike(f"%{query}%"), - # can't use match() here as it uses to_tsquery that expected a tsquery input - # Alias.ts_vector.match(query), - Alias.ts_vector.op("@@")(func.plainto_tsquery("english", query)), - Alias.name.ilike(f"%{query}%"), - Mailbox.email.ilike(f"%{query}%"), - ) + q = q.filter( + or_( + Alias.email.ilike(f"%{query}%"), + Alias.note.ilike(f"%{query}%"), + # can't use match() here as it uses to_tsquery that expected a tsquery input + # Alias.ts_vector.match(query), + Alias.ts_vector.op("@@")(func.plainto_tsquery("english", query)), + Alias.name.ilike(f"%{query}%"), ) ) + if mailbox_id: + q = q.join( + AliasMailbox, Alias.id == AliasMailbox.alias_id, isouter=True + ).filter( + or_(Alias.mailbox_id == mailbox_id, AliasMailbox.mailbox_id == mailbox_id) + ) + if alias_filter == "enabled": q = q.filter(Alias.enabled) elif alias_filter == "disabled": diff --git a/app/dashboard/templates/dashboard/index.html b/app/dashboard/templates/dashboard/index.html index de8510ea..b2b54f66 100644 --- a/app/dashboard/templates/dashboard/index.html +++ b/app/dashboard/templates/dashboard/index.html @@ -177,6 +177,12 @@ + {% for mailbox in current_user.mailboxes() %} + + {% endfor %}