management: use SQL global view for formdata lookup on identifier (#23517)

This commit is contained in:
Frédéric Péters 2018-05-01 09:56:03 +02:00
parent a2fab65a14
commit 4b9fb90018
2 changed files with 14 additions and 0 deletions

View File

@ -2664,6 +2664,15 @@ def test_formdata_lookup(pub):
assert resp.location == 'http://example.net/backoffice/management/form-title/%s/' % formdata.id
if pub.is_using_postgresql():
# check looking up on a custom display_id
formdata.id_display = '999999'
formdata.store()
assert formdata.get_display_id() == '999999'
resp = app.get('/backoffice/management/').follow()
resp.form['query'] = formdata.get_display_id()
resp = resp.form.submit()
assert resp.location == 'http://example.net/backoffice/management/form-title/%s/' % formdata.id
# try it from the global listing
resp = app.get('/backoffice/management/listing')
assert 'id="lookup-box"' in resp.body

View File

@ -521,6 +521,11 @@ class ManagementDirectory(Directory):
def lookup(self):
query = get_request().form.get('query', '').strip()
if get_publisher().is_using_postgresql():
from wcs import sql
formdatas = sql.AnyFormData.select([Equal('id_display', query)])
if formdatas:
return redirect(formdatas[0].get_url(backoffice=True))
if any((x for x in FormDef.select(lightweight=True) if x.enable_tracking_codes)):
try:
tracking_code = get_publisher().tracking_code_class.get(query)