From ac90cbb9143d0138aec4e642416deff255fafb69 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Tue, 18 Dec 2018 22:10:19 +0100
Subject: [PATCH] Add first version fuzzy search for referee selections

---
 submissions/forms.py                            |  5 ++++-
 .../migrations/0051_auto_20181218_2201.py       | 17 +++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 submissions/migrations/0051_auto_20181218_2201.py

diff --git a/submissions/forms.py b/submissions/forms.py
index f65ec848a..6055a553a 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 000000000..ba283d598
--- /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(),
+    ]
-- 
GitLab