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

Method execute

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

Source from the content-addressed store, hash-verified

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:
581 if 'u' in s1:
582 request['manage_users'] = True
583 if 'r' in s1:
584 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