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

Class RecordRemoveCommand

keepercommander/commands/record.py:3138–3307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3136
3137
3138class RecordRemoveCommand(Command):
3139 def get_parser(self):
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:

Callers 5

register_commandsFunction · 0.85
executeMethod · 0.85
remove_duplicatesMethod · 0.85
pam_configuration_removeFunction · 0.85
delete_email_configFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected