ne pas chercher par identifiant RSU si l'identifiant n'est pas un entier (fixes #15515)

This commit is contained in:
Benjamin Dauvergne 2017-03-20 16:16:32 +01:00
parent bb8acd45d0
commit 9aa872e2f1
3 changed files with 20 additions and 2 deletions

View File

@ -51,6 +51,9 @@ def rsu(rsu_schema):
individu['statut_legal'] = ('majeur' if age_in_years_and_months(date_de_naissance) >= (18,
0)
else 'mineur')
individu['cles_de_federation'] = {
'technocarte': 'ABCD-%d' % i,
}
individu['email'] = fake.email()
entities.append(
Entity(created=tr, schema=rsu_schema, content=individu))

View File

@ -31,6 +31,14 @@ def test_person_search(db, rsu):
assert found[0].id == rsu[0].id
assert len(found) == 1
found = list(search.search_identifier(rsu[0].content['cles_de_federation']['technocarte']))
assert found[0].id == rsu[0].id
assert len(found) == 1
found = list(search.search_identifier('%d' % rsu[0].id))
assert found[0].id == rsu[0].id
assert len(found) == 1
@pytest.mark.django_db(True)
def test_create_individu(app, rsu_schema):

View File

@ -175,9 +175,16 @@ class PersonSearch(object):
else:
q = Q(**{'content__cles_de_federation__%s' % key: identifier})
else:
q = Q(id=identifier)
filters = []
try:
individu_id = int(identifier)
except ValueError:
pass
else:
filters.append(Q(id=individu_id))
for key, name in self.applications():
q |= Q(**{'content__cles_de_federation__%s' % key: identifier})
filters.append(Q(**{'content__cles_de_federation__%s' % key: identifier}))
q = reduce(Q.__or__, filters)
self.key_filters.append(q)
return self