41 |
41 |
return super(TrackingCodeView, self).dispatch(*args, **kwargs)
|
42 |
42 |
|
43 |
43 |
@classmethod
|
44 |
|
def search(self, code, wcs_site=None):
|
|
44 |
def search(self, code, ip=None, wcs_site=None):
|
45 |
45 |
code = code.strip().upper()
|
46 |
46 |
if wcs_site:
|
47 |
47 |
wcs_sites = [get_wcs_services().get(wcs_site)]
|
... | ... | |
49 |
49 |
wcs_sites = get_wcs_services().values()
|
50 |
50 |
|
51 |
51 |
for wcs_site in wcs_sites:
|
52 |
|
response = requests.get('/api/code/' + urlquote(code),
|
53 |
|
remote_service=wcs_site, log_errors=False)
|
|
52 |
url = '/api/code/' + urlquote(code)
|
|
53 |
if ip:
|
|
54 |
url += '?ip=' + urlquote(ip)
|
|
55 |
response = requests.get(url, remote_service=wcs_site, log_errors=False)
|
54 |
56 |
if response.status_code == 200 and response.json().get('err') == 0:
|
55 |
57 |
return response.json().get('load_url')
|
56 |
58 |
|
... | ... | |
65 |
67 |
return HttpResponseBadRequest('Missing code')
|
66 |
68 |
code = request.POST['code']
|
67 |
69 |
|
68 |
|
url = self.search(code, wcs_site=cell.wcs_site)
|
|
70 |
url = self.search(code, ip=request.META.get('REMOTE_ADDR'), wcs_site=cell.wcs_site)
|
69 |
71 |
if url:
|
70 |
72 |
return HttpResponseRedirect(url)
|
71 |
73 |
|
... | ... | |
89 |
91 |
query = request.GET.get('q') or ''
|
90 |
92 |
query = query.strip().upper()
|
91 |
93 |
if re.match(r'^[BCDFGHJKLMNPQRSTVWXZ]{8}$', query):
|
92 |
|
url = TrackingCodeView.search(query)
|
|
94 |
url = TrackingCodeView.search(query, ip=request.META.get('REMOTE_ADDR'))
|
93 |
95 |
if url:
|
94 |
96 |
hits.append({
|
95 |
97 |
'text': _('Use tracking code %s') % query,
|
96 |
|
-
|