From 2f978dccaa1ec82c7ad350bdc1cd9500000984eb Mon Sep 17 00:00:00 2001 From: Dave Lerner Date: Wed, 6 Apr 2016 14:44:41 +0100 Subject: 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] Signed-off-by: Dave Lerner Signed-off-by: Elliot Smith Signed-off-by: Richard Purdie --- lib/toaster/orm/models.py | 7 +++++++ lib/toaster/toastergui/tables.py | 6 ++++++ .../templates/snippets/pkg_revdependencies_popover.html | 14 ++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py index 2a01184a7..68c307299 100644 --- a/lib/toaster/orm/models.py +++ b/lib/toaster/orm/models.py @@ -822,6 +822,13 @@ class Package_DependencyManager(models.Manager): """ return self.all().aggregate(Sum('depends_on__size')) + def get_total_revdeps_size(self): + """ Returns the total file size of all the packages that depend on + this package. + """ + return self.all().aggregate(Sum('package_id__size')) + + def all_depends(self): """ Returns just the depends packages and not any other dep_type """ return self.filter(Q(dep_type=Package_Dependency.TYPE_RDEPENDS) | diff --git a/lib/toaster/toastergui/tables.py b/lib/toaster/toastergui/tables.py index 385d65895..2cc2f4eb7 100644 --- a/lib/toaster/toastergui/tables.py +++ b/lib/toaster/toastergui/tables.py @@ -725,6 +725,12 @@ class PackagesTable(ToasterTable): static_data_template='\ {% include "snippets/pkg_dependencies_popover.html" %}') + self.add_column(title="Reverse dependencies", + static_data_name="reverse_dependencies", + static_data_template='\ + {% include "snippets/pkg_revdependencies_popover.html" %}', + hidden=True) + self.add_column(title="Recipe", field_name="recipe__name", orderable=True, diff --git a/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html b/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html new file mode 100644 index 000000000..453a9d013 --- /dev/null +++ b/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html @@ -0,0 +1,14 @@ +{# Popover that displays the reverse dependencies and sizes of a package 'data' used in the Packages table #} +{% with data.package_dependencies_target.all_depends.count as dep_count %} +{% load projecttags %} +{% if dep_count %} + + {{dep_count}} + +{% endif %} +{% endwith %} -- cgit 1.2.3-korg