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

Method execute

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

Source from the content-addressed store, hash-verified

2785 return f'Can {" & ".join([p for p in privs if p])}'
2786
2787 def execute(self, params, **kwargs):
2788 export_format = kwargs['format'] if 'format' in kwargs else None
2789 export_name = kwargs.get('output')
2790
2791 all_records = kwargs.get('all_records') is True
2792 records = {} # type: Dict[str, vault.KeeperRecord]
2793 containers = kwargs.get('folder')
2794 filter_folders = None
2795 versions = (0, 1, 2, 3, 5, 6) if all_records else (2, 3)
2796 if isinstance(containers, list) and len(containers) > 0:
2797 filter_folders = set()
2798 log_folder_fn = lambda f_name: logging.info(f'Folder {f_name} could not be found.')
2799 def on_folder_fn(f): # type: (BaseFolderNode) -> None
2800 filter_folders.add(f.uid)
2801 for record_uid in params.subfolder_record_cache.get(f.uid or '', []):
2802 if record_uid not in records:
2803 record = vault.KeeperRecord.load(params, record_uid)
2804 if not record:
2805 continue
2806 if not record.shared:
2807 continue
2808 if not all_records:
2809 ro = params.record_owner_cache.get(record.record_uid)
2810 if not ro or not ro.owner:
2811 continue
2812 if record.version not in versions:
2813 continue
2814 records[record.record_uid] = record
2815 for name in containers:
2816 folder_uids = get_folder_uids(params, name)
2817 if not folder_uids:
2818 log_folder_fn(name)
2819 continue
2820 for uid in folder_uids:
2821 FolderMixin.traverse_folder_tree(params, uid, on_folder_fn)
2822 else:
2823 for record in vault_extensions.find_records(params, record_version=versions):
2824 if not record.shared:
2825 continue
2826 if not all_records:
2827 ro = params.record_owner_cache.get(record.record_uid)
2828 if not ro or not ro.owner:
2829 continue
2830 records[record.record_uid] = record
2831
2832 expand_teams = kwargs.get('show_team_users') is True
2833 team_membership = None # type: Optional[Dict[str, List[str]]]
2834 if expand_teams:
2835 team_membership = {}
2836 if params.enterprise is not None:
2837 user_lookup = {x['enterprise_user_id']: x['username'] for x in params.enterprise['users'] if x.get('status') == 'active'}
2838 if 'team_users' in params.enterprise:
2839 for tu in params.enterprise['team_users']:
2840 team_uid = tu['team_uid']
2841 enterprise_user_id = tu['enterprise_user_id']
2842 if enterprise_user_id in user_lookup:
2843 members = team_membership.get(team_uid)
2844 if members is None:

Callers

nothing calls this directly

Calls 9

permissions_textMethod · 0.95
get_folder_uidsFunction · 0.85
find_foldersFunction · 0.85
getMethod · 0.80
traverse_folder_treeMethod · 0.80
get_record_sharesMethod · 0.80
get_teamMethod · 0.80
get_folder_pathFunction · 0.70
infoMethod · 0.45

Tested by

no test coverage detected