Skip to content

Commit baab85b

Browse files
committed
Make the EmailsField search a bit more intelligent by tokenizing the
input values so that a search for John Doe matches John M. Doe too - Legacy-Id: 8278
1 parent a5e1586 commit baab85b

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

ietf/person/views.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,18 @@
55
from ietf.person.fields import json_emails
66

77
def ajax_search_emails(request):
8-
q = request.GET.get('q', '').strip()
9-
emails = Email.objects.filter(Q(person__alias__name__icontains=q) |
10-
Q(address__icontains=q))
8+
q = [w.strip() for w in request.GET.get('q', '').split() if w.strip()]
9+
if not q:
10+
emails = Email.objects.none()
11+
else:
12+
query = Q()
13+
for t in q:
14+
query &= Q(person__alias__name__icontains=t) | Q(address__icontains=t)
15+
16+
emails = Email.objects.filter(query).exclude(person=None)
17+
1118
if request.GET.get("user") == "1":
1219
emails = emails.exclude(person__user=None) # require an account at the Datatracker
20+
1321
emails = emails.filter(active=True).order_by('person__name').distinct()[:10]
1422
return HttpResponse(json_emails(emails), content_type='application/json')

0 commit comments

Comments
 (0)