From d50600d4a7177f516a6e89d70540d1bfd7a94aee Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sat, 4 May 2013 12:33:47 +0200 Subject: [PATCH] Improved search queries (and case insensitive). fixes #311 --- modoboa/admin/models.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modoboa/admin/models.py b/modoboa/admin/models.py index 37f5c36e8..8690b7ab5 100644 --- a/modoboa/admin/models.py +++ b/modoboa/admin/models.py @@ -264,7 +264,7 @@ class User(AbstractBaseUser, PermissionsMixin): .values_list('object_id', flat=True) q = Q(pk__in=ids) if squery: - q &= Q(username__contains=squery) + q &= Q(username__icontains=squery) | Q(email__icontains=squery) if grpfilter and len(grpfilter): if "SuperAdmins" in grpfilter: q &= Q(is_superuser=True) @@ -284,11 +284,14 @@ class User(AbstractBaseUser, PermissionsMixin): .values_list('object_id', flat=True) q = Q(pk__in=ids) if squery: - if squery.find('@') != -1: + if '@' in squery: local_part, domname = split_mailbox(squery) - q &= Q(address__contains=local_part, domain__name__contains=domname) + if local_part: + q &= Q(address__icontains=local_part) + if domname: + q &= Q(domain__name__icontains=domname) else: - q &= Q(address__contains=squery) + q &= Q(address__icontains=squery) | Q(domain__name__icontains=squery) aliases = Alias.objects.select_related().filter(q) if idtfilter: aliases = filter(lambda a: a.type in idtfilter, aliases)