diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2013-12-13 17:14:34 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-01-10 15:20:26 +0000 |
commit | 5482409a370552809de75150350defef04ac7144 (patch) | |
tree | e0af09995517b66cc01be62508fef763907e051d /bitbake/lib/toaster/toastergui/views.py | |
parent | 2251426ae420640c082ec0d0109b9be435075411 (diff) | |
download | poky-5482409a370552809de75150350defef04ac7144.tar.gz |
bitbake: toaster: Build dashboard implementation
This patch adds the build dashboard page implementation,
which is the landing page for the Toaster GUI.
Also adds correct links from the main build page
to the various parts of the dashboard.
[YOCTO #4258]
(Bitbake rev: bf7fbf5c0ee39564d813f82e194242f9d4f73c47)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/views.py')
-rw-r--r-- | bitbake/lib/toaster/toastergui/views.py | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 663e03dfd2..7d4d710f83 100644 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
@@ -59,10 +59,10 @@ def _verify_parameters(g, mandatory_parameters): | |||
59 | return miss | 59 | return miss |
60 | return None | 60 | return None |
61 | 61 | ||
62 | def _redirect_parameters(view, g, mandatory_parameters): | 62 | def _redirect_parameters(view, g, mandatory_parameters, *args, **kwargs): |
63 | import urllib | 63 | import urllib |
64 | from django.core.urlresolvers import reverse | 64 | from django.core.urlresolvers import reverse |
65 | url = reverse(view) | 65 | url = reverse(view, kwargs=kwargs) |
66 | params = {} | 66 | params = {} |
67 | for i in g: | 67 | for i in g: |
68 | params[i] = g[i] | 68 | params[i] = g[i] |
@@ -70,7 +70,7 @@ def _redirect_parameters(view, g, mandatory_parameters): | |||
70 | if not i in params: | 70 | if not i in params: |
71 | params[i] = mandatory_parameters[i] | 71 | params[i] = mandatory_parameters[i] |
72 | 72 | ||
73 | return redirect(url + "?%s" % urllib.urlencode(params)) | 73 | return redirect(url + "?%s" % urllib.urlencode(params), *args, **kwargs) |
74 | 74 | ||
75 | 75 | ||
76 | # shows the "all builds" page | 76 | # shows the "all builds" page |
@@ -82,7 +82,7 @@ def builds(request): | |||
82 | mandatory_parameters = { 'count': 10, 'page' : 1}; | 82 | mandatory_parameters = { 'count': 10, 'page' : 1}; |
83 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 83 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
84 | if retval: | 84 | if retval: |
85 | return _redirect_parameters( builds, request.GET, mandatory_parameters) | 85 | return _redirect_parameters( 'all-builds', request.GET, mandatory_parameters) |
86 | 86 | ||
87 | # retrieve the objects that will be displayed in the table | 87 | # retrieve the objects that will be displayed in the table |
88 | build_info = _build_page_range(Paginator(Build.objects.exclude(outcome = Build.IN_PROGRESS).order_by("-id"), request.GET.get('count', 10)),request.GET.get('page', 1)) | 88 | build_info = _build_page_range(Paginator(Build.objects.exclude(outcome = Build.IN_PROGRESS).order_by("-id"), request.GET.get('count', 10)),request.GET.get('page', 1)) |
@@ -125,6 +125,7 @@ def builddashboard(request, build_id): | |||
125 | return redirect(builds) | 125 | return redirect(builds) |
126 | context = { | 126 | context = { |
127 | 'build' : Build.objects.filter(pk=build_id)[0], | 127 | 'build' : Build.objects.filter(pk=build_id)[0], |
128 | 'recipecount' : Recipe.objects.filter(layer_version__id__in=Layer_Version.objects.filter(build=build_id)).count() | ||
128 | } | 129 | } |
129 | return render(request, template, context) | 130 | return render(request, template, context) |
130 | 131 | ||
@@ -186,8 +187,12 @@ def _find_task_provider(task): | |||
186 | 187 | ||
187 | def tasks(request, build_id): | 188 | def tasks(request, build_id): |
188 | template = 'task.html' | 189 | template = 'task.html' |
190 | mandatory_parameters = { 'count': 100, 'page' : 1}; | ||
191 | retval = _verify_parameters( request.GET, mandatory_parameters ) | ||
192 | if retval: | ||
193 | return _redirect_parameters( 'tasks', request.GET, mandatory_parameters, build_id = build_id) | ||
189 | 194 | ||
190 | tasks = _build_page_range(Paginator(Task.objects.filter(build=build_id), 100),request.GET.get('page', 1)) | 195 | tasks = _build_page_range(Paginator(Task.objects.filter(build=build_id, order__gt=0), request.GET.get('count', 100)),request.GET.get('page', 1)) |
191 | 196 | ||
192 | for t in tasks: | 197 | for t in tasks: |
193 | if t.outcome == Task.OUTCOME_COVERED: | 198 | if t.outcome == Task.OUTCOME_COVERED: |
@@ -199,16 +204,25 @@ def tasks(request, build_id): | |||
199 | 204 | ||
200 | def recipes(request, build_id): | 205 | def recipes(request, build_id): |
201 | template = 'recipe.html' | 206 | template = 'recipe.html' |
207 | mandatory_parameters = { 'count': 100, 'page' : 1}; | ||
208 | retval = _verify_parameters( request.GET, mandatory_parameters ) | ||
209 | if retval: | ||
210 | return _redirect_parameters( 'recipes', request.GET, mandatory_parameters, build_id = build_id) | ||
202 | 211 | ||
203 | recipes = _build_page_range(Paginator(Recipe.objects.filter(build_recipe=build_id), 100),request.GET.get('page', 1)) | 212 | recipes = _build_page_range(Paginator(Recipe.objects.filter(layer_version__id__in=Layer_Version.objects.filter(build=build_id)), request.GET.get('count', 100)),request.GET.get('page', 1)) |
204 | 213 | ||
205 | context = {'build': Build.objects.filter(pk=build_id)[0], 'objects': recipes} | 214 | context = {'build': Build.objects.filter(pk=build_id)[0], 'objects': recipes, } |
206 | 215 | ||
207 | return render(request, template, context) | 216 | return render(request, template, context) |
208 | 217 | ||
209 | 218 | ||
210 | def configuration(request, build_id): | 219 | def configuration(request, build_id): |
211 | template = 'configuration.html' | 220 | template = 'configuration.html' |
221 | mandatory_parameters = { 'count': 100, 'page' : 1}; | ||
222 | retval = _verify_parameters( request.GET, mandatory_parameters ) | ||
223 | if retval: | ||
224 | return _redirect_parameters( 'configuration', request.GET, mandatory_parameters, build_id = build_id) | ||
225 | |||
212 | variables = _build_page_range(Paginator(Variable.objects.filter(build=build_id), 50), request.GET.get('page', 1)) | 226 | variables = _build_page_range(Paginator(Variable.objects.filter(build=build_id), 50), request.GET.get('page', 1)) |
213 | context = {'build': Build.objects.filter(pk=build_id)[0], 'objects' : variables} | 227 | context = {'build': Build.objects.filter(pk=build_id)[0], 'objects' : variables} |
214 | return render(request, template, context) | 228 | return render(request, template, context) |
@@ -245,7 +259,13 @@ def diskio(request, build_id): | |||
245 | 259 | ||
246 | def bpackage(request, build_id): | 260 | def bpackage(request, build_id): |
247 | template = 'bpackage.html' | 261 | template = 'bpackage.html' |
248 | packages = Package.objects.filter(build = build_id) | 262 | mandatory_parameters = { 'count': 100, 'page' : 1}; |
263 | retval = _verify_parameters( request.GET, mandatory_parameters ) | ||
264 | if retval: | ||
265 | return _redirect_parameters( 'packages', request.GET, mandatory_parameters, build_id = build_id) | ||
266 | |||
267 | packages = _build_page_range(Paginator(Package.objects.filter(build = build_id), request.GET.get('count', 100)),request.GET.get('page', 1)) | ||
268 | |||
249 | context = {'build': Build.objects.filter(pk=build_id)[0], 'objects' : packages} | 269 | context = {'build': Build.objects.filter(pk=build_id)[0], 'objects' : packages} |
250 | return render(request, template, context) | 270 | return render(request, template, context) |
251 | 271 | ||