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

Method execute

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

Source from the content-addressed store, hash-verified

2911 return f'Can {" & ".join([p for p in privs if p])}'
2912
2913 def execute(self, params, **kwargs):
2914 export_format = kwargs['format'] if 'format' in kwargs else None
2915 export_name = kwargs.get('output')
2916
2917 all_records = kwargs.get('all_records') is True
2918 records = {} # type: Dict[str, vault.KeeperRecord]
2919 containers = kwargs.get('folder')
2920 filter_folders = None
2921 versions = (0, 1, 2, 3, 5, 6) if all_records else (2, 3)
2922 if isinstance(containers, list) and len(containers) > 0:
2923 filter_folders = set()
2924 log_folder_fn = lambda f_name: logging.info(f'Folder {f_name} could not be found.')
2925 def on_folder_fn(f): # type: (BaseFolderNode) -> None
2926 filter_folders.add(f.uid)
2927 for record_uid in params.subfolder_record_cache.get(f.uid or '', []):
2928 if record_uid not in records:
2929 record = vault.KeeperRecord.load(params, record_uid)
2930 if not record:
2931 continue
2932 if not record.shared:
2933 continue
2934 if not all_records:
2935 ro = params.record_owner_cache.get(record.record_uid)
2936 if not ro or not ro.owner:
2937 continue
2938 if record.version not in versions:
2939 continue
2940 records[record.record_uid] = record
2941 for name in containers:
2942 folder_uids = get_folder_uids(params, name)
2943 if not folder_uids:
2944 log_folder_fn(name)
2945 continue
2946 for uid in folder_uids:
2947 FolderMixin.traverse_folder_tree(params, uid, on_folder_fn)
2948 else:
2949 for record in vault_extensions.find_records(params, record_version=versions):
2950 if not record.shared:
2951 continue
2952 if not all_records:
2953 ro = params.record_owner_cache.get(record.record_uid)
2954 if not ro or not ro.owner:
2955 continue
2956 records[record.record_uid] = record
2957
2958 expand_teams = kwargs.get('show_team_users') is True
2959 team_membership = None # type: Optional[Dict[str, List[str]]]
2960 if expand_teams:
2961 team_membership = {}
2962 if params.enterprise is not None:
2963 user_lookup = {x['enterprise_user_id']: x['username'] for x in params.enterprise['users'] if x.get('status') == 'active'}
2964 if 'team_users' in params.enterprise:
2965 for tu in params.enterprise['team_users']:
2966 team_uid = tu['team_uid']
2967 enterprise_user_id = tu['enterprise_user_id']
2968 if enterprise_user_id in user_lookup:
2969 members = team_membership.get(team_uid)
2970 if members is None:

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected