]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
enable private upload, in which the file is inserted at the grid layer but not at...
authorZooko O'Whielacronx <zooko@zooko.com>
Wed, 16 May 2007 15:40:19 +0000 (08:40 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Wed, 16 May 2007 15:40:19 +0000 (08:40 -0700)
This patch is actually by Faried Nawaz, as per ticket #33:

http://allmydata.org/trac/tahoe/ticket/33

src/allmydata/web/directory.xhtml
src/allmydata/webish.py

index 98fe00e77938c87d91b3f4dabc9e6b9be91a9435..6ee528f3f9eb15542788da3eea03e8644b9490c5 100644 (file)
@@ -35,7 +35,7 @@
 
 <div n:render="forms"/>
 
-<!-- <div class="results" n:render="results"/> -->
+<div class="results" n:render="results"/>
 
   </body>
 </html>
index b8dce062578fe9a113aa0171c79877e4c17d4ed9..5275b0deeeacd82e644027acb90e68a9669801da 100644 (file)
@@ -155,6 +155,13 @@ class Directory(rend.Page):
     def render_forms(self, ctx, data):
         return webform.renderForms()
 
+    def render_results(self, ctx, data):
+        req = inevow.IRequest(ctx)
+        if "results" in req.args:
+            return req.args["results"]
+        else:
+            return ""
+
     def bind_upload(self, ctx):
         """upload1"""
         # Note: this comment is no longer accurate, as it reflects the older
@@ -173,20 +180,31 @@ class Directory(rend.Page):
                                  requiredFailMessage="Do iT!")
         contentsarg = annotate.Argument("contents", up)
 
+        privateUpload = annotate.Radio(label="Private?", choices=["Yes"])
+        privatearg = annotate.Argument("privateupload", privateUpload)
+
         ctxarg = annotate.Argument("ctx", annotate.Context())
-        meth = annotate.Method(arguments=[contentsarg, ctxarg],
+        meth = annotate.Method(arguments=[contentsarg, privatearg, ctxarg],
                                label="Upload File to this directory")
         return annotate.MethodBinding("upload", meth, action="Upload")
 
-    def upload(self, contents, ctx):
+    def uploadprivate(self, filename, uri):
+        message = "webish upload complete, filename %s %s" % (filename, uri)
+        log.msg(message)
+        return url.here.add("filename", filename).add("results", message)
+
+    def upload(self, contents, privateupload, ctx):
         # contents is a cgi.FieldStorage instance
         log.msg("starting webish upload")
 
         uploader = get_uploader_service(ctx)
         d = uploader.upload(upload.Data(contents.value))
         name = contents.filename
-        d.addCallback(lambda vid:
-                      self._dirnode.callRemote("add_file", name, vid))
+        if privateupload:
+            d.addCallback(lambda vid: self.uploadprivate(name, vid))
+        else:
+            d.addCallback(lambda vid:
+                          self._dirnode.callRemote("add_file", name, vid))
         def _done(res):
             log.msg("webish upload complete")
             return res