keep empty folders after deleting all files

This commit is contained in:
ed 2021-09-15 23:31:49 +02:00
parent ef1c55286f
commit 0e884df486
2 changed files with 13 additions and 12 deletions

View file

@ -236,7 +236,7 @@ class Up2k(object):
if vp:
fvp = "{}/{}".format(vp, fvp)
self._handle_rm(LEELOO_DALLAS, None, fvp)
self._handle_rm(LEELOO_DALLAS, None, fvp, True)
nrm += 1
if nrm:
@ -1384,7 +1384,7 @@ class Up2k(object):
ok = {}
ng = {}
for vp in vpaths:
a, b, c = self._handle_rm(uname, ip, vp)
a, b, c = self._handle_rm(uname, ip, vp, False)
n_files += a
for k in b:
ok[k] = 1
@ -1397,7 +1397,7 @@ class Up2k(object):
return "deleted {} files (and {}/{} folders)".format(n_files, ok, ok + ng)
def _handle_rm(self, uname, ip, vpath):
def _handle_rm(self, uname, ip, vpath, rm_topdir):
try:
permsets = [[True, False, False, True]]
vn, rem = self.asrv.vfs.get(vpath, uname, *permsets[0])
@ -1466,7 +1466,7 @@ class Up2k(object):
bos.unlink(abspath)
rm = rmdirs(self.log_func, scandir, True, atop)
rm = rmdirs(self.log_func, scandir, True, atop, 1 if rm_topdir else 0)
return n_files, rm[0], rm[1]
def handle_mv(self, uname, svp, dvp):
@ -1508,7 +1508,7 @@ class Up2k(object):
with self.mutex:
self._mv_file(uname, svpf, dvpf)
rmdirs(self.log_func, scandir, True, sabs)
rmdirs(self.log_func, scandir, True, sabs, 1)
return "k"
def _mv_file(self, uname, svp, dvp):

View file

@ -1164,7 +1164,7 @@ def statdir(logger, scandir, lstat, top):
logger(src, "{} @ {}".format(repr(ex), top), 1)
def rmdirs(logger, scandir, lstat, top):
def rmdirs(logger, scandir, lstat, top, depth):
if not os.path.exists(fsenc(top)) or not os.path.isdir(fsenc(top)):
top = os.path.dirname(top)
@ -1174,15 +1174,16 @@ def rmdirs(logger, scandir, lstat, top):
ok = []
ng = []
for d in dirs[::-1]:
a, b = rmdirs(logger, scandir, lstat, d)
a, b = rmdirs(logger, scandir, lstat, d, depth + 1)
ok += a
ng += b
try:
os.rmdir(fsenc(top))
ok.append(top)
except:
ng.append(top)
if depth:
try:
os.rmdir(fsenc(top))
ok.append(top)
except:
ng.append(top)
return ok, ng