[conduit/config-unstable: 17/19] Fixed files and folders serialization.



commit d64e5b9720f5ec19cc6a60f3018dd75a6923a621
Author: Alexandre Rosenfeld <airmind gmail com>
Date:   Tue May 19 01:13:31 2009 -0300

    Fixed files and folders serialization.
    
    Fixed unicode handling in XML serialization.
    Broke compatibility with older Files and Folders settings.
---
 conduit/XMLSerialization.py              |    6 +++-
 conduit/modules/FileModule/FileModule.py |   44 +++++++++++------------------
 2 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/conduit/XMLSerialization.py b/conduit/XMLSerialization.py
index 5e82c1c..ad07b3e 100644
--- a/conduit/XMLSerialization.py
+++ b/conduit/XMLSerialization.py
@@ -45,7 +45,9 @@ class Settings( object ):
         elif desired_type == "int":
             return int(string)
         elif desired_type == "str":
-            return str(string) # 'just in case'
+            return str(string)
+        elif desired_type == "unicode":
+            return unicode(string)        
         elif desired_type == "none":
             return None
         else:
@@ -67,6 +69,8 @@ class Settings( object ):
             return "float"
         elif type(data_type) == str:
             return "str"
+        elif type(data_type) == unicode:
+            return "unicode"
         elif type(data_type) == bool:
             return "bool"
         elif data_type is None:
diff --git a/conduit/modules/FileModule/FileModule.py b/conduit/modules/FileModule/FileModule.py
index 84b252d..d98beae 100644
--- a/conduit/modules/FileModule/FileModule.py
+++ b/conduit/modules/FileModule/FileModule.py
@@ -27,19 +27,17 @@ class FileSource(FileDataProvider.FileSource):
     def __init__(self, *args):
         FileDataProvider.FileSource.__init__(self)
         self.file_configurator = None
-        self._files_folders = None
+        self.files = None
+        self.folders = None
         self.update_configuration(
-            files = ([], self.set_files, self.get_files),
-            folders = ([], self.set_folders, self.get_folders)
+            files_and_folders = ({'files':[], 'folders':[]}, self._set_files_folders, self._get_files_folders)
         )
         
-    def set_files(self, files):
-        for f in files:
-            self._add_file(f)        
-            
-    def set_folders(self, folders):
-        for folder in folders:
-            folder, group = folder.split("---FIXME---")
+    def _set_files_folders(self, value):
+        for f in value['files']:
+            self._add_file(f)
+        for folder in value['folders']:
+            folder, group = folder
             self._add_folder(folder, group)
 
     def get_config_container(self, configContainerKlass, name, icon, configurator):
@@ -57,23 +55,15 @@ class FileSource(FileDataProvider.FileSource):
 
         return self.file_configurator
     
-    def _get_files_folders(self, get_files = False, get_folders = False):
-        if self._files_folders:
-            files, folders = self._files_folders
-            self._files_folders = None
-        else:
-            files = []
-            folders = []
-            for uri,ftype,group in self.db.select("SELECT URI,TYPE,GROUP_NAME FROM config"):
-                if ftype == FileDataProvider.TYPE_FILE:
-                    files.append(uri)
-                else:
-                    folders.append("%s---FIXME---%s" % (uri,group))        
-            self._files_folders = (files, folders)
-        if get_files:
-            return files
-        if get_folders:
-            return folders
+    def _get_files_folders(self):
+        files = []
+        folders = []
+        for uri,ftype,group in self.db.select("SELECT URI,TYPE,GROUP_NAME FROM config"):
+            if ftype == FileDataProvider.TYPE_FILE:
+                files.append(uri)
+            else:
+                folders.append((uri,group))
+        return {'files': files, 'folders':folders}
     
     def get_files(self):
         self._get_files_folders(get_files = True)



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