add overwrite argument to FileManagerRule

This commit is contained in:
2020-11-09 11:11:40 +01:00
parent e2d3a16125
commit 1403fc0927

View File

@@ -228,8 +228,8 @@ class FileManagerRule:
valid_actions = ["copy", "move", "delete"] valid_actions = ["copy", "move", "delete"]
def __init__(self, action, src_re, dst_re="", auto_create=False, def __init__(self, action, src_re, dst_re="", auto_create=False,
dirmode=None, filemode=None, user=None, group=None, overwrite=False, dirmode=None, filemode=None, user=None,
rec=False): group=None, rec=False):
valid = f"{', '.join(FileManagerRule.valid_actions)}" valid = f"{', '.join(FileManagerRule.valid_actions)}"
assert action in self.valid_actions, \ assert action in self.valid_actions, \
f"action: expected [{valid}], got{action}" f"action: expected [{valid}], got{action}"
@@ -239,6 +239,8 @@ class FileManagerRule:
f"dst_re: expected {type('')}, got {type(dst_re)}" f"dst_re: expected {type('')}, got {type(dst_re)}"
assert isinstance(auto_create, bool), \ assert isinstance(auto_create, bool), \
f"auto_create: expected {type(bool)}, got {type(auto_create)}" f"auto_create: expected {type(bool)}, got {type(auto_create)}"
assert isinstance(overwrite, bool), \
f"auto_create: expected {type(bool)}, got {type(auto_create)}"
assert dirmode is None or isinstance(dirmode, int), \ assert dirmode is None or isinstance(dirmode, int), \
f"dirmode: expected {type(int)}, got {type(dirmode)}" f"dirmode: expected {type(int)}, got {type(dirmode)}"
assert filemode is None or isinstance(filemode, int), \ assert filemode is None or isinstance(filemode, int), \
@@ -254,6 +256,7 @@ class FileManagerRule:
self.src_re = re.compile(src_re) self.src_re = re.compile(src_re)
self.dst_re = dst_re self.dst_re = dst_re
self.auto_create = auto_create self.auto_create = auto_create
self.overwrite = overwrite
self.dirmode = dirmode self.dirmode = dirmode
self.filemode = filemode self.filemode = filemode
self.user = user self.user = user
@@ -351,9 +354,9 @@ class FileManagerScheduler(TaskScheduler):
f"unable to {rule.action} '{path}', " f"unable to {rule.action} '{path}', "
f"resulting destination path is empty") f"resulting destination path is empty")
if os.path.exists(dst): if os.path.exists(dst) and not self.overwrite:
raise RuntimeError( raise RuntimeError(
f"unable to move file from '{path} " f"unable to {rule.action} file from '{path} "
f"to '{dst}', destination path exists already") f"to '{dst}', destination path exists already")
dst_dir = os.path.dirname(dst) dst_dir = os.path.dirname(dst)