[nanny] UpdatePkgFilter exported to dbus



commit 03552aaa3264217e39dd179ecfb24b9bf9a776de
Author: Roberto Majadas <roberto majadas openshine com>
Date:   Mon Feb 1 15:57:47 2010 +0100

    UpdatePkgFilter exported to dbus

 daemon/src/FilterManager.py |   26 +++++++++++++++++++++++---
 daemon/src/NannyDBus.py     |    5 +++++
 2 files changed, 28 insertions(+), 3 deletions(-)
---
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index d076cd5..025f988 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -228,18 +228,38 @@ class FilterManager (gobject.GObject) :
     def __copy_pkg_filter(self, orig, dest):
         try:
             print "Coping %s" % orig
+            if os.path.exists(dest) :
+                print "Making Backup file"
+                gio.File(dest).move(gio.File(dest + ".bak"))
+                
             gio.File(orig).copy(gio.File(dest))
             print "Copied %s in %s" % (orig, dest)
+            
+            if os.path.exists(dest + ".bak") :
+                print "Removing Backup file"
+                os.unlink(dest + ".bak")
             return True
         except:
             print "Copy failed! (%s, %s)" % (orig, dest)
+            if os.path.exists(dest + ".bak") :
+                print "Revert to backup file"
+                gio.File(dest + ".bak").move(gio.File(dest))
             return False
 
-    def remove_pkg_filter(self):
+    def remove_pkg_filter(self, pkg_id):
         pass
 
-    def update_pkg_filter(self):
-        pass
+    def update_pkg_filter(self, pkg_id, new_db):
+        for id, ro in self.list_pkg_filter() :
+            if id == pkg_id and ro == False:
+                d = threads.deferToThread(self.__copy_pkg_filter, new_db, pkg_id)
+                block_d = BlockingDeferred(d)
+                qr = block_d.blockOn()
+                if qr == True :
+                    return True
+                else:
+                    return False
+        return False
 
     def list_pkg_filter(self):
         ret = []
diff --git a/daemon/src/NannyDBus.py b/daemon/src/NannyDBus.py
index 8623dc9..3c2c52a 100644
--- a/daemon/src/NannyDBus.py
+++ b/daemon/src/NannyDBus.py
@@ -135,6 +135,11 @@ class NannyDBus(dbus.service.Object):
                          in_signature='sss', out_signature='b')
     def AddPkgFilter(self, name, description, path):
         return self.quarterback.filter_manager.add_pkg_filter(name, description, path)
+
+    @dbus.service.method("org.gnome.Nanny.WebDatabase",
+                         in_signature='ss', out_signature='b')
+    def UpdatePkgFilter(self, pkg_id, new_db_path):
+        return self.quarterback.filter_manager.update_pkg_filter(pkg_id, new_db_path)
     
     @dbus.service.method("org.gnome.Nanny.WebDatabase",
                          in_signature='', out_signature='a(sb)')



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]