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

Method execute

keepercommander/commands/folder.py:553–667  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

551 return mkdir_parser
552
553 def execute(self, params, **kwargs):
554 base_folder = params.folder_cache[params.current_folder] if params.current_folder in params.folder_cache else params.root_folder
555
556 name = kwargs['folder'] if 'folder' in kwargs else None
557 if name:
558 rs = try_resolve_path(params, name)
559 if rs is not None:
560 base_folder, name = rs
561 if len(name) == 0:
562 logging.warning('mkdir: Folder "%s" already exists', kwargs['folder'])
563 return
564
565 shared_folder = kwargs['shared_folder'] if 'shared_folder' in kwargs else None
566 user_folder = kwargs['user_folder'] if 'user_folder' in kwargs else None
567
568 request = {"command": "folder_add"}
569 if shared_folder:
570 if base_folder.type in {BaseFolderNode.RootFolderType, BaseFolderNode.UserFolderType}:
571 request['folder_type'] = 'shared_folder'
572 grant = kwargs['grant'] if 'grant' in kwargs else None
573 for flag in ['manage_users', 'manage_records', 'can_share', 'can_edit']:
574 if grant or (flag in kwargs and kwargs[flag]):
575 request[flag] = True
576 else:
577 raise CommandError('mkdir', 'Shared folders cannot be nested')
578
579 elif user_folder:
580 if base_folder.type in {BaseFolderNode.SharedFolderType, BaseFolderNode.SharedFolderFolderType}:
581 request['folder_type'] = 'shared_folder_folder'
582 else:
583 request['folder_type'] = 'user_folder'
584
585 if request.get('folder_type') is None:
586 if base_folder.type in {BaseFolderNode.SharedFolderType, BaseFolderNode.SharedFolderFolderType}:
587 request['folder_type'] = 'shared_folder_folder'
588
589 if request.get('folder_type') is None:
590 inp = user_choice('Do you want to create a shared folder?', 'yn', default='n')
591 if inp.lower() == 'y':
592 request['folder_type'] = 'shared_folder'
593 pq = 'Default user permissions: (A)ll | Manage (U)sers / (R)ecords; Can (E)dit / (S)hare records?'
594 inp = user_choice(pq, 'aures', multi_choice=True)
595 request['manage_users'] = False
596 request['manage_records'] = False
597 request['can_edit'] = False
598 request['can_share'] = False
599 if len(inp) > 0:
600 s1 = set([x.lower() for x in inp])
601 if 'a' in s1:
602 request['manage_users'] = True
603 request['manage_records'] = True
604 request['can_edit'] = True
605 request['can_share'] = True
606 else:
607 if 'u' in s1:
608 request['manage_users'] = True
609 if 'r' in s1:
610 request['manage_records'] = True

Callers 3

test_make_folderMethod · 0.95
executeMethod · 0.95
_ensure_folder_existsMethod · 0.95

Calls 7

try_resolve_pathFunction · 0.85
user_choiceFunction · 0.85
warningMethod · 0.80
getMethod · 0.80
CommandErrorClass · 0.70
get_folder_pathFunction · 0.70
infoMethod · 0.45

Tested by 1

test_make_folderMethod · 0.76