add overwrite argument to FileManagerRule
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user