MCPcopy Create free account
hub / github.com/Keeper-Security/Commander / execute

Method execute

keepercommander/commands/folder.py:824–1038  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

822 return True
823
824 def execute(self, params, **kwargs):
825 src_path = kwargs['src'] if 'src' in kwargs else None
826 dst_path = kwargs['dst'] if 'dst' in kwargs else None
827
828 if not src_path or not dst_path:
829 parser = self.get_parser()
830 parser.print_help()
831 return
832
833 if dst_path in params.folder_cache:
834 dst_folder = params.folder_cache[dst_path]
835 else:
836 dst = try_resolve_path(params, dst_path)
837 if dst is None:
838 raise CommandError('mv', 'Destination path should be existing folder')
839 dst_folder, name = dst
840 if len(name) > 0:
841 raise CommandError('mv', 'Destination path should be existing folder')
842
843 source = [] # type: List[Tuple[BaseFolderNode, Optional[str]]] # (folder, record_uid)
844 if src_path in params.record_cache: # record UID
845 record_uid = src_path
846 src_folder = None
847 folder_uids = list(find_folders(params, record_uid))
848 if folder_uids:
849 if params.current_folder:
850 if params.current_folder in folder_uids:
851 src_folder = params.folder_cache[params.current_folder]
852 else:
853 if '' in params.subfolder_record_cache:
854 if record_uid in params.subfolder_record_cache['']:
855 src_folder = params.root_folder
856 if not src_folder:
857 src_folder = params.folder_cache[folder_uids[0]]
858 else:
859 src_folder = params.root_folder
860
861 if src_folder is dst_folder:
862 raise CommandError('mv', 'Source and Destination folders are the same')
863 source.append((src_folder, record_uid))
864 elif src_path in params.folder_cache: # folder UID
865 src_folder = params.folder_cache[src_path]
866 if src_folder is dst_folder:
867 raise CommandError('mv', 'Source and Destination folders are the same')
868 source.append((src_folder, None))
869 else:
870 src = try_resolve_path(params, src_path)
871 if src is None:
872 raise CommandError('mv', 'Source path should be existing record or folder')
873
874 src_folder, name = src
875 if src_folder is dst_folder:
876 raise CommandError('mv', 'Source and Destination folders are the same')
877
878 if len(name) > 0:
879 regex = re.compile(fnmatch.translate(name), re.IGNORECASE).match
880 src_folder_uid = src_folder.uid or ''
881 if kwargs.get('shared_folder') or kwargs.get('user_folder'):

Calls 12

get_parserMethod · 0.95
is_moveMethod · 0.95
try_resolve_pathFunction · 0.85
find_foldersFunction · 0.85
getMethod · 0.80
get_transition_keyMethod · 0.80
CommandErrorClass · 0.70
print_helpMethod · 0.45
loadMethod · 0.45
infoMethod · 0.45
addMethod · 0.45