diff options
author | Dave Lerner <dave.lerner@windriver.com> | 2016-04-06 14:44:41 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-04-06 23:10:31 +0100 |
commit | 18cb7fe426d7ac726cf40002a507a57f6cf3ffed (patch) | |
tree | 8c09b9fd846b6bec2cb646e2bd1f412a23985e30 | |
parent | 7a309d964a86f3474eaab7df6d438ed797f935c0 (diff) | |
download | poky-18cb7fe426d7ac726cf40002a507a57f6cf3ffed.tar.gz |
bitbake: toaster: add rev dep column to image detail pages
Add a column to the custom image pages that shows the reverse
dependencies in a format matching the dependencies column:
- either blank or a button showing the count of reverse dependencies,
- when the button is clicked, a popover appears showing the list
of reverse dependencies, with each package's size, and the total
size of all of the reverse dependencies.
The implementation adds a packages table method to retreive the reverse
dependency total size, and adds a separate 'popover' html template. Both
of these changes follow the pattern for the dependencies column.
[YOCTO #9163]
(Bitbake rev: 2f978dccaa1ec82c7ad350bdc1cd9500000984eb)
Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 7 | ||||
-rw-r--r-- | bitbake/lib/toaster/toastergui/tables.py | 6 | ||||
-rw-r--r-- | bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html | 14 |
3 files changed, 27 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 2a01184a73..68c3072991 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py | |||
@@ -822,6 +822,13 @@ class Package_DependencyManager(models.Manager): | |||
822 | """ | 822 | """ |
823 | return self.all().aggregate(Sum('depends_on__size')) | 823 | return self.all().aggregate(Sum('depends_on__size')) |
824 | 824 | ||
825 | def get_total_revdeps_size(self): | ||
826 | """ Returns the total file size of all the packages that depend on | ||
827 | this package. | ||
828 | """ | ||
829 | return self.all().aggregate(Sum('package_id__size')) | ||
830 | |||
831 | |||
825 | def all_depends(self): | 832 | def all_depends(self): |
826 | """ Returns just the depends packages and not any other dep_type """ | 833 | """ Returns just the depends packages and not any other dep_type """ |
827 | return self.filter(Q(dep_type=Package_Dependency.TYPE_RDEPENDS) | | 834 | return self.filter(Q(dep_type=Package_Dependency.TYPE_RDEPENDS) | |
diff --git a/bitbake/lib/toaster/toastergui/tables.py b/bitbake/lib/toaster/toastergui/tables.py index 385d65895d..2cc2f4eb7b 100644 --- a/bitbake/lib/toaster/toastergui/tables.py +++ b/bitbake/lib/toaster/toastergui/tables.py | |||
@@ -725,6 +725,12 @@ class PackagesTable(ToasterTable): | |||
725 | static_data_template='\ | 725 | static_data_template='\ |
726 | {% include "snippets/pkg_dependencies_popover.html" %}') | 726 | {% include "snippets/pkg_dependencies_popover.html" %}') |
727 | 727 | ||
728 | self.add_column(title="Reverse dependencies", | ||
729 | static_data_name="reverse_dependencies", | ||
730 | static_data_template='\ | ||
731 | {% include "snippets/pkg_revdependencies_popover.html" %}', | ||
732 | hidden=True) | ||
733 | |||
728 | self.add_column(title="Recipe", | 734 | self.add_column(title="Recipe", |
729 | field_name="recipe__name", | 735 | field_name="recipe__name", |
730 | orderable=True, | 736 | orderable=True, |
diff --git a/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html new file mode 100644 index 0000000000..453a9d0137 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html | |||
@@ -0,0 +1,14 @@ | |||
1 | {# Popover that displays the reverse dependencies and sizes of a package 'data' used in the Packages table #} | ||
2 | {% with data.package_dependencies_target.all_depends.count as dep_count %} | ||
3 | {% load projecttags %} | ||
4 | {% if dep_count %} | ||
5 | <a data-content="<ul class='unstyled'> | ||
6 | {% for dep in data.package_dependencies_target.all_depends|dictsort:'package.name' %} | ||
7 | <li>{{dep.package.name}} {% if dep.package.size > 0 %}({{dep.package.size|filtered_filesizeformat}}){% endif %}</li> | ||
8 | {% endfor %} | ||
9 | </ul>" title="" class="btn" data-original-title=" | ||
10 | <strong>{{data.name}}</strong> reverse dependencies - <strong>{{data.package_dependencies_target.get_total_revdeps_size.package_id__size__sum|filtered_filesizeformat}}</strong>"> | ||
11 | {{dep_count}} | ||
12 | </a> | ||
13 | {% endif %} | ||
14 | {% endwith %} | ||