[enh] cleaner category/engine selection from GET/POST param - closes #289

This commit is contained in:
Adam Tauber 2015-05-12 08:21:39 +02:00
parent e34166168c
commit b6de23f540

View file

@ -382,9 +382,19 @@ class Search(object):
# otherwise, using defined categories to # otherwise, using defined categories to
# calculate which engines should be used # calculate which engines should be used
else: else:
# set used categories # set categories/engines
load_default_categories = True
for pd_name, pd in self.request_data.items(): for pd_name, pd in self.request_data.items():
if pd_name.startswith('category_'): if pd_name == 'categories':
self.categories.extend(categ for categ in pd.split(',') if categ in categories)
elif pd_name == 'engines':
pd_engines = [{'category': engines[engine].categories[0],
'name': engine}
for engine in pd.split(',') if engine in engines]
if pd_engines:
self.engines.extend(pd_engines)
load_default_categories = False
elif pd_name.startswith('category_'):
category = pd_name[9:] category = pd_name[9:]
# if category is not found in list, skip # if category is not found in list, skip
@ -398,6 +408,9 @@ class Search(object):
# remove category from list if property is set to 'off' # remove category from list if property is set to 'off'
self.categories.remove(category) self.categories.remove(category)
if not load_default_categories:
return
# if no category is specified for this search, # if no category is specified for this search,
# using user-defined default-configuration which # using user-defined default-configuration which
# (is stored in cookie) # (is stored in cookie)