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

Method execute

keepercommander/commands/record.py:3142–3307  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

3140 return rm_parser
3141
3142 def execute(self, params, **kwargs):
3143 from ..enforcement import MasterPasswordReentryEnforcer
3144 if not MasterPasswordReentryEnforcer.check_and_enforce(params, "record_level"):
3145 raise CommandError('rm', 'Operation cancelled: Re-authentication failed')
3146
3147 records_to_delete = [] # type: List[Tuple[BaseFolderNode, str]]
3148 record_names = kwargs.get('records')
3149 rq_obj_limit = 999
3150 if not isinstance(record_names, list):
3151 if isinstance(record_names, str):
3152 record_names = [record_names]
3153 else:
3154 record_names = []
3155 record_name = kwargs.get('record')
3156 if isinstance(record_name, str):
3157 record_names.append(record_name)
3158
3159 for name in record_names:
3160 if name in params.record_cache:
3161 record_uid = name
3162 folders = list(find_all_folders(params, record_uid))
3163 if len(folders) > 0:
3164 for folder in folders:
3165 records_to_delete.append((folder, record_uid))
3166 else:
3167 records_to_delete.append((params.root_folder, record_uid))
3168 else:
3169 orig_len = len(records_to_delete)
3170 rs = try_resolve_path(params, name, find_all_matches=True)
3171 if rs:
3172 folders, record_name = rs
3173 if record_name:
3174 if not isinstance(folders, list):
3175 if isinstance(folders, BaseFolderNode):
3176 folders = [folders]
3177 else:
3178 folders = [params.root_folder]
3179 for folder in folders:
3180 if not isinstance(folder, BaseFolderNode):
3181 continue
3182 folder_uid = folder.uid or ''
3183 if folder_uid not in params.subfolder_record_cache:
3184 continue
3185 for record_uid in params.subfolder_record_cache[folder_uid]:
3186 if record_name == record_uid:
3187 records_to_delete.append((folder, record_uid))
3188 else:
3189 record = vault.KeeperRecord.load(params, record_uid)
3190 if record:
3191 if record.title.casefold() == record_name.casefold():
3192 records_to_delete.append((folder, record_uid))
3193 if len(records_to_delete) == orig_len:
3194 # Fallback: global title search so records in shared folders are also found.
3195 for record_uid in params.record_cache:
3196 record = vault.KeeperRecord.load(params, record_uid)
3197 if record and record.title.casefold() == name.casefold():
3198 for folder in find_all_folders(params, record_uid):
3199 records_to_delete.append((folder, record_uid))

Callers 5

remove_v5_appMethod · 0.95
executeMethod · 0.95
remove_duplicatesMethod · 0.95
delete_email_configFunction · 0.95

Calls 10

find_all_foldersFunction · 0.85
try_resolve_pathFunction · 0.85
check_and_enforceMethod · 0.80
getMethod · 0.80
warningMethod · 0.80
save_reused_pw_countMethod · 0.80
CommandErrorClass · 0.70
loadMethod · 0.45
infoMethod · 0.45
sync_downMethod · 0.45

Tested by 1