Projet

Général

Profil

0001-settings-decrease-A2_DUPLICATES_THRESHOLD-to-0.2-504.patch

Benjamin Dauvergne, 25 janvier 2021 12:05

Télécharger (2,67 ko)

Voir les différences:

Subject: [PATCH] settings: decrease A2_DUPLICATES_THRESHOLD to 0.2 (#50445)

The original limit of 0.7 is kept for the find-duplicates web-service API.
 src/authentic2/custom_user/managers.py | 6 +++---
 tests/test_custom_user.py              | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)
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
-