Handle malformed browse parameters
Examples: * https://art.wikidata.link/browse?P1433%27[0]=Q28861951 * https://art.wikidata.link/browse?P1433=Q28861951%27[0]
This commit is contained in:
parent
117459bb8f
commit
8c715fe148
28
app.py
28
app.py
|
@ -25,6 +25,7 @@ import json
|
||||||
import os
|
import os
|
||||||
import locale
|
import locale
|
||||||
import socket
|
import socket
|
||||||
|
import re
|
||||||
|
|
||||||
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
|
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
|
||||||
user_agent = 'Mozilla/5.0 (X11; Linux i586; rv:32.0) Gecko/20160101 Firefox/32.0'
|
user_agent = 'Mozilla/5.0 (X11; Linux i586; rv:32.0) Gecko/20160101 Firefox/32.0'
|
||||||
|
@ -77,6 +78,9 @@ isa_list = [
|
||||||
'Q46686' # reredos
|
'Q46686' # reredos
|
||||||
]
|
]
|
||||||
|
|
||||||
|
re_qid = re.compile(r'^Q(\d+)')
|
||||||
|
re_pid = re.compile(r'^P(\d+)')
|
||||||
|
|
||||||
@app.teardown_appcontext
|
@app.teardown_appcontext
|
||||||
def shutdown_session(exception=None):
|
def shutdown_session(exception=None):
|
||||||
database.session.remove()
|
database.session.remove()
|
||||||
|
@ -524,10 +528,14 @@ def get_labels_db(keys):
|
||||||
labels = {}
|
labels = {}
|
||||||
missing = set()
|
missing = set()
|
||||||
for qid in keys:
|
for qid in keys:
|
||||||
item = Item.query.get(qid[1:])
|
m = re_qid.match(qid)
|
||||||
|
if m:
|
||||||
|
item_id = int(m.group(1))
|
||||||
|
item = Item.query.get(item_id)
|
||||||
if item:
|
if item:
|
||||||
labels[qid] = item.label
|
labels[qid] = item.label
|
||||||
else:
|
continue
|
||||||
|
|
||||||
missing.add(qid)
|
missing.add(qid)
|
||||||
|
|
||||||
page_size = 50
|
page_size = 50
|
||||||
|
@ -708,8 +716,20 @@ def get_facets(params):
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_artwork_params():
|
def get_artwork_params():
|
||||||
return [(pid, qid) for pid, qid in request.args.items()
|
params = []
|
||||||
if pid.startswith('P') and qid.startswith('Q')]
|
for pid, qid in request.args.items():
|
||||||
|
m = re_pid.match(pid)
|
||||||
|
|
||||||
|
if not m:
|
||||||
|
continue
|
||||||
|
pid = m.group(0)
|
||||||
|
|
||||||
|
m = re_qid.match(qid)
|
||||||
|
if not m:
|
||||||
|
continue
|
||||||
|
qid = m.group(0)
|
||||||
|
params.append((pid, qid))
|
||||||
|
return params
|
||||||
|
|
||||||
def filter_artwork(params):
|
def filter_artwork(params):
|
||||||
return wdqs.run_from_template_with_cache('query/find_more.sparql',
|
return wdqs.run_from_template_with_cache('query/find_more.sparql',
|
||||||
|
|
Loading…
Reference in a new issue