[nanny] Changes in the add/remove/update packaged filters API
- From: Cesar Garcia Tapia <ctapia src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nanny] Changes in the add/remove/update packaged filters API
- Date: Mon, 1 Feb 2010 22:28:36 +0000 (UTC)
commit 423450006b0eb4aa7b795971e6a3074bef3432fb
Author: Cesar Garcia Tapia <cesar garcia tapia openshine com>
Date: Mon Feb 1 23:26:58 2010 +0100
Changes in the add/remove/update packaged filters API
client/gnome/admin/src/ConfigureProxyDialog.py | 2 +
daemon/src/FilterManager.py | 53 +++++++++++++++--------
daemon/src/NannyDBus.py | 6 +-
3 files changed, 39 insertions(+), 22 deletions(-)
---
diff --git a/client/gnome/admin/src/ConfigureProxyDialog.py b/client/gnome/admin/src/ConfigureProxyDialog.py
index 54149b1..308534d 100644
--- a/client/gnome/admin/src/ConfigureProxyDialog.py
+++ b/client/gnome/admin/src/ConfigureProxyDialog.py
@@ -222,8 +222,10 @@ class ConfigureProxyDialog (gtk.Dialog):
self.dbus_client.add_custom_filter (self.__selected_user_id, False, name, description, url)
self.__fill_treeviews ()
dialog.destroy()
+ break
else:
dialog.destroy()
+ break
def __on_add_dansguardian_list_reply (self, value):
self.progress_dialog.destroy()
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index b023d62..19c956f 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -29,6 +29,7 @@ import os
import shutil
import pickle
import tempfile
+import tarfile
from glob import glob
from twisted.internet import reactor, threads
@@ -241,18 +242,18 @@ class FilterManager (gobject.GObject) :
print "Something goes wrong getting categories from %s" % db
return []
- def add_pkg_filter(self, name, description, path):
+ def add_pkg_filter(self, 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"))
+ if not tarfile.is_tarfile (path):
+ print "The file has not in the correct format"
+ shutil.rmtree(temp_dir)
+ return False
+
+ d = threads.deferToThread(self.__copy_pkg_filter, path, os.path.join(temp_dir, "filters.tgz"))
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:
+ if qr != True :
shutil.rmtree(temp_dir)
return False
@@ -272,23 +273,36 @@ 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"))
+ basedir = os.path.dirname (dest)
+ if os.path.exists(basedir) :
+ files = os.listdir (basedir)
+ for file in files:
+ file_name = os.path.join (basedir, file)
+ gio.File(file_name).move(gio.File(file_name + ".bak"))
gio.File(orig).copy(gio.File(dest))
print "Copied %s in %s" % (orig, dest)
+
+ tfile = tarfile.open (dest, 'r')
+ tfile.extractall (path=os.path.dirname(dest))
+ os.unlink(dest)
- if os.path.exists(dest + ".bak") :
- print "Removing Backup file"
- os.unlink(dest + ".bak")
+ print "Removing Backup files"
+ files = os.listdir (basedir)
+ for file in files:
+ if file.endswith ('.bak'):
+ file_name = os.path.join (basedir, file)
+ os.unlink(file_name)
+
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))
+ print "Revert to backup files"
+ files = os.listdir (basedir)
+ for file in files:
+ if file.endswith ('.bak'):
+ gio.File(file).move(gio.File(file[:-4]))
+
return False
def remove_pkg_filter(self, pkg_id):
@@ -308,7 +322,8 @@ class FilterManager (gobject.GObject) :
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)
+ basedir = os.path.dirname (pkg_id)
+ d = threads.deferToThread(self.__copy_pkg_filter, new_db, os.path.join(basedir, "filters.tgz"))
block_d = BlockingDeferred(d)
qr = block_d.blockOn()
if qr == True :
diff --git a/daemon/src/NannyDBus.py b/daemon/src/NannyDBus.py
index deb6752..9c96f7c 100644
--- a/daemon/src/NannyDBus.py
+++ b/daemon/src/NannyDBus.py
@@ -132,9 +132,9 @@ class NannyDBus(dbus.service.Object):
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(unicode(name), unicode(description), str(path))
+ in_signature='s', out_signature='b')
+ def AddPkgFilter(self, path):
+ return self.quarterback.filter_manager.add_pkg_filter(str(path))
@dbus.service.method("org.gnome.Nanny.WebDatabase",
in_signature='s', out_signature='b')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]