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

Class FolderMakeCommand

keepercommander/commands/folder.py:523–641  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

521
522
523class FolderMakeCommand(Command):
524 def get_parser(self):
525 return mkdir_parser
526
527 def execute(self, params, **kwargs):
528 base_folder = params.folder_cache[params.current_folder] if params.current_folder in params.folder_cache else params.root_folder
529
530 name = kwargs['folder'] if 'folder' in kwargs else None
531 if name:
532 rs = try_resolve_path(params, name)
533 if rs is not None:
534 base_folder, name = rs
535 if len(name) == 0:
536 logging.warning('mkdir: Folder "%s" already exists', kwargs['folder'])
537 return
538
539 shared_folder = kwargs['shared_folder'] if 'shared_folder' in kwargs else None
540 user_folder = kwargs['user_folder'] if 'user_folder' in kwargs else None
541
542 request = {"command": "folder_add"}
543 if shared_folder:
544 if base_folder.type in {BaseFolderNode.RootFolderType, BaseFolderNode.UserFolderType}:
545 request['folder_type'] = 'shared_folder'
546 grant = kwargs['grant'] if 'grant' in kwargs else None
547 for flag in ['manage_users', 'manage_records', 'can_share', 'can_edit']:
548 if grant or (flag in kwargs and kwargs[flag]):
549 request[flag] = True
550 else:
551 raise CommandError('mkdir', 'Shared folders cannot be nested')
552
553 elif user_folder:
554 if base_folder.type in {BaseFolderNode.SharedFolderType, BaseFolderNode.SharedFolderFolderType}:
555 request['folder_type'] = 'shared_folder_folder'
556 else:
557 request['folder_type'] = 'user_folder'
558
559 if request.get('folder_type') is None:
560 if base_folder.type in {BaseFolderNode.SharedFolderType, BaseFolderNode.SharedFolderFolderType}:
561 request['folder_type'] = 'shared_folder_folder'
562
563 if request.get('folder_type') is None:
564 inp = user_choice('Do you want to create a shared folder?', 'yn', default='n')
565 if inp.lower() == 'y':
566 request['folder_type'] = 'shared_folder'
567 pq = 'Default user permissions: (A)ll | Manage (U)sers / (R)ecords; Can (E)dit / (S)hare records?'
568 inp = user_choice(pq, 'aures', multi_choice=True)
569 request['manage_users'] = False
570 request['manage_records'] = False
571 request['can_edit'] = False
572 request['can_share'] = False
573 if len(inp) > 0:
574 s1 = set([x.lower() for x in inp])
575 if 'a' in s1:
576 request['manage_users'] = True
577 request['manage_records'] = True
578 request['can_edit'] = True
579 request['can_share'] = True
580 else:

Callers 6

register_commandsFunction · 0.85
executeMethod · 0.85
_ensure_folder_existsMethod · 0.85
ensure_pam_folder_pathFunction · 0.85
_create_shared_folderMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected