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

Method execute

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

Source from the content-addressed store, hash-verified

2686 return record_history_parser
2687
2688 def execute(self, params, **kwargs):
2689 record_name = kwargs['record'] if 'record' in kwargs else None
2690 if not record_name:
2691 self.get_parser().print_help()
2692 return
2693
2694 verbose = kwargs.get('verbose') or False
2695
2696 record_uid = None
2697 if record_name in params.record_cache:
2698 record_uid = record_name
2699 else:
2700 rs = try_resolve_path(params, record_name)
2701 if rs is not None:
2702 folder, record_name = rs
2703 if folder is not None and record_name is not None:
2704 folder_uid = folder.uid or ''
2705 if folder_uid in params.subfolder_record_cache:
2706 for uid in params.subfolder_record_cache[folder_uid]:
2707 r = api.get_record(params, uid)
2708 if r.title.lower() == record_name.lower():
2709 record_uid = uid
2710 break
2711
2712 if record_uid is None:
2713 raise CommandError('history', 'Enter name of existing record')
2714
2715 history = self.load_record_history(params, record_uid)
2716 if isinstance(history, list):
2717 action = kwargs.get('action') or 'list'
2718 length = len(history)
2719 if length == 0:
2720 logging.info('Record does not have history of edit')
2721 return
2722
2723 if action == 'list':
2724 fmt = kwargs.get('format') or ''
2725 headers = ['version', 'modified_by', 'time_modified']
2726 if fmt != 'json':
2727 headers = [base.field_to_title(x) for x in headers]
2728 rows = []
2729 for i, version in enumerate(history):
2730 dt = None
2731 if 'client_modified_time' in version:
2732 dt = datetime.datetime.fromtimestamp(int(version['client_modified_time'] / 1000.0))
2733 rows.append([f'V.{length-i}' if i > 0 else 'Current', version.get('user_name') or '', dt])
2734 return base.dump_report_data(rows, headers, fmt=fmt, filename=kwargs.get('output'))
2735
2736 revision = kwargs.get('revision') or 0
2737 if revision < 0 or revision >= length:
2738 raise ValueError(f'Invalid revision {revision}: valid revisions 1..{length - 1}')
2739
2740 index = 0 if revision == 0 else length - revision
2741
2742 if action == 'view':
2743 rev = history[index]
2744 record = vault.KeeperRecord.load(params, rev)
2745 fmt = kwargs.get('format') or ''

Callers

nothing calls this directly

Calls 12

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

Tested by

no test coverage detected