Fri Aug  7 18:25:42 PDT 2009  Kevan Carstensen <kevan@isnotajoke.com>
  * Fix a logic error in `tahoe_ls.py'

Fri Aug  7 18:27:42 PDT 2009  Kevan Carstensen <kevan@isnotajoke.com>
  * Fix misbehavior in `filenode.py'
  
  Per the spec, if you GET a dircap with a path to a file and specify that you want json, you should get metadata back. This wasn't happening before.

New patches:

[Fix a logic error in `tahoe_ls.py'
Kevan Carstensen <kevan@isnotajoke.com>**20090808012542
 Ignore-this: 88d54458521e76ca039b4294ade53dcc
] hunk ./src/allmydata/scripts/tahoe_ls.py 55
         children = d['children']
     elif nodetype == "filenode":
         childname = path.split("/")[-1]
-        children = {childname: d}
+        children = {childname: [nodetype, d]}
     childnames = sorted(children.keys())
     now = time.time()
 
[Fix misbehavior in `filenode.py'
Kevan Carstensen <kevan@isnotajoke.com>**20090808012742
 Ignore-this: ae04a444be086f67b5e82243f12da6ac
 
 Per the spec, if you GET a dircap with a path to a file and specify that you want json, you should get metadata back. This wasn't happening before.
] {
hunk ./src/allmydata/web/filenode.py 9
 from nevow import url, rend
 from nevow.inevow import IRequest
 
-from allmydata.interfaces import ExistingChildError, CannotPackUnknownNodeError
+from allmydata.interfaces import ExistingChildError, \
+     CannotPackUnknownNodeError, IDirectoryNode
 from allmydata.monitor import Monitor
 from allmydata.immutable.upload import FileHandle
 from allmydata.immutable.filenode import LiteralFileNode
hunk ./src/allmydata/web/filenode.py 191
             d.addCallback(lambda dn: FileDownloader(dn, filename))
             return d
         if t == "json":
-            return FileJSONMetadata(ctx, self.node)
+            return FileJSONMetadata(ctx, self.node, self.parentnode, self.name)
         if t == "info":
             return MoreInfo(self.node)
         if t == "uri":
hunk ./src/allmydata/web/filenode.py 423
         return req.deferred
 
 
-def FileJSONMetadata(ctx, filenode):
+def FileJSONMetadata(ctx, filenode, parentnode=None, name=None):
     if filenode.is_readonly():
         rw_uri = None
         ro_uri = filenode.get_uri()
hunk ./src/allmydata/web/filenode.py 440
     if verifycap:
         data[1]['verify_uri'] = verifycap.to_string()
     data[1]['mutable'] = filenode.is_mutable()
-    return text_plain(simplejson.dumps(data, indent=1) + "\n", ctx)
+    if parentnode and name:
+        assert(IDirectoryNode.providedBy(parentnode))
+        d = parentnode.get_metadata_for(name)
+        def _handle_metadata(metadata):
+            data[1]["metadata"] = metadata
+            return text_plain(simplejson.dumps(data, indent=1) + "\n", ctx)
+        d.addCallback(_handle_metadata)
+        return d
+    else:
+        return text_plain(simplejson.dumps(data, indent=1) + "\n", ctx)
 
 def FileURI(ctx, filenode):
     return text_plain(filenode.get_uri(), ctx)
}

Context:

[docs: install.html: instruct Debian users to use this document and not to go find the DownloadDebianPackages page, ignore the warning at the top of it, and try it
zooko@zooko.com**20090804123840
 Ignore-this: 49da654f19d377ffc5a1eff0c820e026
 http://allmydata.org/pipermail/tahoe-dev/2009-August/002507.html
] 
[docs: relnotes.txt: reflow to 63 chars wide because google groups and some web forms seem to wrap to that
zooko@zooko.com**20090802135016
 Ignore-this: 53b1493a0491bc30fb2935fad283caeb
] 
[docs: about.html: fix English usage noticed by Amber
zooko@zooko.com**20090802050533
 Ignore-this: 89965c4650f9bd100a615c401181a956
] 
[docs: fix mis-spelled word in about.html
zooko@zooko.com**20090802050320
 Ignore-this: fdfd0397bc7cef9edfde425dddeb67e5
] 
[TAG allmydata-tahoe-1.5.0
zooko@zooko.com**20090802031303
 Ignore-this: 94e5558e7225c39a86aae666ea00f166
] 
Patch bundle hash:
06ca1ee1a686c75c55b27fd7558a54c70010bb99
