diff --git a/combo/apps/wcs/views.py b/combo/apps/wcs/views.py index 9045f90e..685cba4b 100644 --- a/combo/apps/wcs/views.py +++ b/combo/apps/wcs/views.py @@ -19,6 +19,7 @@ import re from django.contrib import messages from django.core.urlresolvers import reverse from django.http import JsonResponse, HttpResponseRedirect, HttpResponseBadRequest +from django.utils.http import urlquote from django.utils.six.moves.urllib import parse as urlparse from django.utils.translation import ugettext_lazy as _ from django.views.decorators.csrf import csrf_exempt @@ -47,7 +48,7 @@ class TrackingCodeView(View): wcs_sites = get_wcs_services().values() for wcs_site in wcs_sites: - response = requests.get('/api/code/' + code, + response = requests.get('/api/code/' + urlquote(code), remote_service=wcs_site, log_errors=False) if response.status_code == 200 and response.json().get('err') == 0: return response.json().get('load_url') diff --git a/tests/test_wcs.py b/tests/test_wcs.py index 0cfe7501..7bdc60c4 100644 --- a/tests/test_wcs.py +++ b/tests/test_wcs.py @@ -622,6 +622,13 @@ def test_tracking_code_cell(app): resp = resp.follow() assert '
'
+ resp = resp.form.submit()
+ assert resp.status_code == 302
+ resp = resp.follow()
+ assert 'The tracking code could not been found. ' in resp.text
+
resp = app.get('/')
resp.form['code'] = 'CNPHNTFB'
resp = resp.form.submit()