d.addCallback(lambda parent: parent.callRemote("add_directory", name))
return d
- def remove(self, something): # TODO
- pass
+ def remove(self, parent, name):
+ assert not isinstance(parent, str)
+ log.msg("vdrive removing %s" % name)
+ # first find the verifierid
+ d = self.get_verifierid_from_parent(parent, name)
+ def _got_verifierid(vid):
+ # TODO: delete the file's shares using this
+ pass
+ d.addCallback(_got_verifierid)
+ def _delete_from_parent(res):
+ return parent.callRemote("remove", name)
+ d.addCallback(_delete_from_parent)
+ def _done(res):
+ log.msg("vdrive done removing %s" % name)
+ d.addCallback(_done)
+ return d
+
def get_file(self, dir_and_name_or_path, download_target):
"""Retrieve a file from the virtual drive and put it somewhere.
<td>Filename</td>
<td>Type</td>
<td>fileid</td>
+ <td></td>
</tr>
<tr n:pattern="item" n:render="row">
<td><n:slot name="filename"/></td>
<td><n:slot name="type"/></td>
<td><n:slot name="fileid"/></td>
+ <td><n:slot name="delete"/></td>
</tr>
<tr n:pattern="empty"><td>directory is empty!</td></tr>
ctx.fillSlots("filename", T.a(href=dlurl)[name])
ctx.fillSlots("type", "FILE")
ctx.fillSlots("fileid", idlib.b2a(target))
+
+ # this creates a button which will cause our child__delete method
+ # to be invoked, which deletes the file and then redirects the
+ # browser back to this directory
+ del_url = url.here.child("_delete")
+ #del_url = del_url.add("verifierid", idlib.b2a(target))
+ del_url = del_url.add("name", name)
+ delete = T.form(action=del_url, method="post")[
+ T.input(type='submit', value='del', name="del"),
+ ]
+ ctx.fillSlots("delete", delete)
else:
# directory
ctx.fillSlots("filename", T.a(href=name)[name])
ctx.fillSlots("type", "DIR")
ctx.fillSlots("fileid", "-")
+ ctx.fillSlots("delete", "-")
return ctx.tag
child_webform_css = webform.defaultCSS
d.addCallback(_done)
return d
+ def child__delete(self, ctx):
+ # perform the delete, then redirect back to the directory page
+ args = inevow.IRequest(ctx).args
+ vdrive = self._client.getServiceNamed("vdrive")
+ d = vdrive.remove(self._dirnode, args["name"][0])
+ def _deleted(res):
+ return url.here.up()
+ d.addCallback(_deleted)
+ return d
+
class WebDownloadTarget:
implements(IDownloadTarget)
def __init__(self, req):