# HG changeset patch # User Thierry Florac # Date 1506694989 -7200 # Node ID a94f92bb4839c46ae651e29e414caa5ac6c1974c # Parent dc1201385a36f1dae1a1be00546cb0e9b6cbecae Handle redirection when search results are made of a single element diff -r dc1201385a36 -r a94f92bb4839 src/pyams_content/shared/common/zmi/search.py --- a/src/pyams_content/shared/common/zmi/search.py Fri Sep 29 14:15:41 2017 +0200 +++ b/src/pyams_content/shared/common/zmi/search.py Fri Sep 29 16:23:09 2017 +0200 @@ -45,7 +45,9 @@ from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter from pyams_utils.list import unique from pyams_utils.registry import get_utility +from pyams_utils.url import absolute_url from pyams_zmi.view import AdminView +from pyramid.decorator import reify from pyramid.response import Response from pyramid.view import view_config from z3c.form import field @@ -59,12 +61,19 @@ # Quick search adapters # -@view_config(name='quick-search.html', context=ISharedTool, request_type=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) +@view_config(name='quick-search.html', context=ISharedTool, request_type=IPyAMSLayer, + permission=VIEW_SYSTEM_PERMISSION, renderer='json', xhr=True) def shared_tool_quick_search_view(request): """Shared tool quick search view""" results = SharedToolQuickSearchResults(request.context, request) - results.update() - return Response(results.render()) + if len(results.values) == 1: + result = results.values[0] + return {'status': 'redirect', + 'location': absolute_url(result, request, 'admin')} + else: + results.update() + return {'status': 'info', + 'content': {'html': results.render()}} @implementer(ISharedToolDashboardTable)