[nanny] AddPkgFilter exported to Dbus
- From: Roberto Majadas <telemaco src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nanny] AddPkgFilter exported to Dbus
- Date: Mon, 1 Feb 2010 15:25:11 +0000 (UTC)
commit 57a5188e9bfa483943c67222a423edd170ef06f8
Author: Roberto Majadas <roberto majadas openshine com>
Date: Mon Feb 1 13:59:53 2010 +0100
AddPkgFilter exported to Dbus
daemon/src/FilterManager.py | 49 ++++++++++++++++++++++++++++++++++++++----
daemon/src/NannyDBus.py | 6 +++++
2 files changed, 50 insertions(+), 5 deletions(-)
---
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index 09da7b2..f2af154 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -24,11 +24,14 @@
# USA
import gobject
+import gio
import os
+import shutil
import pickle
+import tempfile
from glob import glob
-from twisted.internet import reactor
+from twisted.internet import reactor, threads
from twisted.enterprise import adbapi
import nanny.gregex
@@ -193,8 +196,44 @@ class FilterManager (gobject.GObject) :
print "Something goes wrong getting categories from %s" % db
return []
- def add_pkg_filter(self, path, name, description):
- pass
+ def add_pkg_filter(self, name, description, path):
+ temp_dir = tempfile.mkdtemp(prefix="filter_", dir="/var/lib/nanny/pkg_filters/")
+ try:
+ d = threads.deferToThread(self.__copy_pkg_filter, path, os.path.join(temp_dir, "filters.db"))
+ block_d = BlockingDeferred(d)
+ qr = block_d.blockOn()
+ if qr == True :
+ fd = open(os.path.join(temp_dir, "filters.metadata"), "w")
+ fd.write("Name=%s\n" % name)
+ fd.write("Comment=%s\n" % description)
+ fd.close()
+ else:
+ shutil.rmtree(temp_dir)
+ return False
+
+ self.db_pools[os.path.join(temp_dir, "filters.db")] = adbapi.ConnectionPool('sqlite3',
+ os.path.join(temp_dir, "filters.db"),
+ check_same_thread=False,
+ cp_openfun=on_db_connect)
+ self.pkg_filters_conf[os.path.join(temp_dir, "filters.db")] = {"categories" : [],
+ "users_info" : {}
+ }
+ self.__save_pkg_filters_conf()
+ return True
+ except:
+ print "Something goes wrong Adding PKG Filter"
+ shutil.rmtree(temp_dir)
+ return False
+
+ def __copy_pkg_filter(self, orig, dest):
+ try:
+ print "Coping %s" % orig
+ gio.File(orig).copy(gio.File(dest))
+ print "Copied %s in %s" % (orig, dest)
+ return True
+ except:
+ print "Copy failed! (%s, %s)" % (orig, dest)
+ return False
def remove_pkg_filter(self):
pass
@@ -210,8 +249,8 @@ class FilterManager (gobject.GObject) :
def get_pkg_filter_user_categories(self, pkg_id, uid):
try:
- name = "Here the name"
- description = "Here the description"
+ name = ""
+ description = ""
categories = self.__get_categories_from_db(pkg_id)
if self.pkg_filters_conf[pkg_id]["users_info"].has_key(uid) :
user_categories = self.pkg_filters_conf[pkg_id]["users_info"][uid]
diff --git a/daemon/src/NannyDBus.py b/daemon/src/NannyDBus.py
index e8e73de..bac72b8 100644
--- a/daemon/src/NannyDBus.py
+++ b/daemon/src/NannyDBus.py
@@ -130,6 +130,12 @@ class NannyDBus(dbus.service.Object):
unicode(name),
unicode(description),
unicode(regex))
+
+ @dbus.service.method("org.gnome.Nanny.WebDatabase",
+ 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='', out_signature='as')
def ListPkgFilters(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]