mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-01 23:30:53 +00:00
add RIMutableDirectoryNode.get, to get a specific child file or directory
This commit is contained in:
parent
b0abe5122d
commit
faf0b13e3c
@ -27,14 +27,6 @@ class MutableDirectoryNode(Referenceable):
|
|||||||
if name == "." or name == ".." or "/" in name:
|
if name == "." or name == ".." or "/" in name:
|
||||||
raise DeadDirectoryNodeError("bad filename component")
|
raise DeadDirectoryNodeError("bad filename component")
|
||||||
|
|
||||||
# this is private
|
|
||||||
def get_child(self, name):
|
|
||||||
self.validate_name(name)
|
|
||||||
absname = os.path.join(self._basedir, name)
|
|
||||||
if os.path.isdir(absname):
|
|
||||||
return self.make_subnode(absname)
|
|
||||||
raise DeadDirectoryNodeError("no such directory")
|
|
||||||
|
|
||||||
# these are the public methods, available to anyone who holds a reference
|
# these are the public methods, available to anyone who holds a reference
|
||||||
|
|
||||||
def list(self):
|
def list(self):
|
||||||
@ -55,6 +47,21 @@ class MutableDirectoryNode(Referenceable):
|
|||||||
return results
|
return results
|
||||||
remote_list = list
|
remote_list = list
|
||||||
|
|
||||||
|
def get(self, name):
|
||||||
|
self.validate_name(name)
|
||||||
|
absname = os.path.join(self._basedir, name)
|
||||||
|
if os.path.isdir(absname):
|
||||||
|
return self.make_subnode(absname)
|
||||||
|
elif os.path.isfile(absname):
|
||||||
|
f = open(absname, "rb")
|
||||||
|
data = f.read()
|
||||||
|
f.close()
|
||||||
|
return data
|
||||||
|
else:
|
||||||
|
raise BadFileError("there is nothing named '%s' in this directory"
|
||||||
|
% name)
|
||||||
|
remote_get = get
|
||||||
|
|
||||||
def add_directory(self, name):
|
def add_directory(self, name):
|
||||||
self.validate_name(name)
|
self.validate_name(name)
|
||||||
absname = os.path.join(self._basedir, name)
|
absname = os.path.join(self._basedir, name)
|
||||||
|
@ -55,6 +55,9 @@ class RIMutableDirectoryNode(RemoteInterface):
|
|||||||
maxLength=100,
|
maxLength=100,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get(name=str):
|
||||||
|
return (RIMutableDirectoryNode_, Verifierid)
|
||||||
|
|
||||||
def add_directory(name=str):
|
def add_directory(name=str):
|
||||||
return RIMutableDirectoryNode_
|
return RIMutableDirectoryNode_
|
||||||
|
|
||||||
|
@ -19,9 +19,15 @@ class FileTable(unittest.TestCase):
|
|||||||
self.failUnlessRaises(BadFileError, root.remove, "two")
|
self.failUnlessRaises(BadFileError, root.remove, "two")
|
||||||
self.failUnlessRaises(BadFileError, root.remove, "three")
|
self.failUnlessRaises(BadFileError, root.remove, "three")
|
||||||
|
|
||||||
|
self.failUnlessEqual(root.get("one"), "vid-one")
|
||||||
|
self.failUnlessRaises(BadFileError, root.get, "missing")
|
||||||
|
|
||||||
# now play with directories
|
# now play with directories
|
||||||
subdir1 = root.add_directory("subdir1")
|
subdir1 = root.add_directory("subdir1")
|
||||||
self.failUnless(isinstance(subdir1, MutableDirectoryNode))
|
self.failUnless(isinstance(subdir1, MutableDirectoryNode))
|
||||||
|
subdir1a = root.get("subdir1")
|
||||||
|
self.failUnless(isinstance(subdir1a, MutableDirectoryNode))
|
||||||
|
self.failUnlessEqual(subdir1a._basedir, subdir1._basedir)
|
||||||
entries = root.list()
|
entries = root.list()
|
||||||
self.failUnlessEqual(len(entries), 2)
|
self.failUnlessEqual(len(entries), 2)
|
||||||
one_index = entries.index( ("one", "vid-one") )
|
one_index = entries.index( ("one", "vid-one") )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user