From 464bca6b09ce7896d3a6a3400b8776d2f4696bcb Mon Sep 17 00:00:00 2001 From: Jeffrey Chu Date: Thu, 25 Jun 2026 14:15:27 -0700 Subject: [PATCH 1/3] Edit script to handle database copy errors with a robocopy --- src/main/emme/toolbox/utilities/file_manager.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/emme/toolbox/utilities/file_manager.py b/src/main/emme/toolbox/utilities/file_manager.py index 9ddc12966..971b6f548 100644 --- a/src/main/emme/toolbox/utilities/file_manager.py +++ b/src/main/emme/toolbox/utilities/file_manager.py @@ -198,8 +198,11 @@ def upload(self, remote_dir, user_folder, scenario_id, delete_local_files, file_ title_fcn = lambda t: t[8:] if t.startswith("(local)") else t # copy all files (except Emme project, and other file_masks) self._copy_dir(src=local_dir, dst=remote_dir, file_masks=file_masks) - emmebank_paths = self._copy_emme_data( + + try:emmebank_paths = self._copy_emme_data( src=local_dir, dst=remote_dir, title_fcn=title_fcn, scenario_id=scenario_id) + except: + self._copy_dir(src=_join(local_dir, "emme_project"), dst=_join(remote_dir, "emme_project"), file_masks=['*locki*']) self.log_report() From 787abc76b689c63ef1c8bb7aa86b8258df529def Mon Sep 17 00:00:00 2001 From: Jeffrey Chu Date: Fri, 26 Jun 2026 09:08:44 -0700 Subject: [PATCH 2/3] Added option to exclude directories when using copy directory method --- src/main/emme/toolbox/utilities/file_manager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/emme/toolbox/utilities/file_manager.py b/src/main/emme/toolbox/utilities/file_manager.py index 971b6f548..5179877ff 100644 --- a/src/main/emme/toolbox/utilities/file_manager.py +++ b/src/main/emme/toolbox/utilities/file_manager.py @@ -318,7 +318,7 @@ def _copy_emme_data(self, src, dst, title_fcn, scenario_id, initialize=False): self._report.append("End: %s" % _time.strftime("%c")) return emmebank_paths - def _copy_dir(self, src, dst, file_masks, check_metadata=False): + def _copy_dir(self, src, dst, file_masks, dir_masks=None,check_metadata=False): # windows xcopy is much faster than shutil # upgrading xcopy to a faster robocopy @@ -329,7 +329,8 @@ def _copy_dir(self, src, dst, file_masks, check_metadata=False): flags = ['/E', '/Z', '/MT:8'] try: exclude_file_list = file_masks - output = _subprocess.check_output(['robocopy', src, dst] + flags + ["/XF"] + exclude_file_list + ["/XD"] + exclude_file_list) + exclude_dir_list = dir_masks + output = _subprocess.check_output(['robocopy', src, dst] + flags + ["/XF"] + exclude_file_list + ["/XD"] + exclude_dir_list) self._report.append(output) self._report.append(_time.strftime("%c")) except _subprocess.CalledProcessError as error: From 1cc38d0598347ad76b777dc21dd9a26ae512ced5 Mon Sep 17 00:00:00 2001 From: Jeffrey Chu Date: Fri, 26 Jun 2026 10:15:57 -0700 Subject: [PATCH 3/3] Reverting changes to commit 787abc7 --- src/main/emme/toolbox/utilities/file_manager.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/emme/toolbox/utilities/file_manager.py b/src/main/emme/toolbox/utilities/file_manager.py index 5179877ff..971b6f548 100644 --- a/src/main/emme/toolbox/utilities/file_manager.py +++ b/src/main/emme/toolbox/utilities/file_manager.py @@ -318,7 +318,7 @@ def _copy_emme_data(self, src, dst, title_fcn, scenario_id, initialize=False): self._report.append("End: %s" % _time.strftime("%c")) return emmebank_paths - def _copy_dir(self, src, dst, file_masks, dir_masks=None,check_metadata=False): + def _copy_dir(self, src, dst, file_masks, check_metadata=False): # windows xcopy is much faster than shutil # upgrading xcopy to a faster robocopy @@ -329,8 +329,7 @@ def _copy_dir(self, src, dst, file_masks, dir_masks=None,check_metadata=False): flags = ['/E', '/Z', '/MT:8'] try: exclude_file_list = file_masks - exclude_dir_list = dir_masks - output = _subprocess.check_output(['robocopy', src, dst] + flags + ["/XF"] + exclude_file_list + ["/XD"] + exclude_dir_list) + output = _subprocess.check_output(['robocopy', src, dst] + flags + ["/XF"] + exclude_file_list + ["/XD"] + exclude_file_list) self._report.append(output) self._report.append(_time.strftime("%c")) except _subprocess.CalledProcessError as error: