mirror of https://github.com/searxng/searxng.git
[fix] get_bang_url: handle ambiguous !!bangs without error
An ambiguous bang like `!!d` raises an exception in function get_bang_url(). A bang is only unique when the bang_definition from get_bang_definition_and_ac() is a string / for a ambiguous bang the returned bang_definition is a dictionary. Reported-by: user prg at #searxng:matrix.org on 2022/01/11 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
f4004133b6
commit
6d7e86eece
|
@ -77,11 +77,14 @@ def get_bang_url(search_query, external_bangs_db=None):
|
||||||
:param search_query: This is a search_query object which contains preferences and the submitted queries.
|
:param search_query: This is a search_query object which contains preferences and the submitted queries.
|
||||||
:return: None if the bang was invalid, else a string of the redirect url.
|
:return: None if the bang was invalid, else a string of the redirect url.
|
||||||
"""
|
"""
|
||||||
|
ret_val = None
|
||||||
|
|
||||||
if external_bangs_db is None:
|
if external_bangs_db is None:
|
||||||
external_bangs_db = EXTERNAL_BANGS
|
external_bangs_db = EXTERNAL_BANGS
|
||||||
|
|
||||||
if search_query.external_bang:
|
if search_query.external_bang:
|
||||||
bang_definition, _ = get_bang_definition_and_ac(external_bangs_db, search_query.external_bang)
|
bang_definition, _ = get_bang_definition_and_ac(external_bangs_db, search_query.external_bang)
|
||||||
return resolve_bang_definition(bang_definition, search_query.query)[0] if bang_definition else None
|
if bang_definition and isinstance(bang_definition, str):
|
||||||
|
ret_val = resolve_bang_definition(bang_definition, search_query.query)[0]
|
||||||
|
|
||||||
return None
|
return ret_val
|
||||||
|
|
Loading…
Reference in New Issue