conduit r1692 - in trunk: . conduit conduit/datatypes conduit/modules/N800Module conduit/platform test/python-tests
- From: jstowers svn gnome org
- To: svn-commits-list gnome org
- Subject: conduit r1692 - in trunk: . conduit conduit/datatypes conduit/modules/N800Module conduit/platform test/python-tests
- Date: Fri, 29 Aug 2008 23:37:59 +0000 (UTC)
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]