瀏覽代碼

[aws] Fix deleting directory action

Romain Rigaux 4 年之前
父節點
當前提交
413b55835a

+ 3 - 3
apps/filebrowser/src/filebrowser/templates/listdir.mako

@@ -107,8 +107,8 @@ ${ fb_components.menubar() }
               </li>
               % if not is_trash_enabled:
               <li>
-                <a href="javascript: void(0)" class="delete-link" title="${_('Delete forever')}" data-bind="visible: !inTrash() && selectedFiles().length > 0 && isCurrentDirSelected().length == 0, click: deleteSelected">
-                  <i class="fa fa-fw fa-bolt"></i> ${_('Delete forever')}
+                <a href="javascript: void(0)" class="delete-link" title="${_('Delete')}" data-bind="visible: !inTrash() && selectedFiles().length > 0 && isCurrentDirSelected().length == 0, click: deleteSelected">
+                  <i class="fa fa-fw fa-bolt"></i> ${_('Delete')}
                 </a>
               </li>
               % endif
@@ -184,7 +184,7 @@ ${ fb_components.menubar() }
             <ul class="dropdown-menu pull-right" style="top: auto">
               <li data-bind="visible: !isS3() && !isABFS() || isS3() && !isS3Root() || isABFS() && !isABFSRoot()"><a href="javascript: void(0)" class="create-file-link" title="${_('File')}"><i class="fa fa-file-o"></i> ${_('File')}</a></li>
               <li><a href="javascript: void(0)" class="create-directory-link" title="${_('Directory')}">
-                <i class="fa fa-folder"></i> 
+                <i class="fa fa-folder"></i>
                 <span data-bind="visible: !isS3() && !isABFS() || isS3() && !isS3Root() || isABFS() && !isABFSRoot()">${_('Directory')}</span>
                 <span data-bind="visible: isS3() && isS3Root()">${_('Bucket')}</span>
                 <span data-bind="visible: isABFS() && isABFSRoot()">${_('File System')}</span>

+ 4 - 3
desktop/libs/aws/src/aws/s3/s3fs.py

@@ -342,6 +342,9 @@ class S3FileSystem(object):
     if bucket_name and not key_name:
       self._delete_bucket(bucket_name)
     else:
+      if self.isdir(path):
+        path = self._append_separator(path)  # Really need to make sure we end with a '/'
+
       key = self._get_key(path, validate=False)
 
       if key.exists():
@@ -349,9 +352,7 @@ class S3FileSystem(object):
         dir_keys = []
 
         if self.isdir(path):
-          # add `/` to prevent removing of `s3://b/a_new` trying to remove `s3://b/a`
-          prefix = self._append_separator(key.name)
-          dir_keys = key.bucket.list(prefix=prefix)
+          dir_keys = key.bucket.list(prefix=path)
           to_delete = itertools.chain(dir_keys, to_delete)
 
         if not dir_keys:

+ 2 - 0
desktop/libs/aws/src/aws/s3/s3fs_test.py

@@ -102,6 +102,7 @@ class TestS3FileSystem():
         fs.rmtree(path='s3a://gethue/data')
 
         key.delete.assert_called()
+        key.bucket.list.assert_called_with(prefix='s3a://gethue/data/')
         key.bucket.delete_keys.assert_not_called()
 
   def test_rmtree_non_empty_dir(self):
@@ -133,6 +134,7 @@ class TestS3FileSystem():
         fs.rmtree(path='s3a://gethue/data')
 
         key.delete.assert_not_called()
+        key.bucket.list.assert_called_with(prefix='s3a://gethue/data/')
         key.bucket.delete_keys.assert_called()