@@ -13,7 +13,6 @@ class Search(object):
13 self.query = None
13 self.query = None
14 self.engines = []
14 self.engines = []
15 self.categories = []
15 self.categories = []
17 self.paging = False
16 self.paging = False
18 self.pageno = 1
17 self.pageno = 1
19 self.lang = 'all'
18 self.lang = 'all'
@@ -46,25 +45,7 @@ class Search(object):
47 self.pageno = int(pageno_param)
46 self.pageno = int(pageno_param)
49− query_parts = self.query.split()
48+ self.parse_query()
50− if query_parts[0].startswith('!'):
51− prefix = query_parts[0][1:].replace('_', ' ')
52− if prefix in engine_shortcuts\
53− and not engine_shortcuts[prefix] in self.blocked_engines:
54− self.engines.append({'category': 'none',
55− 'name': engine_shortcuts[prefix]})
56− elif prefix in engines\
57− and not prefix in self.blocked_engines:
58− self.engines.append({'category': 'none',
60− elif prefix in categories:
61− self.engines.extend({'category': prefix,
63− for engine in categories[prefix]
64− if not engine in self.blocked_engines)
66− if len(query_engines):
67− self.query = self.query.replace(query_parts[0], '', 1).strip()
69 self.categories = []
50 self.categories = []
@@ -92,3 +73,27 @@ class Search(object):
92 'name': x.name}
73 'name': x.name}
93 for x in categories[categ]
74 for x in categories[categ]
94 if not x.name in self.blocked_engines)
75 if not x.name in self.blocked_engines)
77+ def parse_query(self):
78+ query_parts = self.query.split()
80+ if query_parts[0].startswith('!'):
81+ prefix = query_parts[0][1:].replace('_', ' ')
82+ if prefix in engine_shortcuts\
83+ and not engine_shortcuts[prefix] in self.blocked_engines:
85+ self.engines.append({'category': 'none',
86+ 'name': engine_shortcuts[prefix]})
87+ elif prefix in engines\
88+ and not prefix in self.blocked_engines:
90+ self.engines.append({'category': 'none',
92+ elif prefix in categories:
94+ self.engines.extend({'category': prefix,
96+ for engine in categories[prefix]
97+ if not engine in self.blocked_engines)
99+ self.query = self.query.replace(query_parts[0], '', 1).strip()