nanterre: ajoute un filtre par niveau de score sur les doublons (#19981)
This commit is contained in:
parent
baf29b2b60
commit
32df9a9dfd
|
@ -52,6 +52,17 @@ def test_list_doublons(nanterre_classic_family, app):
|
|||
first_data = response.json['data'][0]
|
||||
second_data = response.json['data'][1]
|
||||
|
||||
url = reverse('rsu-api-doublons') + '?score_min=90&limit=100'
|
||||
response = app.get(url)
|
||||
assert response.json['err'] == 0
|
||||
assert 'more' not in response.json
|
||||
assert 'cookie' not in response.json
|
||||
assert len(response.json['data']) == 23 # Duplicate.objects.filter(score__gte=Decimal('0.9')).count()
|
||||
for doublon in response.json['data']:
|
||||
assert int(doublon['score']) >= 90
|
||||
assert response.json['score_min'] == '90'
|
||||
assert 'score_max' not in response.json
|
||||
|
||||
doublon_url = reverse('rsu-api-doublon', kwargs={'doublon_id': '%s %s' % (d.first_id,
|
||||
d.second_id)})
|
||||
response = app.get(doublon_url)
|
||||
|
|
|
@ -24,6 +24,7 @@ import time
|
|||
import traceback
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import datetime
|
||||
from decimal import Decimal, InvalidOperation
|
||||
|
||||
from django.conf import settings
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
@ -1890,6 +1891,21 @@ class DoublonsView(DoublonMixin, APIView):
|
|||
elif dedup:
|
||||
qs = qs.filter(state=models.Duplicate.STATE_DEDUP)
|
||||
|
||||
if 'score_min' in request.GET:
|
||||
try:
|
||||
score_min = Decimal(request.GET['score_min'])
|
||||
except InvalidOperation:
|
||||
pass
|
||||
else:
|
||||
qs = qs.filter(score__gte=score_min/100)
|
||||
if 'score_max' in request.GET:
|
||||
try:
|
||||
score_max = Decimal(request.GET['score_max'])
|
||||
except InvalidOperation:
|
||||
pass
|
||||
else:
|
||||
qs = qs.filter(score__lte=score_max/100)
|
||||
|
||||
# recherche ciblée
|
||||
if 'id' in request.GET:
|
||||
try:
|
||||
|
@ -1916,14 +1932,25 @@ class DoublonsView(DoublonMixin, APIView):
|
|||
'err': 0,
|
||||
'data': data[:limit],
|
||||
}
|
||||
|
||||
params = {'limit': limit}
|
||||
if 'score_min' in request.GET:
|
||||
params['score_min'] = request.GET['score_min']
|
||||
if 'score_max' in request.GET:
|
||||
params['score_max'] = request.GET['score_max']
|
||||
if false_positive:
|
||||
params['false_positive'] = false_positive
|
||||
if dedup:
|
||||
params['dedup'] = dedup
|
||||
content.update(params)
|
||||
|
||||
if len(data) > limit:
|
||||
since = qs[limit - 1].created.isoformat()
|
||||
max_id = qs[limit - 1].id
|
||||
more_url = request.build_absolute_uri(reverse('rsu-api-doublons'))
|
||||
cookie = '%s_%s' % (since, max_id)
|
||||
more_url += '?' + urlencode({'limit': limit, 'cookie': cookie})
|
||||
content['more'] = more_url
|
||||
content['cookie'] = cookie
|
||||
content['cookie'] = params['cookie'] = cookie
|
||||
content['more'] = request.build_absolute_uri(reverse('rsu-api-doublons')) + '?' + urlencode(params)
|
||||
|
||||
return Response(content)
|
||||
|
||||
doublons = DoublonsView.as_view()
|
||||
|
|
Loading…
Reference in New Issue