mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-27 00:21:07 +00:00
webish: implement delete (for files only, not directories)
This commit is contained in:
parent
c8e0024c41
commit
6f21b4248a
@ -90,6 +90,7 @@ class MutableDirectoryNode(Referenceable):
|
||||
os.unlink(absname)
|
||||
else:
|
||||
raise BadFileError("Cannot delete non-existent file '%s'" % name)
|
||||
remote_remove = remove
|
||||
|
||||
|
||||
class GlobalVirtualDrive(service.MultiService):
|
||||
|
@ -106,8 +106,23 @@ class VDrive(service.MultiService):
|
||||
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.
|
||||
|
@ -17,11 +17,13 @@
|
||||
<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>
|
||||
|
@ -86,11 +86,23 @@ class Directory(rend.Page):
|
||||
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
|
||||
@ -153,6 +165,16 @@ class Directory(rend.Page):
|
||||
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):
|
||||
|
Loading…
Reference in New Issue
Block a user