This action also uploads a file without attaching it to a virtual drive
directory, but can be used from an HTML form. The response is an HTML page
that describes the results of the upload, including the resulting URI (but
- also including information about which peers were used, etc).
+ also including information about which peers were used, etc). If a
+ when_done=URL argument is provided, the reponse is a redirect to the given
+ URL instead of the upload-results page.
POST http://localhost:8123/uri?t=upload&mutable=true
d = self.POST("/uri", t="upload", when_done="/",
file=("new.txt", self.NEWFILE_CONTENTS))
d.addBoth(self.shouldRedirect, "/")
- # XXX Test that resulting welcome page has a "most recent
- # upload", the URI of which points to the file contents that
- # you just uploaded.
return d
- test_POST_upload_no_link_whendone.todo = "Not yet implemented."
def test_POST_upload_no_link_mutable(self):
d = self.POST("/uri", t="upload", mutable="true",
d = client.upload(uploadable)
d.addBoth(self._done.fire)
+ def renderHTTP(self, ctx):
+ req = inevow.IRequest(ctx)
+ when_done = get_arg(req, "when_done", None)
+ if when_done:
+ # if when_done= is provided, return a redirect instead of our
+ # usual upload-results page
+ d = self._done.when_fired()
+ d.addCallback(lambda res: url.URL.fromString(when_done))
+ return d
+ return rend.Page.renderHTTP(self, ctx)
+
def upload_results(self):
return self._done.when_fired()