aboutsummaryrefslogtreecommitdiffstats
path: root/lib/toaster/toastergui/views.py
diff options
context:
space:
mode:
authorDavid Reyna <David.Reyna@windriver.com>2014-03-29 07:47:43 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-04-05 14:54:49 +0100
commite5b6681432b627eb73bfa766d3154162206f374e (patch)
tree7d52f920c0bbe38f6b505d7299507300dbcd228c /lib/toaster/toastergui/views.py
parente42ee93519000f827be49659b6b5fb7717b3d592 (diff)
downloadbitbake-e5b6681432b627eb73bfa766d3154162206f374e.tar.gz
toaster: link task order to right tasks page
When linking from a task order number to the All Tasks page, automatically display the correct page for that link anchor. [YOCTO #5933] Signed-off-by: David Reyna <David.Reyna@windriver.com> Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Diffstat (limited to 'lib/toaster/toastergui/views.py')
-rw-r--r--lib/toaster/toastergui/views.py36
1 files changed, 30 insertions, 6 deletions
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 05e24ea13..a92a03f50 100644
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -196,7 +196,7 @@ def _get_queryset(model, queryset, filter_string, search_term, ordering_string,
else:
queryset = queryset.order_by(column)
- # insure only distinct records (e.g. from multiple search hits) are returned
+ # insure only distinct records (e.g. from multiple search hits) are returned
return queryset.distinct()
@@ -746,7 +746,7 @@ def _find_task_provider(task):
return trc
return None
-def tasks_common(request, build_id, variant):
+def tasks_common(request, build_id, variant, task_anchor):
# This class is shared between these pages
#
# Column tasks buildtime diskio cpuusage
@@ -766,6 +766,10 @@ def tasks_common(request, build_id, variant):
# 'min':on always, 'def':on by default, else hidden
# '+' default column sort up, '-' default column sort down
+ anchor = request.GET.get('anchor', '')
+ if not anchor:
+ anchor=task_anchor
+
# default ordering depends on variant
if 'buildtime' == variant:
title_variant='Time'
@@ -791,12 +795,29 @@ def tasks_common(request, build_id, variant):
template = 'tasks.html'
retval = _verify_parameters( request.GET, mandatory_parameters )
if retval:
+ if task_anchor:
+ mandatory_parameters['anchor']=task_anchor
return _redirect_parameters( variant, request.GET, mandatory_parameters, build_id = build_id)
(filter_string, search_term, ordering_string) = _search_tuple(request, Task)
queryset_all = Task.objects.filter(build=build_id, order__gt=0)
queryset_with_search = _get_queryset(Task, queryset_all, None , search_term, ordering_string, 'order')
queryset = _get_queryset(Task, queryset_all, filter_string, search_term, ordering_string, 'order')
+ # compute the anchor's page
+ if anchor:
+ request.GET = request.GET.copy()
+ del request.GET['anchor']
+ i=0
+ a=int(anchor)
+ count_per_page=int(request.GET.get('count', 100))
+ for task in queryset.iterator():
+ if a == task.order:
+ new_page= (i / count_per_page ) + 1
+ request.GET.__setitem__('page', new_page)
+ mandatory_parameters['page']=new_page
+ return _redirect_parameters( variant, request.GET, mandatory_parameters, build_id = build_id)
+ i += 1
+
tasks = _build_page_range(Paginator(queryset, request.GET.get('count', 100)),request.GET.get('page', 1))
# define (and modify by variants) the 'tablecols' members
@@ -937,16 +958,19 @@ def tasks_common(request, build_id, variant):
return render(request, template, context)
def tasks(request, build_id):
- return tasks_common(request, build_id, 'tasks')
+ return tasks_common(request, build_id, 'tasks', '')
+
+def tasks_task(request, build_id, task_id):
+ return tasks_common(request, build_id, 'tasks', task_id)
def buildtime(request, build_id):
- return tasks_common(request, build_id, 'buildtime')
+ return tasks_common(request, build_id, 'buildtime', '')
def diskio(request, build_id):
- return tasks_common(request, build_id, 'diskio')
+ return tasks_common(request, build_id, 'diskio', '')
def cpuusage(request, build_id):
- return tasks_common(request, build_id, 'cpuusage')
+ return tasks_common(request, build_id, 'cpuusage', '')
def recipes(request, build_id):