diff --git a/submissions/forms.py b/submissions/forms.py index f65ec848a6bd4079ba94c9ca06fe2cd57aae238b..6055a553ad48e67b3caf1b197b16403406443eca 100644 --- a/submissions/forms.py +++ b/submissions/forms.py @@ -7,6 +7,7 @@ import re from django import forms from django.conf import settings +from django.contrib.postgres.search import TrigramSimilarity from django.db import transaction from django.db.models import Q from django.forms.formsets import ORDERING_FIELD_NAME @@ -913,7 +914,9 @@ class RefereeSearchForm(forms.Form): 'placeholder': 'Search for a referee in the SciPost Profiles database'})) def search(self): - return Profile.objects.filter(last_name__icontains=self.cleaned_data['last_name']) + return Profile.objects.annotate( + similarity=TrigramSimilarity('last_name', self.cleaned_data['last_name']), + ).filter(similarity__gt=0.3).order_by('-similarity') class ConsiderRefereeInvitationForm(forms.Form): diff --git a/submissions/migrations/0051_auto_20181218_2201.py b/submissions/migrations/0051_auto_20181218_2201.py new file mode 100644 index 0000000000000000000000000000000000000000..ba283d598ba89b96dd225f5b62ac40832e6a1837 --- /dev/null +++ b/submissions/migrations/0051_auto_20181218_2201.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2018-12-18 21:01 +from __future__ import unicode_literals + +from django.db import migrations +from django.contrib.postgres.operations import TrigramExtension + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0050_merge_20181207_1008'), + ] + + operations = [ + TrigramExtension(), + ]