diff options
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/build.html | 6 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 9 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/views.py | 24 |
3 files changed, 36 insertions, 3 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/build.html b/bitbake/lib/toaster/toastergui/templates/build.html index 38ab2bfd7b..7d13cc89a1 100644 --- a/bitbake/lib/toaster/toastergui/templates/build.html +++ b/bitbake/lib/toaster/toastergui/templates/build.html | |||
| @@ -122,7 +122,11 @@ | |||
| 122 | <td class="warnings_no">{% if build.warnings_no %}<a class="warnings_no warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>{%endif%}</td> | 122 | <td class="warnings_no">{% if build.warnings_no %}<a class="warnings_no warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>{%endif%}</td> |
| 123 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td> | 123 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td> |
| 124 | <td class="log">{{build.cooker_log_path}}</td> | 124 | <td class="log">{{build.cooker_log_path}}</td> |
| 125 | <td class="output">{% if build.outcome == 0 %}{% for t in build.target_set.all %}{% if t.is_image %}<a href="{%url "builddashboard" build.id%}#images">TODO: compute image output fstypes</a>{% endif %}{% endfor %}{% endif %}</td> | 125 | <td class="output"> |
| 126 | {% if build.outcome == build.SUCCEEDED %} | ||
| 127 | <a href="{%url "builddashboard" build.id%}#images">{{fstypes|get_dict_value:build.id}}</a> | ||
| 128 | {% endif %} | ||
| 129 | </td> | ||
| 126 | </tr> | 130 | </tr> |
| 127 | 131 | ||
| 128 | {% endfor %} | 132 | {% endfor %} |
diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py index 76166ca945..aa0ba3909e 100644 --- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py +++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py | |||
| @@ -240,3 +240,12 @@ def format_vpackage_namehelp(name): | |||
| 240 | r += ' title="' + name + ' only has dependency information available.">' | 240 | r += ' title="' + name + ' only has dependency information available.">' |
| 241 | r += '</i>' | 241 | r += '</i>' |
| 242 | return mark_safe(r) | 242 | return mark_safe(r) |
| 243 | |||
| 244 | @register.filter | ||
| 245 | def get_dict_value(dictionary, key): | ||
| 246 | """ return the value of a dictionary key | ||
| 247 | """ | ||
| 248 | try: | ||
| 249 | return dictionary[key] | ||
| 250 | except KeyError: | ||
| 251 | return '' | ||
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 0f92caf56b..d323b37013 100644 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
| @@ -19,13 +19,13 @@ | |||
| 19 | # with this program; if not, write to the Free Software Foundation, Inc., | 19 | # with this program; if not, write to the Free Software Foundation, Inc., |
| 20 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 20 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| 21 | 21 | ||
| 22 | import operator | 22 | import operator,re |
| 23 | 23 | ||
| 24 | from django.db.models import Q, Sum | 24 | from django.db.models import Q, Sum |
| 25 | from django.shortcuts import render, redirect | 25 | from django.shortcuts import render, redirect |
| 26 | from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable | 26 | from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable |
| 27 | from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency | 27 | from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency |
| 28 | from orm.models import Target_Installed_Package, Target_Image_File | 28 | from orm.models import Target_Installed_Package, Target_File, Target_Image_File |
| 29 | from django.views.decorators.cache import cache_control | 29 | from django.views.decorators.cache import cache_control |
| 30 | from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger | 30 | from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger |
| 31 | from django.http import HttpResponseBadRequest | 31 | from django.http import HttpResponseBadRequest |
| @@ -231,6 +231,25 @@ def builds(request): | |||
| 231 | else: | 231 | else: |
| 232 | b.eta = 0 | 232 | b.eta = 0 |
| 233 | 233 | ||
| 234 | # set up list of fstypes for each build | ||
| 235 | fstypes_map = {}; | ||
| 236 | for build in build_info: | ||
| 237 | targets = Target.objects.filter( build_id = build.id ) | ||
| 238 | comma = ""; | ||
| 239 | extensions = ""; | ||
| 240 | for t in targets: | ||
| 241 | if ( not t.is_image ): | ||
| 242 | continue | ||
| 243 | tif = Target_Image_File.objects.filter( target_id = t.id ) | ||
| 244 | for i in tif: | ||
| 245 | s=re.sub('.*tar.bz2', 'tar.bz2', i.file_name) | ||
| 246 | if s == i.file_name: | ||
| 247 | s=re.sub('.*\.', '', i.file_name) | ||
| 248 | if None == re.search(s,extensions): | ||
| 249 | extensions += comma + s | ||
| 250 | comma = ", " | ||
| 251 | fstypes_map[build.id]=extensions | ||
| 252 | |||
| 234 | # send the data to the template | 253 | # send the data to the template |
| 235 | context = { | 254 | context = { |
| 236 | # specific info for | 255 | # specific info for |
| @@ -238,6 +257,7 @@ def builds(request): | |||
| 238 | # TODO: common objects for all table views, adapt as needed | 257 | # TODO: common objects for all table views, adapt as needed |
| 239 | 'objects' : build_info, | 258 | 'objects' : build_info, |
| 240 | 'objectname' : "builds", | 259 | 'objectname' : "builds", |
| 260 | 'fstypes' : fstypes_map, | ||
| 241 | 'search_term' : search_term, | 261 | 'search_term' : search_term, |
| 242 | 'total_count' : queryset_with_search.count(), | 262 | 'total_count' : queryset_with_search.count(), |
| 243 | # Specifies the display of columns for the table, appearance in "Edit columns" box, toggling default show/hide, and specifying filters for columns | 263 | # Specifies the display of columns for the table, appearance in "Edit columns" box, toggling default show/hide, and specifying filters for columns |
