conduit r1692 - in trunk: . conduit conduit/datatypes conduit/modules/N800Module conduit/platform test/python-tests



Author: jstowers
Date: Fri Aug 29 23:37:58 2008
New Revision: 1692
URL: http://svn.gnome.org/viewvc/conduit?rev=1692&view=rev

Log:
	* conduit/Vfs.py:
	* conduit/datatypes/File.py:
	* conduit/modules/N800Module/N800Module.py:
	* conduit/platform/FileGio.py:
	* conduit/platform/FileGnomeVfs.py:
	* conduit/platform/__init__.py:
	* test/python-tests/TestCoreFile.py:
	* test/python-tests/TestCoreVfs.py: Move some Vfs functions into
	the File class.
	* conduit/platform/FilePython.py: Skeleton implementation.


Added:
   trunk/conduit/platform/FilePython.py
Modified:
   trunk/   (props changed)
   trunk/ChangeLog
   trunk/conduit/Vfs.py
   trunk/conduit/datatypes/File.py
   trunk/conduit/modules/N800Module/N800Module.py
   trunk/conduit/platform/FileGio.py
   trunk/conduit/platform/FileGnomeVfs.py
   trunk/conduit/platform/__init__.py
   trunk/test/python-tests/TestCoreFile.py
   trunk/test/python-tests/TestCoreVfs.py

Modified: trunk/conduit/Vfs.py
==============================================================================
--- trunk/conduit/Vfs.py	(original)
+++ trunk/conduit/Vfs.py	Fri Aug 29 23:37:58 2008
@@ -10,6 +10,15 @@
 
 import conduit.utils.Singleton as Singleton
 
+import conduit
+if conduit.FILE_IMPL == "GnomeVfs":
+    import conduit.platform.FileGnomeVfs as FileImpl
+elif conduit.FILE_IMPL == "GIO":
+    import conduit.platform.FileGio as FileImpl
+else:
+    raise Exception("File Implementation %s Not Supported" % conduit.FILE_IMPL)
+
+
 #
 # URI Functions
 #
@@ -29,11 +38,11 @@
 
 def uri_is_valid(uri):
     """
-    (weakly) checks if a uri is valid by looking for a scheme seperator
+    Checks if the uri is valid (i.e. not a local path), and its type
+    is supported by the underlying file implementation
     """
-    uri = _ensure_type(uri)
-    return uri[0] != "/" and uri.find("://") != -1
-    
+    return uri[0] != "/" and uri.split("://")[0]+"://" in FileImpl.SCHEMES
+
 def uri_join(first, *rest):
     """
     Joins multiple uri components. Performs safely if the first
@@ -235,40 +244,6 @@
         log.warn("Error checking if location exists")
         return False
         
-def uri_make_directory(uri):
-    """
-    Makes a directory with the default permissions. Does not catch any
-    error
-    """
-    uri = _ensure_type(uri)
-    gnomevfs.make_directory(
-            uri,
-            gnomevfs.PERM_USER_ALL | gnomevfs.PERM_GROUP_READ | gnomevfs.PERM_GROUP_EXEC | gnomevfs.PERM_OTHER_READ | gnomevfs.PERM_OTHER_EXEC
-            )
-        
-def uri_make_directory_and_parents(uri):
-    """
-    Because gnomevfs.make_dir does not perform as mkdir -p this function
-    is required to make a heirarchy of directories.
-
-    @param uri: A directory that does not exist
-    @type uri: str
-    """
-    uri = _ensure_type(uri)
-    exists = False
-    dirs = []
-
-    directory = gnomevfs.URI(uri)
-    while not exists:
-        dirs.append(directory)
-        directory = directory.parent
-        exists = gnomevfs.exists(directory)
-
-    dirs.reverse()
-    for d in dirs:
-        log.debug("Making directory %s" % d)
-        uri_make_directory(str(d))
-
 class FileMonitor(gobject.GObject):
 
     __gsignals__ = {

Modified: trunk/conduit/datatypes/File.py
==============================================================================
--- trunk/conduit/datatypes/File.py	(original)
+++ trunk/conduit/datatypes/File.py	Fri Aug 29 23:37:58 2008
@@ -125,7 +125,7 @@
             return newuri
         else:
             return olduri
-            
+
     def set_from_instance(self, f):
         """
         Function to give this file all the properties of the
@@ -180,6 +180,19 @@
         """
         return self._file.is_directory()
 
+    def make_directory(self):
+        """
+        Makes a directory with the default permissions.
+        """
+        self._file.make_directory()
+
+    def make_directory_and_parents(self):
+        """
+        Makes a directory and all parents up till the root. Equivilent
+        to mkdir -p
+        """
+        self._file.make_directory_and_parents()
+
     def force_new_filename(self, filename):
         """
         Renames the file

Modified: trunk/conduit/modules/N800Module/N800Module.py
==============================================================================
--- trunk/conduit/modules/N800Module/N800Module.py	(original)
+++ trunk/conduit/modules/N800Module/N800Module.py	Fri Aug 29 23:37:58 2008
@@ -10,6 +10,7 @@
 log = logging.getLogger("modules.N800")
 
 import conduit
+import conduit.datatypes.File as File
 import conduit.datatypes.Video as Video
 import conduit.datatypes.Audio as Audio
 import conduit.datatypes.Photo as Photo
@@ -94,9 +95,10 @@
         dialog.run()
 
     def refresh(self):
-        if not Vfs.uri_exists(self.folder):
+        d = File.File(URI=self.folder)
+        if not d.exists():
             try:
-                Vfs.uri_make_directory_and_parents(self.folder)
+                d.make_directory_and_parents()
             except:
                 raise Exceptions.RefreshError("Error Creating Directory")
         FileDataProvider.FolderTwoWay.refresh(self)

Modified: trunk/conduit/platform/FileGio.py
==============================================================================
--- trunk/conduit/platform/FileGio.py	(original)
+++ trunk/conduit/platform/FileGio.py	Fri Aug 29 23:37:58 2008
@@ -138,16 +138,19 @@
         else:
             mode = gio.FILE_COPY_NONE
 
-        log.debug("Transfering File %s -> %s" % (self._source.get_uri(), self._dest.get_uri()))
+        log.debug("Transfering File %s -> %s (overwrite: %s)" % (self._source.get_uri(), self._dest.get_uri(), overwrite))
 
         #recursively create all parent dirs if needed
         #http://bugzilla.gnome.org/show_bug.cgi?id=546575
+        #
+        #recursively create all parent dirs if needed
         #parent = str(self._dest.parent)
         #if not gnomevfs.exists(parent):
-        #    Vfs.uri_make_directory_and_parents(parent)
+        #    d = FileImpl(None, impl=self._dest.parent)
+        #    d.make_directory_and_parents()
 
         #Copy the file
-        #http://bugzilla.gnome.org/show_bug.cgi?id=546591
+        #http://bugzilla.gnome.org/show_bug.cgi?id=546601
         try:        
             ok = self._source.copy(
                         destination=self._dest,
@@ -158,4 +161,6 @@
             return True, FileImpl(None, impl=self._dest)
         except gio.Error, e:
             log.warn("File transfer error: %s" % e)
+            return False, None
+
 

Modified: trunk/conduit/platform/FileGnomeVfs.py
==============================================================================
--- trunk/conduit/platform/FileGnomeVfs.py	(original)
+++ trunk/conduit/platform/FileGnomeVfs.py	Fri Aug 29 23:37:58 2008
@@ -3,7 +3,6 @@
 except ImportError:
     from gnome import gnomevfs # for maemo
 
-import conduit.Vfs as Vfs
 import conduit.platform
 
 import logging
@@ -139,6 +138,31 @@
         self.fileExists = False
         self.triedOpen = False
 
+    def make_directory(self):
+        uri = _ensure_type(uri)
+        gnomevfs.make_directory(
+                self.get_text_uri(),
+                gnomevfs.PERM_USER_ALL | gnomevfs.PERM_GROUP_READ | gnomevfs.PERM_GROUP_EXEC | gnomevfs.PERM_OTHER_READ | gnomevfs.PERM_OTHER_EXEC
+                )
+        
+    def make_directory_and_parents(self):
+        exists = False
+        dirs = []
+
+        directory = self._URI
+        while not exists:
+            dirs.append(directory)
+            directory = directory.parent
+            exists = gnomevfs.exists(directory)
+
+        dirs.reverse()
+        for d in dirs:
+            log.debug("Making directory %s" % d)
+            gnomevfs.make_directory(
+                    str(d),
+                    gnomevfs.PERM_USER_ALL | gnomevfs.PERM_GROUP_READ | gnomevfs.PERM_GROUP_EXEC | gnomevfs.PERM_OTHER_READ | gnomevfs.PERM_OTHER_EXEC
+                    )
+
 class FileTransferImpl(conduit.platform.FileTransfer):
     def __init__(self, source, dest):
         self._source = source._URI
@@ -178,7 +202,8 @@
         #recursively create all parent dirs if needed
         parent = str(self._dest.parent)
         if not gnomevfs.exists(parent):
-            Vfs.uri_make_directory_and_parents(parent)
+            d = FileImpl(None, impl=self._dest.parent)
+            d.make_directory_and_parents()
 
         #Copy the file
         try:        

Added: trunk/conduit/platform/FilePython.py
==============================================================================
--- (empty file)
+++ trunk/conduit/platform/FilePython.py	Fri Aug 29 23:37:58 2008
@@ -0,0 +1,17 @@
+import os.path
+import shutil
+
+import conduit.Vfs as Vfs
+import conduit.platform
+
+import logging
+log = logging.getLogger("platform.FilePython")
+
+class FileImpl(conduit.platform.File):
+    SCHEMES = ("file://",)
+    def __init__(self, URI):
+        self._path = URI.split("file://")[-1]
+
+
+class FileTransferImpl(conduit.platform.FileTransfer):
+    pass

Modified: trunk/conduit/platform/__init__.py
==============================================================================
--- trunk/conduit/platform/__init__.py	(original)
+++ trunk/conduit/platform/__init__.py	Fri Aug 29 23:37:58 2008
@@ -2,6 +2,8 @@
 
 class File:
 
+    SCHEMES = ()
+
     def __init__(self, URI):
         pass
         
@@ -49,6 +51,12 @@
         
     def close(self):
         raise NotImplementedError
+
+    def make_directory(self):
+        raise NotImplementedError
+
+    def make_directory_and_parents(self):
+        raise NotImplementedError
         
 class FileTransfer:
     def __init__(self, source, dest):

Modified: trunk/test/python-tests/TestCoreFile.py
==============================================================================
--- trunk/test/python-tests/TestCoreFile.py	(original)
+++ trunk/test/python-tests/TestCoreFile.py	Fri Aug 29 23:37:58 2008
@@ -11,7 +11,7 @@
 import datetime
 import tempfile
 
-for impl in ("GnomeVfs", "GIO"):
+for impl in ("GIO","GnomeVfs"):
     ok("--- TESTING FILE IMPL: %s" % impl, True)
 
     try:

Modified: trunk/test/python-tests/TestCoreVfs.py
==============================================================================
--- trunk/test/python-tests/TestCoreVfs.py	(original)
+++ trunk/test/python-tests/TestCoreVfs.py	Fri Aug 29 23:37:58 2008
@@ -21,9 +21,6 @@
 ok("format uri", Vfs.uri_format_for_display("file:///foo") == "/foo")
 
 tmpdiruri = Utils.new_tempdir()
-newtmpdiruri = Vfs.uri_join(tmpdiruri, "foo", "bar", "baz")
-Vfs.uri_make_directory_and_parents(newtmpdiruri)
-ok("Made directory and parents: %s" % newtmpdiruri, Vfs.uri_exists(newtmpdiruri) == True)
 
 # Test the folder scanner theading stuff
 fileuri = Utils.new_tempfile("bla").get_local_uri()



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