Projet

Général

Profil

0001-nanterre-ignore-invalid-dates-during-free-text-searc.patch

Benjamin Dauvergne, 18 septembre 2020 08:55

Télécharger (3,51 ko)

Voir les différences:

Subject: [PATCH] nanterre: ignore invalid dates during free text search
 (#45320)

 tests/test_nanterre.py    | 13 +++++++++++--
 zoo/zoo_nanterre/utils.py | 25 ++++++++++++++++++-------
 2 files changed, 29 insertions(+), 9 deletions(-)
tests/test_nanterre.py
27 27
    assert rsu[0].id == found[0].id
28 28
    assert found[0].similarity == 1.0
29 29

  
30
    found = list(search.search_query(rsu[0].content['prenoms'] + ' ' +
31
                                     rsu[0].content['nom_de_naissance']))
30
    found = list(search.search_query(rsu[0].content['prenoms'] + ' ' + rsu[0].content['nom_de_naissance']))
32 31
    assert rsu[0].id == found[0].id
33 32
    assert found[0].similarity == 1.0
34 33

  
......
49 48
    found = list(search.search_identifier('%d' % rsu[0].id))
50 49
    assert found[0].id == rsu[0].id
51 50

  
51
    # check that a valid date restrain the scope of the search
52
    found = list(search.search_email(rsu[0].content['email']).search_birthdate('01/01/1919'))
53
    assert len(found) == 0
54

  
55
    # check that an invalid date is ignored
56
    found = list(search.search_email(rsu[0].content['email']).search_birthdate('99/01/1919'))
57
    assert len(found) == 1
58
    found = list(search.search_email(rsu[0].content['email']).search_birthdate('99/1919'))
59
    assert len(found) == 1
60

  
52 61

  
53 62
def test_person_search_api(app, db, rsu):
54 63
    url = reverse('rsu-api-search')
zoo/zoo_nanterre/utils.py
300 300
                    year += 2000
301 301
            birthdate['year'] = str(year)
302 302
            if birthdate['day']:
303
                before = after = datetime.date(
304
                        int(birthdate['year']), int(birthdate['month']), int(birthdate['day']))
303
                try:
304
                    before = after = datetime.date(
305
                        int(birthdate['year']),
306
                        int(birthdate['month']),
307
                        int(birthdate['day']))
308
                except ValueError:
309
                    return self
305 310
            elif birthdate['month']:
306
                after = datetime.date(int(birthdate['year']), int(birthdate['month']), 1)
307
                before = ((after + datetime.timedelta(days=31)).replace(day=1)
308
                          - datetime.timedelta(days=1))
311
                try:
312
                    after = datetime.date(int(birthdate['year']), int(birthdate['month']), 1)
313
                    before = ((after + datetime.timedelta(days=31)).replace(day=1)
314
                              - datetime.timedelta(days=1))
315
                except ValueError:
316
                    return self
309 317
            else:
310
                after = datetime.date(int(birthdate['year']), 1, 1)
311
                before = datetime.date(int(birthdate['year']), 12, 31)
318
                try:
319
                    after = datetime.date(int(birthdate['year']), 1, 1)
320
                    before = datetime.date(int(birthdate['year']), 12, 31)
321
                except ValueError:
322
                    return self
312 323

  
313 324
        first_january_same_year = None
314 325
        if before == after and window_days is not None:
315
-