mirror of
https://github.com/9001/copyparty.git
synced 2025-08-18 01:22:13 -06:00
keep empty folders after deleting all files
This commit is contained in:
parent
ef1c55286f
commit
0e884df486
|
@ -236,7 +236,7 @@ class Up2k(object):
|
||||||
if vp:
|
if vp:
|
||||||
fvp = "{}/{}".format(vp, fvp)
|
fvp = "{}/{}".format(vp, fvp)
|
||||||
|
|
||||||
self._handle_rm(LEELOO_DALLAS, None, fvp)
|
self._handle_rm(LEELOO_DALLAS, None, fvp, True)
|
||||||
nrm += 1
|
nrm += 1
|
||||||
|
|
||||||
if nrm:
|
if nrm:
|
||||||
|
@ -1384,7 +1384,7 @@ class Up2k(object):
|
||||||
ok = {}
|
ok = {}
|
||||||
ng = {}
|
ng = {}
|
||||||
for vp in vpaths:
|
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
|
n_files += a
|
||||||
for k in b:
|
for k in b:
|
||||||
ok[k] = 1
|
ok[k] = 1
|
||||||
|
@ -1397,7 +1397,7 @@ class Up2k(object):
|
||||||
|
|
||||||
return "deleted {} files (and {}/{} folders)".format(n_files, ok, ok + ng)
|
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:
|
try:
|
||||||
permsets = [[True, False, False, True]]
|
permsets = [[True, False, False, True]]
|
||||||
vn, rem = self.asrv.vfs.get(vpath, uname, *permsets[0])
|
vn, rem = self.asrv.vfs.get(vpath, uname, *permsets[0])
|
||||||
|
@ -1466,7 +1466,7 @@ class Up2k(object):
|
||||||
|
|
||||||
bos.unlink(abspath)
|
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]
|
return n_files, rm[0], rm[1]
|
||||||
|
|
||||||
def handle_mv(self, uname, svp, dvp):
|
def handle_mv(self, uname, svp, dvp):
|
||||||
|
@ -1508,7 +1508,7 @@ class Up2k(object):
|
||||||
with self.mutex:
|
with self.mutex:
|
||||||
self._mv_file(uname, svpf, dvpf)
|
self._mv_file(uname, svpf, dvpf)
|
||||||
|
|
||||||
rmdirs(self.log_func, scandir, True, sabs)
|
rmdirs(self.log_func, scandir, True, sabs, 1)
|
||||||
return "k"
|
return "k"
|
||||||
|
|
||||||
def _mv_file(self, uname, svp, dvp):
|
def _mv_file(self, uname, svp, dvp):
|
||||||
|
|
|
@ -1164,7 +1164,7 @@ def statdir(logger, scandir, lstat, top):
|
||||||
logger(src, "{} @ {}".format(repr(ex), top), 1)
|
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)):
|
if not os.path.exists(fsenc(top)) or not os.path.isdir(fsenc(top)):
|
||||||
top = os.path.dirname(top)
|
top = os.path.dirname(top)
|
||||||
|
|
||||||
|
@ -1174,15 +1174,16 @@ def rmdirs(logger, scandir, lstat, top):
|
||||||
ok = []
|
ok = []
|
||||||
ng = []
|
ng = []
|
||||||
for d in dirs[::-1]:
|
for d in dirs[::-1]:
|
||||||
a, b = rmdirs(logger, scandir, lstat, d)
|
a, b = rmdirs(logger, scandir, lstat, d, depth + 1)
|
||||||
ok += a
|
ok += a
|
||||||
ng += b
|
ng += b
|
||||||
|
|
||||||
try:
|
if depth:
|
||||||
os.rmdir(fsenc(top))
|
try:
|
||||||
ok.append(top)
|
os.rmdir(fsenc(top))
|
||||||
except:
|
ok.append(top)
|
||||||
ng.append(top)
|
except:
|
||||||
|
ng.append(top)
|
||||||
|
|
||||||
return ok, ng
|
return ok, ng
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue