diff options
5 files changed, 46 insertions, 7 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html index 79f135cd92..6925aecb4d 100644 --- a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html +++ b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html | |||
| @@ -97,8 +97,8 @@ | |||
| 97 | # decision on index search algorithm | 97 | # decision on index search algorithm |
| 98 | <a href="http://layers.openembedded.org" target="_blank"> | 98 | <a href="http://layers.openembedded.org" target="_blank"> |
| 99 | <i class="icon-share get-info"></i> | 99 | <i class="icon-share get-info"></i> |
| 100 | {% endcomment %} | ||
| 101 | </a> | 100 | </a> |
| 101 | {% endcomment %} | ||
| 102 | {% endif %} | 102 | {% endif %} |
| 103 | </dd> | 103 | </dd> |
| 104 | 104 | ||
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html index 71043ec1ac..c76774ac9c 100644 --- a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html +++ b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html | |||
| @@ -23,12 +23,19 @@ | |||
| 23 | </thead> | 23 | </thead> |
| 24 | <tbody> | 24 | <tbody> |
| 25 | {% for runtime_dep in runtime_deps %} | 25 | {% for runtime_dep in runtime_deps %} |
| 26 | <tr> | 26 | <tr {{runtime_dep.size|format_vpackage_rowclass}} > |
| 27 | {% if runtime_dep.size != -1 %} | ||
| 27 | <td> | 28 | <td> |
| 28 | <a href="{% url 'package_included_detail' build.id target.id runtime_dep.depends_on_id %}"> | 29 | <a href="{% url 'package_included_detail' build.id target.id runtime_dep.depends_on_id %}"> |
| 29 | {{runtime_dep.name}} | 30 | {{runtime_dep.name}} |
| 30 | </a> | 31 | </a> |
| 31 | </td> | 32 | </td> |
| 33 | {% else %} | ||
| 34 | <td> | ||
| 35 | {{runtime_dep.name|format_vpackage_namehelp}} | ||
| 36 | </td> | ||
| 37 | {% endif %} | ||
| 38 | |||
| 32 | <td>{{runtime_dep.version}}</td> | 39 | <td>{{runtime_dep.version}}</td> |
| 33 | <td>{{runtime_dep.size|filtered_filesizeformat}}</td> | 40 | <td>{{runtime_dep.size|filtered_filesizeformat}}</td> |
| 34 | </tr> | 41 | </tr> |
| @@ -58,12 +65,18 @@ | |||
| 58 | <tbody> | 65 | <tbody> |
| 59 | {% for other_dep in other_deps %} | 66 | {% for other_dep in other_deps %} |
| 60 | {% if other_dep.installed %} | 67 | {% if other_dep.installed %} |
| 61 | <tr> | 68 | <tr {{other_dep.size|format_vpackage_rowclass}}> |
| 69 | {% if other_dep.size != -1 %} | ||
| 62 | <td> | 70 | <td> |
| 63 | <a href="{% url 'package_included_detail' build.id target.id other_dep.depends_on_id %}"> | 71 | <a href="{% url 'package_included_detail' build.id target.id other_dep.depends_on_id %}"> |
| 64 | {{other_dep.name}} | 72 | {{other_dep.name}} |
| 65 | </a> | 73 | </a> |
| 66 | </td> | 74 | </td> |
| 75 | {% else %} | ||
| 76 | <td> | ||
| 77 | {{other_dep.name|format_vpackage_namehelp}} | ||
| 78 | </td> | ||
| 79 | {% endif %} | ||
| 67 | <td>{{other_dep.version}}</td> | 80 | <td>{{other_dep.version}}</td> |
| 68 | <td>{{other_dep.size|filtered_filesizeformat}}</td> | 81 | <td>{{other_dep.size|filtered_filesizeformat}}</td> |
| 69 | <td> | 82 | <td> |
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html index 0eb39d3f4f..8653ae0fe2 100644 --- a/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html +++ b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html | |||
| @@ -28,12 +28,19 @@ | |||
| 28 | </thead> | 28 | </thead> |
| 29 | <tbody> | 29 | <tbody> |
| 30 | {% for reverse_dep in reverse_deps|dictsort:"name" %} | 30 | {% for reverse_dep in reverse_deps|dictsort:"name" %} |
| 31 | <tr> | 31 | <tr {{reverse_dep.size|format_vpackage_rowclass}} > |
| 32 | {% if reverse_dep.size != -1 %} | ||
| 32 | <td> | 33 | <td> |
| 33 | <a href="{% url 'package_included_detail' build.id target.id reverse_dep.dependent_id %}"> | 34 | <a href="{% url 'package_included_detail' build.id target.id reverse_dep.dependent_id %}"> |
| 34 | {{reverse_dep.name}} | 35 | {{reverse_dep.name}} |
| 35 | </a> | 36 | </a> |
| 36 | </td> | 37 | </td> |
| 38 | {% else %} | ||
| 39 | <td> | ||
| 40 | {{reverse_dep.name|format_vpackage_namehelp}} | ||
| 41 | </td> | ||
| 42 | {% endif %} | ||
| 43 | |||
| 37 | <td>{{reverse_dep.version}}</td> | 44 | <td>{{reverse_dep.version}}</td> |
| 38 | <td>{{reverse_dep.size|filtered_filesizeformat}}</td> | 45 | <td>{{reverse_dep.size|filtered_filesizeformat}}</td> |
| 39 | </tr> | 46 | </tr> |
diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py index 12c2468fa1..34c3c21d20 100644 --- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py +++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py | |||
| @@ -110,8 +110,14 @@ def format_none_and_zero(value): | |||
| 110 | 110 | ||
| 111 | @register.filter | 111 | @register.filter |
| 112 | def filtered_filesizeformat(value): | 112 | def filtered_filesizeformat(value): |
| 113 | """Change output from fileformatsize to suppress trailing '.0' and change 'bytes' to 'B' | ||
| 114 | """ | 113 | """ |
| 114 | If the value is -1 return an empty string. Otherwise, | ||
| 115 | change output from fileformatsize to suppress trailing '.0' | ||
| 116 | and change 'bytes' to 'B'. | ||
| 117 | """ | ||
| 118 | if value == -1: | ||
| 119 | return '' | ||
| 120 | |||
| 115 | return filesizeformat(value).replace("bytes", "B").replace(".0", "") | 121 | return filesizeformat(value).replace("bytes", "B").replace(".0", "") |
| 116 | 122 | ||
| 117 | @register.filter | 123 | @register.filter |
| @@ -228,4 +234,17 @@ def filter_sizeovertotal(package_object, total_size): | |||
| 228 | 234 | ||
| 229 | return '{:.1%}'.format(float(size)/float(total_size)) | 235 | return '{:.1%}'.format(float(size)/float(total_size)) |
| 230 | 236 | ||
| 237 | from django.utils.safestring import mark_safe | ||
| 238 | @register.filter | ||
| 239 | def format_vpackage_rowclass(size): | ||
| 240 | if size == -1: | ||
| 241 | return mark_safe('class="muted"') | ||
| 242 | return '' | ||
| 231 | 243 | ||
| 244 | @register.filter | ||
| 245 | def format_vpackage_namehelp(name): | ||
| 246 | r = name + ' ' | ||
| 247 | r += '<i class="icon-question-sign get-help hover-help"' | ||
| 248 | r += ' title = "' + name + ' only has dependency information available.">' | ||
| 249 | r += '</i>' | ||
| 250 | return mark_safe(r) | ||
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 92814cef15..d1234fe804 100644 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
| @@ -425,7 +425,7 @@ def target(request, build_id, target_id): | |||
| 425 | (filter_string, search_term, ordering_string) = _search_tuple(request, Package) | 425 | (filter_string, search_term, ordering_string) = _search_tuple(request, Package) |
| 426 | 426 | ||
| 427 | # FUTURE: get rid of nested sub-queries replacing with ManyToMany field | 427 | # FUTURE: get rid of nested sub-queries replacing with ManyToMany field |
| 428 | queryset = Package.objects.filter(id__in=Target_Installed_Package.objects.filter(target_id=target_id).values('package_id')) | 428 | queryset = Package.objects.filter(size__gte=0, id__in=Target_Installed_Package.objects.filter(target_id=target_id).values('package_id')) |
| 429 | packages_sum = queryset.aggregate(Sum('installed_size')) | 429 | packages_sum = queryset.aggregate(Sum('installed_size')) |
| 430 | queryset = _get_queryset(Package, queryset, filter_string, search_term, ordering_string) | 430 | queryset = _get_queryset(Package, queryset, filter_string, search_term, ordering_string) |
| 431 | packages = _build_page_range(Paginator(queryset, request.GET.get('count', 25)),request.GET.get('page', 1)) | 431 | packages = _build_page_range(Paginator(queryset, request.GET.get('count', 25)),request.GET.get('page', 1)) |
