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

Function export

keepercommander/importer/imp_exp.py:246–480  ·  view source on GitHub ↗

Export data from Vault to a file in an assortment of formats.

(params, file_format, filename, **kwargs)

Source from the content-addressed store, hash-verified

244
245
246def export(params, file_format, filename, **kwargs):
247 # type: (KeeperParams, str, str, ...) -> None
248 """Export data from Vault to a file in an assortment of formats."""
249 sync_down.sync_down(params)
250
251 exporter = exporter_for_format(file_format)() # type: BaseExporter
252 if 'max_size' in kwargs:
253 exporter.max_size = int(kwargs['max_size'])
254
255 save_in_vault = kwargs.get('save_in_vault') is True
256 if save_in_vault and file_format != 'keepass':
257 save_in_vault = False
258
259 if not save_in_vault:
260 if not filename and not exporter.supports_stdout():
261 raise CommandError('export', 'File name parameter is required.')
262
263 folder_filter = None # type: Optional[Set[str]]
264 record_filter = None # type: Optional[Set[str]]
265 folder_path = kwargs.get('folder')
266 if folder_path:
267 folder = None # type: Optional[BaseFolderNode]
268 rs = try_resolve_path(params, folder_path)
269 if rs:
270 f, rest = rs
271 if not rest:
272 folder = f
273 if not folder:
274 logging.warning('Folder \"%s\" not found', folder_path)
275 return
276 folder_filter = set()
277 record_filter = set()
278
279 def on_folder(base_folder): # type: (BaseFolderNode) -> None
280 folder_filter.add(base_folder.uid)
281 if base_folder.uid in params.subfolder_record_cache:
282 record_filter.update(params.subfolder_record_cache[base_folder.uid])
283 base.FolderMixin.traverse_folder_tree(params, folder.uid, on_folder)
284
285 to_export = []
286 if exporter.has_shared_folders():
287 shfolders = [api.get_shared_folder(params, sf_uid) for sf_uid in params.shared_folder_cache]
288 shfolders.sort(key=lambda x: x.name.lower(), reverse=False)
289 for f in shfolders:
290 if folder_filter:
291 if f.shared_folder_uid not in folder_filter:
292 continue
293
294 fol = ImportSharedFolder()
295 fol.uid = f.shared_folder_uid
296 fol.path = get_folder_path(params, f.shared_folder_uid)
297 fol.manage_users = f.default_manage_users
298 fol.manage_records = f.default_manage_records
299 fol.can_edit = f.default_can_edit
300 fol.can_share = f.default_can_share
301 fol.permissions = []
302 if f.teams:
303 for team in f.teams:

Callers

nothing calls this directly

Calls 15

exporter_for_formatFunction · 0.85
try_resolve_pathFunction · 0.85
convert_keeper_recordFunction · 0.85
KeeperV2AttachmentClass · 0.85
KeeperV3AttachmentClass · 0.85
find_foldersFunction · 0.85
get_import_folderFunction · 0.85
getMethod · 0.80
warningMethod · 0.80
traverse_folder_treeMethod · 0.80
formatMethod · 0.80
upload_attachmentsMethod · 0.80

Tested by

no test coverage detected