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

Method execute

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

Source from the content-addressed store, hash-verified

2615 return record_history_parser
2616
2617 def execute(self, params, **kwargs):
2618 record_name = kwargs['record'] if 'record' in kwargs else None
2619 if not record_name:
2620 self.get_parser().print_help()
2621 return
2622
2623 verbose = kwargs.get('verbose') or False
2624
2625 record_uid = None
2626 if record_name in params.record_cache:
2627 record_uid = record_name
2628 else:
2629 rs = try_resolve_path(params, record_name)
2630 if rs is not None:
2631 folder, record_name = rs
2632 if folder is not None and record_name is not None:
2633 folder_uid = folder.uid or ''
2634 if folder_uid in params.subfolder_record_cache:
2635 for uid in params.subfolder_record_cache[folder_uid]:
2636 r = api.get_record(params, uid)
2637 if r.title.lower() == record_name.lower():
2638 record_uid = uid
2639 break
2640
2641 if record_uid is None:
2642 raise CommandError('history', 'Enter name of existing record')
2643
2644 history = self.load_record_history(params, record_uid)
2645 if isinstance(history, list):
2646 action = kwargs.get('action') or 'list'
2647 length = len(history)
2648 if length == 0:
2649 logging.info('Record does not have history of edit')
2650 return
2651
2652 if action == 'list':
2653 fmt = kwargs.get('format') or ''
2654 headers = ['version', 'modified_by', 'time_modified']
2655 if fmt != 'json':
2656 headers = [base.field_to_title(x) for x in headers]
2657 rows = []
2658 for i, version in enumerate(history):
2659 dt = None
2660 if 'client_modified_time' in version:
2661 dt = datetime.datetime.fromtimestamp(int(version['client_modified_time'] / 1000.0))
2662 rows.append([f'V.{length-i}' if i > 0 else 'Current', version.get('user_name') or '', dt])
2663 return base.dump_report_data(rows, headers, fmt=fmt, filename=kwargs.get('output'))
2664
2665 revision = kwargs.get('revision') or 0
2666 if revision < 0 or revision >= length:
2667 raise ValueError(f'Invalid revision {revision}: valid revisions 1..{length - 1}')
2668
2669 index = 0 if revision == 0 else length - revision
2670
2671 if action == 'view':
2672 rev = history[index]
2673 record = vault.KeeperRecord.load(params, rev)
2674

Callers

nothing calls this directly

Calls 11

get_parserMethod · 0.95
try_resolve_pathFunction · 0.85
getMethod · 0.80
get_recordMethod · 0.80
load_record_historyMethod · 0.80
queue_audit_eventMethod · 0.80
CommandErrorClass · 0.70
print_helpMethod · 0.45
infoMethod · 0.45
loadMethod · 0.45
enumerate_fieldsMethod · 0.45

Tested by

no test coverage detected