take into account mailbox in alias search

This commit is contained in:
Son NK 2020-08-29 19:03:33 +02:00
parent 42d8b017ba
commit a3d919db2e

View file

@ -6,7 +6,7 @@ from sqlalchemy.orm import joinedload
from app.config import PAGE_LIMIT from app.config import PAGE_LIMIT
from app.extensions import db from app.extensions import db
from app.models import Alias, Contact, EmailLog, Mailbox from app.models import Alias, Contact, EmailLog, Mailbox, AliasMailbox
@dataclass @dataclass
@ -239,9 +239,14 @@ def get_alias_infos_with_pagination_v3(
sub.c.nb_blocked, sub.c.nb_blocked,
sub.c.nb_forward, sub.c.nb_forward,
latest_activity, latest_activity,
Mailbox,
) )
.join(Contact, Alias.id == Contact.alias_id, isouter=True) .join(Contact, Alias.id == Contact.alias_id, isouter=True)
.join(EmailLog, Contact.id == EmailLog.contact_id, isouter=True) .join(EmailLog, Contact.id == EmailLog.contact_id, isouter=True)
.join(AliasMailbox, AliasMailbox.alias_id == Alias.id, isouter=True)
.filter(
or_(Mailbox.id == AliasMailbox.mailbox_id, Mailbox.id == Alias.mailbox_id)
)
.filter(Alias.id == sub.c.id) .filter(Alias.id == sub.c.id)
.filter( .filter(
or_( or_(
@ -257,6 +262,7 @@ def get_alias_infos_with_pagination_v3(
Alias.email.ilike(f"%{query}%"), Alias.email.ilike(f"%{query}%"),
Alias.note.ilike(f"%{query}%"), Alias.note.ilike(f"%{query}%"),
Alias.name.ilike(f"%{query}%"), Alias.name.ilike(f"%{query}%"),
Mailbox.email.ilike(f"%{query}%"),
) )
) )
@ -280,7 +286,7 @@ def get_alias_infos_with_pagination_v3(
q = list(q.limit(PAGE_LIMIT).offset(page_id * PAGE_LIMIT)) q = list(q.limit(PAGE_LIMIT).offset(page_id * PAGE_LIMIT))
ret = [] ret = []
for alias, contact, email_log, nb_reply, nb_blocked, nb_forward, _ in q: for alias, contact, email_log, nb_reply, nb_blocked, nb_forward, _, _ in q:
ret.append( ret.append(
AliasInfo( AliasInfo(
alias=alias, alias=alias,