[nanny] Monitoring external filters db



commit 059cf06b9f1feba03744a846f11e377fc430fa89
Author: Roberto Majadas <roberto majadas openshine com>
Date:   Mon Feb 1 18:38:18 2010 +0100

    Monitoring external filters db

 daemon/src/FilterManager.py |   43 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 1 deletions(-)
---
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index 6893293..bf20877 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -176,7 +176,48 @@ class FilterManager (gobject.GObject) :
                                                  "users_info" : {}
                                                  }
             self.__save_pkg_filters_conf()
-            
+
+        gobject.timeout_add(5000, self.__check_external_dbs)
+
+    def __check_external_dbs(self):
+        ddbb = glob('/usr/share/nanny/pkg_filters/*/filters.db')
+        if len(ddbb) == 0 :
+            for db in self.pkg_filters_conf.keys() :
+                if db.startswith("/usr/share/nanny/pkg_filters/") :
+                    print "Remove conf of pkg_list (%s)" % db
+                    self.pkg_filters_conf.pop(db)
+                    self.__save_pkg_filters_conf()
+
+            for db in self.db_pools.keys() :
+                if db.startswith("/usr/share/nanny/pkg_filters/"):
+                    print "Closing database of pkg_list (%s)" % db
+                    self.db_pools.pop(db).close()
+        else:
+            for db in self.pkg_filters_conf.keys() :
+                if db.startswith("/usr/share/nanny/pkg_filters/") and db not in ddbb :
+                    print "Remove conf of pkg_list (%s)" % db
+                    self.pkg_filters_conf.pop(db)
+                    self.__save_pkg_filters_conf()
+
+            for db in self.db_pools.keys() :
+                if db.startswith("/usr/share/nanny/pkg_filters/") and db not in ddbb:
+                    print "Closing database of pkg_list (%s)" % db
+                    self.db_pools.pop(db).close()
+
+            for db in ddbb :
+                if db not in self.pkg_filters_conf.keys() :
+                    print "Add missing conf of pkg_list (%s)" % db
+                    self.pkg_filters_conf[db] = {"categories" : [],
+                                                 "users_info" : {}
+                                                 }
+                    self.__save_pkg_filters_conf()
+                
+                if db not in self.db_pools.keys():
+                    print "Opening database of pkg_list (%s)" % db
+                    self.db_pools[db] = adbapi.ConnectionPool('sqlite3', db,
+                                                              check_same_thread=False,
+                                                              cp_openfun=on_db_connect)
+        return True
 
     def __save_pkg_filters_conf(self):
         output = open("/var/lib/nanny/pkg_filters/conf", 'wb')



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