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

Method execute

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

Source from the content-addressed store, hash-verified

2215 return trash_list_parser
2216
2217 def execute(self, params, **kwargs):
2218 deleted_records = self.get_deleted_records(params, kwargs.get('reload', False))
2219 orphaned_records = self.get_orphaned_records(params)
2220 shared_folders = self.get_shared_folders(params)
2221 verbose = kwargs.get('verbose') is True
2222
2223 if len(deleted_records) == 0 and len(orphaned_records) == 0 and len(shared_folders) == 0:
2224 fmt = kwargs.get('format', 'table')
2225 return handle_empty_result(fmt, 'Trash is empty', kwargs.get('output'))
2226
2227 pattern = kwargs.get('pattern')
2228 if pattern:
2229 if pattern == '*':
2230 pattern = None
2231
2232 title_pattern = None
2233 if pattern:
2234 title_pattern = re.compile(fnmatch.translate(pattern), re.IGNORECASE)
2235
2236 record_table = []
2237 headers = ['Folder UID', 'Record UID', 'Name', 'Record Type', 'Deleted At', 'Status']
2238
2239 for shared in (False, True):
2240 for rec in (orphaned_records if shared else deleted_records).values():
2241 record = vault.KeeperRecord.load(params, rec)
2242
2243 if pattern:
2244 if pattern == record.record_uid:
2245 pass
2246 elif title_pattern and title_pattern.match(record.title):
2247 pass
2248 else:
2249 continue
2250
2251 date_deleted = None
2252 if shared:
2253 status = 'Share'
2254 else:
2255 status = 'Record'
2256 dd = rec.get('date_deleted', 0)
2257 if dd:
2258 date_deleted = datetime.datetime.fromtimestamp(int(dd / 1000))
2259 record_table.append(['', record.record_uid, record.title, record.record_type, date_deleted, status])
2260
2261 record_table.sort(key=lambda x: x[2].casefold())
2262 folder_table = []
2263
2264 if shared_folders and len(shared_folders) > 0:
2265 folders = shared_folders.get('folders', {}) # type: Dict[str, dict]
2266 records = shared_folders.get('records', {}) # type: Dict[str, dict]
2267 if verbose:
2268 for rec in records.values():
2269 folder_uid = rec.get('folder_uid')
2270 record_uid = rec.get('record_uid')
2271 record = vault.KeeperRecord.load(params, rec)
2272 if not record:
2273 continue
2274

Callers

nothing calls this directly

Calls 7

handle_empty_resultFunction · 0.85
get_deleted_recordsMethod · 0.80
get_orphaned_recordsMethod · 0.80
getMethod · 0.45
get_shared_foldersMethod · 0.45
loadMethod · 0.45
debugMethod · 0.45

Tested by

no test coverage detected