wcs: ignore case/spaces in tracking code (#34156)

This commit is contained in:
Frédéric Péters 2019-06-19 09:57:46 +02:00
parent 23f70f720b
commit 33b4197ea5
2 changed files with 10 additions and 0 deletions

View File

@ -42,6 +42,7 @@ class TrackingCodeView(View):
@classmethod
def search(self, code, wcs_site=None):
code = code.strip().upper()
if wcs_site:
wcs_sites = [get_wcs_services().get(wcs_site)]
else:
@ -86,6 +87,7 @@ class TrackingCodeView(View):
def tracking_code_search(request):
hits = []
query = request.GET.get('q') or ''
query = query.strip().upper()
if re.match(r'^[BCDFGHJKLMNPQRSTVWXZ]{8}$', query):
url = TrackingCodeView.search(query)
if url:

View File

@ -636,6 +636,13 @@ def test_tracking_code_cell(app):
assert resp.status_code == 302
assert resp.location == 'http://127.0.0.2:8999/code/CNPHNTFB/load'
# space/case
resp = app.get('/')
resp.form['code'] = ' cnphntfb'
resp = resp.form.submit()
assert resp.status_code == 302
assert resp.location == 'http://127.0.0.2:8999/code/CNPHNTFB/load'
# lock cell to a single site
cell.wcs_site = 'default'
cell.save()
@ -711,6 +718,7 @@ def test_tracking_code_search(app):
assert len(app.get('/api/search/tracking-code/?q=BBCCDDFF').json.get('data')) == 0
assert len(app.get('/api/search/tracking-code/?q=CNPHNTFB').json.get('data')) == 1
assert len(app.get('/api/search/tracking-code/?q=BBCCDDFFG').json.get('data')) == 0
assert len(app.get('/api/search/tracking-code/?q= cnphntfb').json.get('data')) == 1
@wcsctl_present
def test_wcs_search_engines(app):