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

Method execute

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected