0001-settings-decrease-A2_DUPLICATES_THRESHOLD-to-0.2-504.patch
src/authentic2/custom_user/managers.py | ||
---|---|---|
77 | 77 |
if qs.exists(): |
78 | 78 |
return qs |
79 | 79 | |
80 |
qs = self.find_duplicates(fullname=search, limit=None) |
|
80 |
qs = self.find_duplicates(fullname=search, limit=None, threshold=0.2)
|
|
81 | 81 |
extra_user_ids = set() |
82 | 82 |
attribute_values = AttributeValue.objects.filter(search_vector=SearchQuery(search), attribute__searchable=True) |
83 | 83 |
extra_user_ids.update(self.filter(attribute_values__in=attribute_values).values_list('id', flat=True)) |
... | ... | |
92 | 92 |
qs = qs.order_by('dist', 'last_name', 'first_name') |
93 | 93 |
return qs |
94 | 94 | |
95 |
def find_duplicates(self, first_name=None, last_name=None, fullname=None, birthdate=None, limit=5): |
|
95 |
def find_duplicates(self, first_name=None, last_name=None, fullname=None, birthdate=None, limit=5, threshold=None):
|
|
96 | 96 |
with connection.cursor() as cursor: |
97 | 97 |
cursor.execute( |
98 |
"SET pg_trgm.similarity_threshold = %f" % app_settings.A2_DUPLICATES_THRESHOLD
|
|
98 |
"SET pg_trgm.similarity_threshold = %f" % (threshold or app_settings.A2_DUPLICATES_THRESHOLD)
|
|
99 | 99 |
) |
100 | 100 | |
101 | 101 |
if fullname is not None: |
tests/test_custom_user.py | ||
---|---|---|
127 | 127 |
# dist attribute signals queryset from find_duplicates() |
128 | 128 |
assert hasattr(User.objects.free_text_search('darmettein')[0], 'dist') |
129 | 129 | |
130 |
assert User.objects.free_text_search('lea darmettein').count() == 1 |
|
130 |
assert User.objects.free_text_search('lea darmettein').filter(dist__lte=0.3).count() == 1
|
|
131 | 131 |
assert hasattr(User.objects.free_text_search('darmettein')[0], 'dist') |
132 | 132 | |
133 | 133 | |
134 | 134 |
def test_fts_legacy(fts): |
135 |
assert User.objects.free_text_search('rue des peupliers').count() == 2
|
|
135 |
assert User.objects.free_text_search('rue des peupliers').count() == 3
|
|
136 | 136 | |
137 | 137 | |
138 | 138 |
def test_fts_legacy_and_trigram(fts): |
139 |
- |