From b8ad3da5e5bf69109dd53a95f483e9abbc6ebcf9 Mon Sep 17 00:00:00 2001 From: Brian Warner <warner@lothar.com> Date: Mon, 4 Dec 2006 12:03:29 -0700 Subject: [PATCH] add 'make directory' button to webish --- allmydata/webish.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/allmydata/webish.py b/allmydata/webish.py index c4f18f69..5c63b05a 100644 --- a/allmydata/webish.py +++ b/allmydata/webish.py @@ -37,16 +37,31 @@ class Welcome(rend.Page): addSlash = True docFactory = getxmlfile("welcome.xhtml") -class IUpload(annotate.TypedInterface): +class IDirectoryEditor(annotate.TypedInterface): def upload(contents=annotate.FileUpload(label="Choose a file to upload: ", required=True, requiredFailMessage="Do iT!"), ctx=annotate.Context(), ): + # Each method gets a box. The string in the autocallable(action=) + # argument is put on the border of the box, as well as in the submit + # button. The top-most contents of the box are the method's + # docstring, if any. Each row contains a string for the argument + # followed by the argument's input box. If you do not provide an + # action= argument to autocallable, the method name is capitalized + # and used instead. #"""Upload a file""" pass upload = annotate.autocallable(upload, action="Upload file") + def mkdir(name=annotate.String("Create a new directory named: ", + required=True, + requiredFailMessage="You must choose a directory"), + ): + #"""Create a directory.""" + pass + mkdir = annotate.autocallable(mkdir, action="Make directory") + class Directory(rend.Page): addSlash = True docFactory = getxmlfile("directory.xhtml") @@ -104,7 +119,7 @@ class Directory(rend.Page): # this tells formless about what functions can be invoked, giving it # enough information to construct form contents - implements(IUpload) + implements(IDirectoryEditor) child_webform_css = webform.defaultCSS def render_forms(self, ctx, data): @@ -127,6 +142,15 @@ class Directory(rend.Page): return url.here.add("results", "upload of '%s' complete!" % contents.filename) + def mkdir(self, name): + log.msg("making new webish directory") + d = self._dirnode.callRemote("add_directory", name) + def _done(res): + log.msg("webish mkdir complete") + return res + d.addCallback(_done) + return d + class WebDownloadTarget: implements(IDownloadTarget) def __init__(self, req): -- 2.45.2