[nanny] Add installing msg to client
- From: Roberto Majadas <telemaco src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nanny] Add installing msg to client
- Date: Sun, 23 Jan 2011 18:07:49 +0000 (UTC)
commit 64085a36d1a02202a72e0333ce9b4701c69477f4
Author: Roberto Majadas <roberto majadas openshine com>
Date: Sun Jan 16 17:53:57 2011 +0100
Add installing msg to client
client/gnome/admin/src/ConfigureProxyDialog.py | 11 +++-
daemon/src/FilterManager.py | 78 ++++++++++++++++-------
2 files changed, 63 insertions(+), 26 deletions(-)
---
diff --git a/client/gnome/admin/src/ConfigureProxyDialog.py b/client/gnome/admin/src/ConfigureProxyDialog.py
index 102e53a..3a0e8ea 100644
--- a/client/gnome/admin/src/ConfigureProxyDialog.py
+++ b/client/gnome/admin/src/ConfigureProxyDialog.py
@@ -192,8 +192,15 @@ class ConfigureProxyDialog (gtk.Dialog):
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"]
+ if metadata.has_key("status") and metadata.has_key("progress") :
+ if metadata["status"] == 2:
+ filter_description = _("Downloading information, please wait")
+ elif metadata["status"] == 3:
+ filter_description = _("Installing blacklist (%s%%)" % metadata["progress"])
+ elif metadata["status"] == 4:
+ filter_description = _("Updating blacklist (%s%%)" % metadata["progress"])
+
row[1] = "<b>%s</b>\n %s" % (filter_name, filter_description)
included = True
break
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index 9efdbcf..b436c29 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -80,13 +80,15 @@ NANNY_DAEMON_BLACKLISTS_DIR = os.path.join(NANNY_DAEMON_DATA, "blacklists")
NANNY_DAEMON_BLACKLISTS_SYS_DIR = os.path.join(NANNY_DAEMON_DATA, "sysblacklists")
NANNY_DAEMON_BLACKLISTS_CONF_FILE = os.path.join(NANNY_DAEMON_DATA, "bl_conf.db")
-PKG_STATUS_ERROR_NOT_EXISTS = -2
-PKG_STATUS_ERROR_INSTALLING_NEW_BL = -1
-PKG_STATUS_ERROR = 0
-PKG_STATUS_INSTALLING = 1
-PKG_STATUS_UPDATING = 2
-PKG_STATUS_READY = 3
-PKG_STATUS_READY_UPDATE_AVAILABLE = 4
+PKG_STATUS_ERROR_NOT_EXISTS = -3
+PKG_STATUS_ERROR_INSTALLING_NEW_BL = -2
+PKG_STATUS_ERROR = -1
+PKG_STATUS_READY = 0
+PKG_STATUS_READY_UPDATE_AVAILABLE = 1
+PKG_STATUS_DOWNLOADING = 2
+PKG_STATUS_INSTALLING = 3
+PKG_STATUS_UPDATING = 4
+
def mkdir_path(path):
try:
@@ -214,7 +216,6 @@ class FilterManager (gobject.GObject) :
self.db_pools[pkg_id] = adbapi.ConnectionPool('sqlite3', db,
check_same_thread=False,
cp_openfun=on_db_connect)
- gobject.timeout_add(1, self._refresh_db_categories_cache, pkg_id)
print "Added to db pool -> %s" % pkg_id
def _save_pkg_filters_conf(self):
@@ -229,17 +230,24 @@ class FilterManager (gobject.GObject) :
return []
def _refresh_db_categories_cache(self, pkg_id):
- if self.db_pools.has_key(pkg_id) :
- sql = "SELECT id,name FROM category"
- query = self.db_pools[pkg_id].runQuery(sql)
- block_d = BlockingDeferred(query)
- qr = block_d.blockOn()
-
- self.db_cat_cache[pkg_id] = {}
- for id, name in qr:
- self.db_cat_cache[pkg_id][int(id)] = name
-
- print "Categories cache from %s refresh" % pkg_id
+ try:
+ if self.db_pools.has_key(pkg_id) and pkg_id not in self.db_cat_cache.keys() :
+ print "REFRESHING CATEGORIES (%s)" % pkg_id
+ sql = "SELECT id,name FROM category"
+ query = self.db_pools[pkg_id].runQuery(sql)
+ block_d = BlockingDeferred(query)
+ qr = block_d.blockOn()
+
+ self.db_cat_cache[pkg_id] = {}
+ for id, name in qr:
+ self.db_cat_cache[pkg_id][int(id)] = name
+
+ print "REFRESHED CATEGORIES (%s)" % pkg_id
+ except:
+ print "Something goes wrong updating categories"
+ return False
+
+ return True
def add_pkg_filter(self, url):
pkg_id = hashlib.md5(url).hexdigest()
@@ -248,7 +256,8 @@ class FilterManager (gobject.GObject) :
self.pkg_filters_conf[pkg_id] = {"users_info" : {},
"pkg_info": {},
- "status" : PKG_STATUS_INSTALLING,
+ "status" : PKG_STATUS_DOWNLOADING,
+ "progress" : 0,
"update_url" : url
}
@@ -281,21 +290,34 @@ class FilterManager (gobject.GObject) :
df = open(dest_file, "wb")
df.write(urllib2.urlopen(base_url).read())
df.close()
+
+ df_uc_c = bz2.BZ2File(dest_file, "r")
+ lines_counted = 0
+ for line in df_uc_c.readlines():
+ lines_counted += 1
+ df_uc_c.close()
df_uc = bz2.BZ2File(dest_file, "r")
db_conn = sqlite3.connect(dest_db)
sql=''
+
+ fm.pkg_filters_conf[pkg_id]["status"]=PKG_STATUS_INSTALLING
+ fm.pkg_filters_conf[pkg_id]["progress"] = 0
+
+ lines_inserted = 0
for line in df_uc.readlines():
+ lines_inserted += 1
sql = sql + line
- if sqlite3.complete_statement(sql) :
+ if sqlite3.complete_statement(sql) :
c = db_conn.cursor()
try:
c.execute(sql)
except:
pass
sql = ''
+ fm.pkg_filters_conf[pkg_id]["progress"] = (lines_inserted * 100) / lines_counted
db_conn.commit()
db_conn.close()
@@ -310,8 +332,7 @@ class FilterManager (gobject.GObject) :
print "Added to db pool -> %s" % pkg_id
threads.blockingCallFromThread(reactor,
fm._save_pkg_filters_conf)
- threads.blockingCallFromThread(reactor,
- fm._refresh_db_categories_cache, pkg_id)
+
except:
if os.path.exists(dest_file):
os.unlink(dest_file)
@@ -321,6 +342,7 @@ class FilterManager (gobject.GObject) :
fm.pkg_filters_conf[pkg_id]["pkg_info"]={}
fm.pkg_filters_conf[pkg_id]["status"]=PKG_STATUS_ERROR_INSTALLING_NEW_BL
+ fm.pkg_filters_conf[pkg_id]["progress"] = 0
threads.blockingCallFromThread(reactor,
fm._save_pkg_filters_conf)
@@ -360,6 +382,7 @@ class FilterManager (gobject.GObject) :
metadata = copy.deepcopy(self.pkg_filters_conf[pkg_id]["pkg_info"]["metadata"])
metadata["status"] = self.pkg_filters_conf[pkg_id]["status"]
+ metadata["progress"] = self.pkg_filters_conf[pkg_id]["progress"]
return metadata
except:
@@ -367,7 +390,8 @@ class FilterManager (gobject.GObject) :
return {"name" : "Unknown",
"provider" : "Unknown",
- "status" : self.pkg_filters_conf[pkg_id]["status"]}
+ "status" : self.pkg_filters_conf[pkg_id]["status"],
+ "progress" : self.pkg_filters_conf[pkg_id]["progress"]}
def set_pkg_filter_metadata(self, pkg_id, name, description):
#Deprecated !!
@@ -479,6 +503,9 @@ class FilterManager (gobject.GObject) :
b_path = ''
for db in self.pkg_filters_conf.keys():
+ self._refresh_db_categories_cache(db)
+
+ for db in self.pkg_filters_conf.keys():
if self.pkg_filters_conf[db]["users_info"].has_key(uid) :
if len(self.pkg_filters_conf[db]["users_info"][uid]) > 0 :
@@ -579,6 +606,9 @@ class FilterManager (gobject.GObject) :
b_path = b_path + x[4]
for db in self.pkg_filters_conf.keys():
+ self._refresh_db_categories_cache(db)
+
+ for db in self.pkg_filters_conf.keys():
if self.pkg_filters_conf[db]["users_info"].has_key(uid) :
if len(self.pkg_filters_conf[db]["users_info"][uid]) > 0 :
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]