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

Method execute

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

Source from the content-addressed store, hash-verified

3260 return rm_parser
3261
3262 def execute(self, params, **kwargs):
3263 from ..enforcement import MasterPasswordReentryEnforcer
3264 if not MasterPasswordReentryEnforcer.check_and_enforce(params, "record_level"):
3265 raise CommandError('rm', 'Operation cancelled: Re-authentication failed')
3266
3267 records_to_delete = [] # type: List[Tuple[BaseFolderNode, str]]
3268 record_names = kwargs.get('records')
3269 rq_obj_limit = 999
3270 if not isinstance(record_names, list):
3271 if isinstance(record_names, str):
3272 record_names = [record_names]
3273 else:
3274 record_names = []
3275 record_name = kwargs.get('record')
3276 if isinstance(record_name, str):
3277 record_names.append(record_name)
3278
3279 for name in record_names:
3280 if name in params.record_cache:
3281 record_uid = name
3282 folders = list(find_all_folders(params, record_uid))
3283 if len(folders) > 0:
3284 for folder in folders:
3285 records_to_delete.append((folder, record_uid))
3286 else:
3287 records_to_delete.append((params.root_folder, record_uid))
3288 else:
3289 orig_len = len(records_to_delete)
3290 rs = try_resolve_path(params, name, find_all_matches=True)
3291 if rs:
3292 folders, record_name = rs
3293 if record_name:
3294 if not isinstance(folders, list):
3295 if isinstance(folders, BaseFolderNode):
3296 folders = [folders]
3297 else:
3298 folders = [params.root_folder]
3299 for folder in folders:
3300 if not isinstance(folder, BaseFolderNode):
3301 continue
3302 folder_uid = folder.uid or ''
3303 if folder_uid not in params.subfolder_record_cache:
3304 continue
3305 for record_uid in params.subfolder_record_cache[folder_uid]:
3306 if record_name == record_uid:
3307 records_to_delete.append((folder, record_uid))
3308 else:
3309 record = vault.KeeperRecord.load(params, record_uid)
3310 if record:
3311 if record.title.casefold() == record_name.casefold():
3312 records_to_delete.append((folder, record_uid))
3313 if len(records_to_delete) == orig_len:
3314 # Fallback: global title search so records in shared folders are also found.
3315 for record_uid in params.record_cache:
3316 record = vault.KeeperRecord.load(params, record_uid)
3317 if record and record.title.casefold() == name.casefold():
3318 for folder in find_all_folders(params, record_uid):
3319 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