diff options
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/build.html | 6 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 27 |
2 files changed, 32 insertions, 1 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/build.html b/bitbake/lib/toaster/toastergui/templates/build.html index 3c9256cbd0..f1fa70d068 100644 --- a/bitbake/lib/toaster/toastergui/templates/build.html +++ b/bitbake/lib/toaster/toastergui/templates/build.html | |||
| @@ -92,7 +92,11 @@ | |||
| 92 | <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> | 92 | <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> |
| 93 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td> | 93 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td> |
| 94 | <td class="log">{{build.cooker_log_path}}</td> | 94 | <td class="log">{{build.cooker_log_path}}</td> |
| 95 | <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> | 95 | <td class="output"> |
| 96 | {% if build.outcome == 0 %} | ||
| 97 | {{build|get_image_extensions}} | ||
| 98 | {% endif %} | ||
| 99 | </td> | ||
| 96 | </tr> | 100 | </tr> |
| 97 | 101 | ||
| 98 | {% endfor %} | 102 | {% endfor %} |
diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py index 857680b350..60d5dd0b7c 100644 --- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py +++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py | |||
| @@ -24,6 +24,8 @@ import re | |||
| 24 | from django import template | 24 | from django import template |
| 25 | from django.utils import timezone | 25 | from django.utils import timezone |
| 26 | from django.template.defaultfilters import filesizeformat | 26 | from django.template.defaultfilters import filesizeformat |
| 27 | from orm.models import Target_Installed_Package, Target_Image_File | ||
| 28 | from orm.models import Build, Target, Task, Layer, Layer_Version | ||
| 27 | 29 | ||
| 28 | register = template.Library() | 30 | register = template.Library() |
| 29 | 31 | ||
| @@ -188,3 +190,28 @@ def string_slice(strvar,slicevar): | |||
| 188 | else: | 190 | else: |
| 189 | return strvar[int(first):int(last)] | 191 | return strvar[int(first):int(last)] |
| 190 | 192 | ||
| 193 | @register.filter | ||
| 194 | def get_image_extensions( build ): | ||
| 195 | """ | ||
| 196 | This is a simple filter that returns a list (string) | ||
| 197 | of extensions of the build-targets-image files. Note | ||
| 198 | that each build can have multiple targets and each | ||
| 199 | target can yield more than one image file | ||
| 200 | """ | ||
| 201 | targets = Target.objects.filter( build_id = build.id ); | ||
| 202 | comma = ""; | ||
| 203 | extensions = ""; | ||
| 204 | for t in targets: | ||
| 205 | if ( not t.is_image ): | ||
| 206 | continue; | ||
| 207 | tif = Target_Image_File.objects.filter( target_id = t.id ); | ||
| 208 | for i in tif: | ||
| 209 | try: | ||
| 210 | ndx = i.file_name.index( "." ); | ||
| 211 | except ValueError: | ||
| 212 | ndx = 0; | ||
| 213 | s = i.file_name[ ndx + 1 : ]; | ||
| 214 | extensions += comma + s; | ||
| 215 | comma = ", "; | ||
| 216 | return( extensions ); | ||
| 217 | |||
