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

Method execute

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

Source from the content-addressed store, hash-verified

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