summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/widgets.py
diff options
context:
space:
mode:
authorElliot Smith <elliot.smith@intel.com>2016-01-15 13:00:53 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-15 16:30:00 +0000
commitf8d383d87f0b9d4a4c9ae7b1a6c8ceebf90ef9b0 (patch)
treecda7dc3eb23a5b6a97241c965bbd9b0dcddc02eb /bitbake/lib/toaster/toastergui/widgets.py
parentb929889cdd4a36846f9569d89fabd9987e94b39e (diff)
downloadpoky-f8d383d87f0b9d4a4c9ae7b1a6c8ceebf90ef9b0.tar.gz
bitbake: toastergui: implement date range filters for builds
Implement the completed_on and started_on filtering for builds. Also separate the name of a filter ("filter" in the querystring) from its value ("filter_value" in the querystring). This enables filtering to be defined in the querystring more intuitively, and also makes it easier to add other types of filter (e.g. by day). [YOCTO #8738] (Bitbake rev: d47c32e88c2d4a423f4d94d49759e557f425a539) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/widgets.py')
-rw-r--r--bitbake/lib/toaster/toastergui/widgets.py32
1 files changed, 16 insertions, 16 deletions
diff --git a/bitbake/lib/toaster/toastergui/widgets.py b/bitbake/lib/toaster/toastergui/widgets.py
index 8790340db9..47de30d631 100644
--- a/bitbake/lib/toaster/toastergui/widgets.py
+++ b/bitbake/lib/toaster/toastergui/widgets.py
@@ -183,13 +183,13 @@ class ToasterTable(TemplateView):
183 183
184 return template.render(context) 184 return template.render(context)
185 185
186 def apply_filter(self, filters, **kwargs): 186 def apply_filter(self, filters, filter_value, **kwargs):
187 """ 187 """
188 Apply a filter submitted in the querystring to the ToasterTable 188 Apply a filter submitted in the querystring to the ToasterTable
189 189
190 filters: (str) in the format: 190 filters: (str) in the format:
191 '<filter name>:<action name>!<action params>' 191 '<filter name>:<action name>'
192 where <action params> is optional 192 filter_value: (str) parameters to pass to the named filter
193 193
194 <filter name> and <action name> are used to look up the correct filter 194 <filter name> and <action name> are used to look up the correct filter
195 in the ToasterTable's filter map; the <action params> are set on 195 in the ToasterTable's filter map; the <action params> are set on
@@ -199,15 +199,8 @@ class ToasterTable(TemplateView):
199 self.setup_filters(**kwargs) 199 self.setup_filters(**kwargs)
200 200
201 try: 201 try:
202 filter_name, action_name_and_params = filters.split(':') 202 filter_name, action_name = filters.split(':')
203 203 action_params = urllib.unquote_plus(filter_value)
204 action_name = None
205 action_params = None
206 if re.search('!', action_name_and_params):
207 action_name, action_params = action_name_and_params.split('!')
208 action_params = urllib.unquote_plus(action_params)
209 else:
210 action_name = action_name_and_params
211 except ValueError: 204 except ValueError:
212 return 205 return
213 206
@@ -217,7 +210,7 @@ class ToasterTable(TemplateView):
217 try: 210 try:
218 table_filter = self.filter_map.get_filter(filter_name) 211 table_filter = self.filter_map.get_filter(filter_name)
219 action = table_filter.get_action(action_name) 212 action = table_filter.get_action(action_name)
220 action.set_params(action_params) 213 action.set_filter_params(action_params)
221 self.queryset = action.filter(self.queryset) 214 self.queryset = action.filter(self.queryset)
222 except KeyError: 215 except KeyError:
223 # pass it to the user - programming error here 216 # pass it to the user - programming error here
@@ -247,13 +240,20 @@ class ToasterTable(TemplateView):
247 240
248 241
249 def get_data(self, request, **kwargs): 242 def get_data(self, request, **kwargs):
250 """Returns the data for the page requested with the specified 243 """
251 parameters applied""" 244 Returns the data for the page requested with the specified
245 parameters applied
246
247 filters: filter and action name, e.g. "outcome:build_succeeded"
248 filter_value: value to pass to the named filter+action, e.g. "on"
249 (for a toggle filter) or "2015-12-11,2015-12-12" (for a date range filter)
250 """
252 251
253 page_num = request.GET.get("page", 1) 252 page_num = request.GET.get("page", 1)
254 limit = request.GET.get("limit", 10) 253 limit = request.GET.get("limit", 10)
255 search = request.GET.get("search", None) 254 search = request.GET.get("search", None)
256 filters = request.GET.get("filter", None) 255 filters = request.GET.get("filter", None)
256 filter_value = request.GET.get("filter_value", "on")
257 orderby = request.GET.get("orderby", None) 257 orderby = request.GET.get("orderby", None)
258 nocache = request.GET.get("nocache", None) 258 nocache = request.GET.get("nocache", None)
259 259
@@ -285,7 +285,7 @@ class ToasterTable(TemplateView):
285 if search: 285 if search:
286 self.apply_search(search) 286 self.apply_search(search)
287 if filters: 287 if filters:
288 self.apply_filter(filters, **kwargs) 288 self.apply_filter(filters, filter_value, **kwargs)
289 if orderby: 289 if orderby:
290 self.apply_orderby(orderby) 290 self.apply_orderby(orderby)
291 291