webish: add when_done= to POST /uri?t=upload . I did not add a 'recent uploads' section to the welcome page, but I think the new upload-results page provides the desired data

This commit is contained in:
Brian Warner 2008-02-06 02:38:16 -07:00
parent 652d50d7e0
commit 6e0d3059a3
3 changed files with 14 additions and 5 deletions

View File

@ -179,7 +179,9 @@ f. uploading a file
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

View File

@ -1011,11 +1011,7 @@ class Web(WebMixin, unittest.TestCase):
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",

View File

@ -1256,6 +1256,17 @@ class UnlinkedPOSTCHKUploader(rend.Page):
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()