From 705f598b1a7b46f2b499fe7f74d22e8e037022d0 Mon Sep 17 00:00:00 2001 From: ed Date: Sun, 13 Oct 2024 22:10:27 +0000 Subject: [PATCH] up2k non-e2d fixes: * respect noforget when loading snaps * ...but actually forget deleted files otherwise * insert empty need/hash as necessary --- copyparty/up2k.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 8531d68d..68c89e49 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -1016,6 +1016,7 @@ class Up2k(object): vpath = k _, flags = self._expr_idx_filter(flags) + n4g = bool(flags.get("noforget")) ft = "\033[0;32m{}{:.0}" ff = "\033[0;35m{}{:.0}" @@ -1073,21 +1074,35 @@ class Up2k(object): for job in reg2.values(): job["dwrk"] = job["wark"] + rm = [] for k, job in reg2.items(): job["ptop"] = ptop + if "done" in job: + job["need"] = job["hash"] = emptylist + else: + if "need" not in job: + job["need"] = [] + if "hash" not in job: + job["hash"] = [] + fp = djoin(ptop, job["prel"], job["name"]) if bos.path.exists(fp): reg[k] = job if "done" in job: - job["need"] = job["hash"] = emptylist continue job["poke"] = time.time() job["busy"] = {} else: self.log("ign deleted file in snap: [{}]".format(fp)) + if not n4g: + rm.append(k) + continue + + for x in rm: + del reg2[x] if drp is None: - drp = [k for k, v in reg.items() if not v.get("need", [])] + drp = [k for k, v in reg.items() if not v["need"]] else: drp = [x for x in drp if x in reg]