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

Method execute

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

Source from the content-addressed store, hash-verified

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

Tested by 1