diff --git a/daemon/dnfdaemon-system.py b/daemon/dnfdaemon-system.py index b9811acbc398123302d1a87e68f28c4fdc33699d..df21a208154d37f0d00ab434424aab75610b163a 100755 --- a/daemon/dnfdaemon-system.py +++ b/daemon/dnfdaemon-system.py @@ -235,7 +235,10 @@ class DnfDaemon(dnfdaemon.server.DnfDaemonBase): :param sender: """ self.working_start(sender, write=False) - value = self.get_packages(pkg_filter, fields) + if fields == ['summary', 'size', 'group']: + value = self.get_packages_ndsg(pkg_filter) + else: + value = self.get_packages(pkg_filter, fields) return self.working_ended(value) @Logger diff --git a/python/dnfdaemon/server/__init__.py b/python/dnfdaemon/server/__init__.py index eb78c2bd6c6131eba1fd94bf4ce0eea05716d707..a9a95bf930f9b37d2912b1a081993e6f1792c868 100644 --- a/python/dnfdaemon/server/__init__.py +++ b/python/dnfdaemon/server/__init__.py @@ -387,6 +387,20 @@ class DnfDaemonBase(dbus.service.Object, DownloadCallback): value = [self._get_po_list(po, attrs) for po in pkgs] return json.dumps(value) + @Logger + def get_packages_ndsg(self, pkg_filter): + """Get packages and attribute values based on a filter. + + :param pkg_filter: pkg pkg_filter string ('installed','updates' etc) + :param attrs: list of attributes to get. + """ + value = [] + if pkg_filter in ['installed', 'available', 'updates', 'obsoletes', + 'recent', 'extras', 'updates_all']: + pkgs = getattr(self.base.packages, pkg_filter) + value = [[self._get_id(po), po.summary, po.size, po.group] for po in pkgs] + return json.dumps(value) + def get_attribute(self, id, attr): """Get package attribute.