[sulfur] implement security updates, properly highlight vulnerable updates

This commit is contained in:
Fabio Erculiani
2010-02-10 11:27:45 +01:00
parent 94fec0d094
commit e32bd11ae8
5 changed files with 51 additions and 8 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

+2
View File
@@ -35,5 +35,7 @@ gobject.signal_new("pkg_properties__ugc_tab_clicked", _SulfurSignals,
gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ())
gobject.signal_new("updates_available", _SulfurSignals,
gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (int,))
gobject.signal_new("security_updates_available", _SulfurSignals,
gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (int,))
SulfurSignals = _SulfurSignals()
+2
View File
@@ -50,6 +50,7 @@ class DummyEntropyPackage:
self.set_remove_incomplete = False
self.is_downgrade = False
self.is_group = False
self.security_update = False
class EntropyPackage:
@@ -77,6 +78,7 @@ class EntropyPackage:
self.set_remove_incomplete = False
self.is_downgrade = False
self.is_group = False
self.security_update = False
# might lead to memleaks
self.__cache = {}
+27 -5
View File
@@ -753,7 +753,17 @@ class EntropyPackages:
def _pkg_get_updates_raw(self):
return self._pkg_get_updates(critical_updates = False)
def _pkg_get_updates(self, critical_updates = True, orphans = False):
def _pkg_get_security_updates(self):
return self._pkg_get_updates(critical_updates = False,
security_updates = True)
def _pkg_get_updates(self, critical_updates = True, orphans = False,
security_updates = False):
if not security_updates:
# preload security updates so that .security_update bit is
# properly set, of course, don't fuck remove this :-)
self.get_raw_groups("security_updates")
gp_call = self.get_package_item
cdb_atomMatch = self.Entropy.installed_repository().atomMatch
@@ -769,12 +779,20 @@ class EntropyPackages:
yp.installed_match = installed_match
yp.action = 'u'
yp.color = SulfurConf.color_update
if security_updates:
yp.security_update = True
return yp
try:
updates, remove, fine, spm_fine = \
self.Entropy.calculate_updates(
critical_updates = critical_updates)
if security_updates:
remove = []
fine = []
spm_fine = []
updates = self.Entropy.calculate_security_updates()
else:
updates, remove, fine, spm_fine = \
self.Entropy.calculate_updates(
critical_updates = critical_updates)
except SystemDatabaseError:
# broken client db
return []
@@ -790,7 +808,10 @@ class EntropyPackages:
pkg_updates.append(pkg)
# emit signal about updates available
SulfurSignals.emit("updates_available", len(pkg_updates))
if security_updates:
SulfurSignals.emit("security_updates_available", len(pkg_updates))
else:
SulfurSignals.emit("updates_available", len(pkg_updates))
return pkg_updates
@@ -1110,6 +1131,7 @@ class EntropyPackages:
"loading": self._pkg_get_loading,
"downgrade": self._pkg_get_downgrade,
"glsa_metadata": self._pkg_get_glsa_metadata,
"security_updates": self._pkg_get_security_updates,
"search": self._pkg_get_search,
"all": self._pkg_get_all,
}
+20 -3
View File
@@ -500,6 +500,8 @@ class EntropyPackageView:
# default for installed packages
self.pkg_install_ok = "package-installed-updated.png"
self.pkg_install_updatable = "package-installed-outdated.png"
self.pkg_install_updatable_security = \
"package-installed-outdated-security.png"
self.pkg_install_new = "package-available.png"
self.pkg_remove = "package-remove.png"
self.pkg_purge = "package-purge.png"
@@ -513,6 +515,9 @@ class EntropyPackageView:
self.set_pixbuf_to_image(self.img_pkg_install_ok, self.pkg_install_ok)
self.img_pkg_install_updatable = gtk.Image()
self.set_pixbuf_to_image(self.img_pkg_install_updatable, self.pkg_install_updatable)
self.img_pkg_install_updatable_sec = gtk.Image()
self.set_pixbuf_to_image(self.img_pkg_install_updatable_sec,
self.pkg_install_updatable_security)
self.img_pkg_update = gtk.Image()
self.set_pixbuf_to_image(self.img_pkg_update, self.pkg_update)
self.img_pkg_downgrade = gtk.Image()
@@ -2187,7 +2192,12 @@ class EntropyPackageView:
self.__install_statuses[pkg.matched_atom] = inst_status
if inst_status is 2:
self.set_pixbuf_to_cell(cell, self.pkg_install_updatable)
if pkg.security_update:
self.set_pixbuf_to_cell(cell,
self.pkg_install_updatable_security)
else:
self.set_pixbuf_to_cell(cell,
self.pkg_install_updatable)
else:
self.set_pixbuf_to_cell(cell, self.pkg_install_ok)
@@ -2196,7 +2206,12 @@ class EntropyPackageView:
elif pkg.action == "d":
self.set_pixbuf_to_cell(cell, self.pkg_downgrade)
else:
self.set_pixbuf_to_cell(cell, self.pkg_install_updatable)
if pkg.security_update:
self.set_pixbuf_to_cell(cell,
self.pkg_install_updatable_security)
else:
self.set_pixbuf_to_cell(cell,
self.pkg_install_updatable)
else:
@@ -2232,7 +2247,9 @@ class EntropyPackageView:
syspkg = obj.syspkg
except:
syspkg = False
if syspkg:
if obj.security_update:
cell.set_property(stype, '#FFEBCA')
elif syspkg:
cell.set_property(stype, '#FFECEC')
else:
cell.set_property(stype, None)