[nanny] Update checker client/server
- From: Roberto Majadas <telemaco src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nanny] Update checker client/server
- Date: Sun, 23 Jan 2011 18:07:59 +0000 (UTC)
commit 5abedba86d9af1f2ddd1a3be388542a8e44769db
Author: Roberto Majadas <roberto majadas openshine com>
Date: Sun Jan 16 19:28:23 2011 +0100
Update checker client/server
client/gnome/admin/src/ConfigureProxyDialog.py | 34 +++++++++++++++++++----
daemon/src/FilterManager.py | 32 ++++++++++++++++++++++
2 files changed, 60 insertions(+), 6 deletions(-)
---
diff --git a/client/gnome/admin/src/ConfigureProxyDialog.py b/client/gnome/admin/src/ConfigureProxyDialog.py
index 3a0e8ea..db4f2ad 100644
--- a/client/gnome/admin/src/ConfigureProxyDialog.py
+++ b/client/gnome/admin/src/ConfigureProxyDialog.py
@@ -182,18 +182,19 @@ class ConfigureProxyDialog (gtk.Dialog):
def __update_packaged_blacklist_model(self):
try:
list_store = self.packaged_blacklist_treeview.get_model()
-
server_list = self.dbus_client.list_pkg_filters ()
-
-
+
for filter_id in server_list:
included = False
for row in list_store:
if row[0] == filter_id :
metadata = self.dbus_client.get_pkg_filter_metadata(filter_id)
filter_name = _("Unknown Blacklist Name") if not metadata.has_key("name") else metadata["name"]
- filter_description = "" if not metadata.has_key("provider") else metadata["provider"]
+ filter_description = "" if not metadata.has_key("provider") else metadata["provider"]
+ filter_description = filter_description + " " + _("(version : %s)" % metadata["release-number"])
if metadata.has_key("status") and metadata.has_key("progress") :
+ if metadata["status"] == 1:
+ filter_description = "<b>" + _("There is an update available") + "</b>"
if metadata["status"] == 2:
filter_description = _("Downloading information, please wait")
elif metadata["status"] == 3:
@@ -201,7 +202,7 @@ class ConfigureProxyDialog (gtk.Dialog):
elif metadata["status"] == 4:
filter_description = _("Updating blacklist (%s%%)" % metadata["progress"])
- row[1] = "<b>%s</b>\n %s" % (filter_name, filter_description)
+ row[1] = "<b>%s</b>\n <small>%s</small>" % (filter_name, filter_description)
included = True
break
@@ -232,6 +233,20 @@ class ConfigureProxyDialog (gtk.Dialog):
iter = list_store.iter_next(iter)
+ selection = self.packaged_blacklist_treeview.get_selection()
+ if selection.count_selected_rows () > 0:
+ self.del_bl_button.set_sensitive(True)
+ model, iter = selection.get_selected()
+ pkg_id = model.get_value (iter, 0)
+ metadata = self.dbus_client.get_pkg_filter_metadata(pkg_id)
+ if metadata.has_key("status") and metadata["status"] == 1 :
+ self.update_bl_button.set_sensitive(True)
+ else:
+ self.update_bl_button.set_sensitive(False)
+ else:
+ self.del_bl_button.set_sensitive(False)
+ self.update_bl_button.set_sensitive(False)
+
gobject.timeout_add(2000, self.__update_packaged_blacklist_model)
return False
except:
@@ -505,7 +520,13 @@ class ConfigureProxyDialog (gtk.Dialog):
model, iter = selection.get_selected()
if iter:
- self.selected_packaged_filter_id = model.get_value (iter, 0)
+ pkg_id = model.get_value (iter, 0)
+ self.selected_packaged_filter_id = pkg_id
+ metadata = self.dbus_client.get_pkg_filter_metadata(pkg_id)
+ if metadata.has_key("status") and metadata["status"] == 1 :
+ self.update_bl_button.set_sensitive(True)
+ else:
+ self.update_bl_button.set_sensitive(False)
categories = self.dbus_client.get_pkg_filter_user_categories (self.selected_packaged_filter_id, self.__selected_user_id)
if len (categories) > 0:
@@ -521,6 +542,7 @@ class ConfigureProxyDialog (gtk.Dialog):
self.selected_packaged_filter_id = None
else:
self.del_bl_button.set_sensitive(False)
+ self.update_bl_button.set_sensitive(False)
self.selected_packaged_filter_id = None
def __on_packaged_blacklist_categories_toggled (self, cell, path, data=None):
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index fcd5cae..927b9cb 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -26,6 +26,7 @@
import gobject
import gio
import os
+import time
import hashlib
import sys
import copy
@@ -116,6 +117,7 @@ class FilterManager (gobject.GObject) :
self.custom_filters_db = self.__get_custom_filters_db()
self.__start_packaged_filters()
+ gobject.timeout_add(5000, self.__update_pkg_checker_timeout)
def stop(self):
print "Stop Filter Manager"
@@ -367,6 +369,36 @@ class FilterManager (gobject.GObject) :
def update_pkg_filter(self, pkg_id, new_db):
pass
+ def __update_pkg_checker_timeout(self):
+ reactor.callInThread(self.__update_pkg_checker, self)
+ gobject.timeout_add(5*60*1000, self.__update_pkg_checker_timeout)
+ return False
+
+ def __update_pkg_checker(self, fm):
+ import urllib2
+
+ for pkg_id in fm.pkg_filters_conf.keys() :
+ try:
+ if fm.pkg_filters_conf[pkg_id]["status"] == PKG_STATUS_READY :
+ url = fm.pkg_filters_conf[pkg_id]["update_url"]
+ pkg_info = json.load(urllib2.urlopen(url))
+
+ orig_t = fm.pkg_filters_conf[pkg_id]["pkg_info"]["metadata"]["orig-timestamp"]
+ release_n = fm.pkg_filters_conf[pkg_id]["pkg_info"]["metadata"]["release-number"]
+
+ on_server_orig_t = pkg_info["metadata"]["orig-timestamp"]
+ on_server_release_n = pkg_info["metadata"]["release-number"]
+
+ if orig_t == on_server_orig_t and release_n == on_server_release_n :
+ print "Nothing to update (pkg : %s)!" % pkg_id
+ else:
+ print "Seems there is and update (pkg: %s)" % pkg_id
+ fm.pkg_filters_conf[pkg_id]["status"] = PKG_STATUS_READY_UPDATE_AVAILABLE
+ threads.blockingCallFromThread(reactor,
+ fm._save_pkg_filters_conf)
+ except:
+ print "I can't update pkgs info (no network conn??? )"
+
def list_pkg_filter(self):
ret = []
for x in self.pkg_filters_conf.keys():
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]