mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-21 18:06:46 +00:00
dirnode.set_children: take a dict, not a list
This commit is contained in:
parent
e2ffc3dc03
commit
304aadd4f7
@ -400,14 +400,14 @@ class DirectoryNode:
|
|||||||
# this takes URIs
|
# this takes URIs
|
||||||
a = Adder(self, overwrite=overwrite)
|
a = Adder(self, overwrite=overwrite)
|
||||||
node_entries = []
|
node_entries = []
|
||||||
for e in entries:
|
for (name, e) in entries.iteritems():
|
||||||
if len(e) == 3:
|
assert isinstance(name, unicode)
|
||||||
name, writecap, readcap = e
|
if len(e) == 2:
|
||||||
|
writecap, readcap = e
|
||||||
metadata = None
|
metadata = None
|
||||||
else:
|
else:
|
||||||
assert len(e) == 4
|
assert len(e) == 3
|
||||||
name, writecap, readcap, metadata = e
|
writecap, readcap, metadata = e
|
||||||
assert isinstance(name, unicode)
|
|
||||||
precondition(isinstance(writecap, (str,type(None))), writecap)
|
precondition(isinstance(writecap, (str,type(None))), writecap)
|
||||||
precondition(isinstance(readcap, (str,type(None))), readcap)
|
precondition(isinstance(readcap, (str,type(None))), readcap)
|
||||||
child_node = self._create_node(writecap, readcap)
|
child_node = self._create_node(writecap, readcap)
|
||||||
|
@ -898,10 +898,11 @@ class IDirectoryNode(IMutableFilesystemNode):
|
|||||||
NotMutableError."""
|
NotMutableError."""
|
||||||
|
|
||||||
def set_children(entries, overwrite=True):
|
def set_children(entries, overwrite=True):
|
||||||
"""Add multiple (name, writecap, readcap) triples (or (name,
|
"""Add multiple children (by writecap+readcap) to a directory node.
|
||||||
writecap, readcap, metadata) 4-tuples) to a directory node. Returns a
|
Takes a dictionary, with childname as keys and (writecap, readcap)
|
||||||
Deferred that fires (with None) when the operation finishes. This is
|
tuples (or (writecap, readcap, metadata) triples) as values. Returns
|
||||||
equivalent to calling set_uri() multiple times, but is much more
|
a Deferred that fires (with None) when the operation finishes. This
|
||||||
|
is equivalent to calling set_uri() multiple times, but is much more
|
||||||
efficient. All child names must be unicode strings.
|
efficient. All child names must be unicode strings.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -1184,10 +1184,10 @@ class Large(DeepCheckBase, unittest.TestCase):
|
|||||||
d.addCallback(lambda root: root.create_empty_directory(u"subdir"))
|
d.addCallback(lambda root: root.create_empty_directory(u"subdir"))
|
||||||
def _add_children(subdir_node):
|
def _add_children(subdir_node):
|
||||||
self.subdir_node = subdir_node
|
self.subdir_node = subdir_node
|
||||||
kids = []
|
kids = {}
|
||||||
for i in range(1, COUNT):
|
for i in range(1, COUNT):
|
||||||
litcap = LiteralFileURI("%03d-data" % i).to_string()
|
litcap = LiteralFileURI("%03d-data" % i).to_string()
|
||||||
kids.append( (u"%03d-small" % i, litcap, litcap) )
|
kids[u"%03d-small" % i] = (litcap, litcap)
|
||||||
return subdir_node.set_children(kids)
|
return subdir_node.set_children(kids)
|
||||||
d.addCallback(_add_children)
|
d.addCallback(_add_children)
|
||||||
up = upload.Data("large enough for CHK" * 100, "")
|
up = upload.Data("large enough for CHK" * 100, "")
|
||||||
|
@ -449,18 +449,21 @@ class Dirnode(GridTestMixin, unittest.TestCase,
|
|||||||
|
|
||||||
# metadata through set_children()
|
# metadata through set_children()
|
||||||
d.addCallback(lambda res:
|
d.addCallback(lambda res:
|
||||||
n.set_children([
|
n.set_children({
|
||||||
(u"e1", fake_file_uri, fake_file_uri),
|
u"e1": (fake_file_uri, fake_file_uri),
|
||||||
(u"e2", fake_file_uri, fake_file_uri, {}),
|
u"e2": (fake_file_uri, fake_file_uri, {}),
|
||||||
(u"e3", fake_file_uri, fake_file_uri,
|
u"e3": (fake_file_uri, fake_file_uri,
|
||||||
{"key": "value"}),
|
{"key": "value"}),
|
||||||
]))
|
}))
|
||||||
d.addCallback(lambda res:
|
d.addCallback(lambda res:
|
||||||
self.shouldFail(ExistingChildError, "set_children-no",
|
self.shouldFail(ExistingChildError, "set_children-no",
|
||||||
"child 'e1' already exists",
|
"child 'e1' already exists",
|
||||||
n.set_children,
|
n.set_children,
|
||||||
[ (u"e1", other_file_uri, other_file_uri),
|
{ u"e1": (other_file_uri,
|
||||||
(u"new", other_file_uri, other_file_uri), ],
|
other_file_uri),
|
||||||
|
u"new": (other_file_uri,
|
||||||
|
other_file_uri),
|
||||||
|
},
|
||||||
overwrite=False))
|
overwrite=False))
|
||||||
# and 'new' should not have been created
|
# and 'new' should not have been created
|
||||||
d.addCallback(lambda res: n.list())
|
d.addCallback(lambda res: n.list())
|
||||||
|
@ -467,7 +467,7 @@ class DirectoryNodeHandler(RenderMixin, rend.Page, ReplaceMeMixin):
|
|||||||
le.args = tuple(le.args + (body,))
|
le.args = tuple(le.args + (body,))
|
||||||
# TODO test handling of bad JSON
|
# TODO test handling of bad JSON
|
||||||
raise
|
raise
|
||||||
cs = []
|
cs = {}
|
||||||
for name, (file_or_dir, mddict) in children.iteritems():
|
for name, (file_or_dir, mddict) in children.iteritems():
|
||||||
name = unicode(name) # simplejson-2.0.1 returns str *or* unicode
|
name = unicode(name) # simplejson-2.0.1 returns str *or* unicode
|
||||||
writecap = mddict.get('rw_uri')
|
writecap = mddict.get('rw_uri')
|
||||||
@ -476,7 +476,7 @@ class DirectoryNodeHandler(RenderMixin, rend.Page, ReplaceMeMixin):
|
|||||||
readcap = mddict.get('ro_uri')
|
readcap = mddict.get('ro_uri')
|
||||||
if readcap is not None:
|
if readcap is not None:
|
||||||
readcap = str(readcap)
|
readcap = str(readcap)
|
||||||
cs.append((name, writecap, readcap, mddict.get('metadata')))
|
cs[name] = (writecap, readcap, mddict.get('metadata'))
|
||||||
d = self.node.set_children(cs, replace)
|
d = self.node.set_children(cs, replace)
|
||||||
d.addCallback(lambda res: "Okay so I did it.")
|
d.addCallback(lambda res: "Okay so I did it.")
|
||||||
# TODO: results
|
# TODO: results
|
||||||
|
Loading…
x
Reference in New Issue
Block a user