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

Method execute

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

Source from the content-addressed store, hash-verified

1276 return arrange_folders_parser
1277
1278 def execute(self, params, **kwargs):
1279 pattern = kwargs.get('pattern')
1280 regex = re.compile(pattern, re.IGNORECASE).match
1281
1282 group_folders = {}
1283 for f_uid in params.root_folder.subfolders:
1284 if f_uid in params.shared_folder_cache:
1285 shared_folder = api.get_shared_folder(params, f_uid)
1286 m = regex(shared_folder.name)
1287 if m:
1288 sub_folder = m[1]
1289 logging.info('Shared folder \"%s\" will be moved to \"%s\"', shared_folder.name, sub_folder)
1290 if sub_folder.lower() not in group_folders:
1291 group_folders[sub_folder.lower()] = sub_folder
1292 else:
1293 logging.info('Shared folder \"%s\" does not match pattern. Skipping', shared_folder.name)
1294 if not group_folders:
1295 logging.info('There are no shared folders found for pattern \"%s\"', pattern)
1296 return
1297
1298 folder = kwargs.get('folder')
1299 if not folder:
1300 raise CommandError(self.get_parser().prog, 'Target path should be existing record or folder')
1301
1302 if not kwargs.get('force'):
1303 answer = user_choice('Do you want to proceed?', 'yn', default='n')
1304 if answer.lower() == 'y':
1305 answer = 'yes'
1306 if answer.lower() != 'yes':
1307 return
1308
1309 folder_uid = None
1310 for f_uid in params.root_folder.subfolders:
1311 if folder_uid:
1312 f = params.folder_cache[folder_uid]
1313 if f.type != BaseFolderNode.UserFolderType:
1314 raise CommandError(self.get_parser().prog, f'\"{f.name}\" cannot be shared folder')
1315 break
1316 if f_uid == folder:
1317 folder_uid = f_uid
1318 elif f_uid in params.folder_cache:
1319 f = params.folder_cache[f_uid]
1320 if f.name.lower() == folder.lower():
1321 folder_uid = f.uid
1322
1323 cd_command = FolderCdCommand()
1324 cd_command.execute(params, folder='/')
1325
1326 mkdir_command = FolderMakeCommand()
1327 if not folder_uid:
1328 mkdir_command.execute(params, folder=folder, user_folder=True)
1329 folder_uid = params.environment_variables[LAST_FOLDER_UID]
1330 api.sync_down(params)
1331
1332 cd_command.execute(params, folder=folder_uid)
1333 subfolders = {x for x in params.folder_cache[folder_uid].subfolders if x in params.folder_cache}
1334 for key in list(group_folders.keys()):
1335 for f_uid in subfolders:

Callers

nothing calls this directly

Calls 12

get_parserMethod · 0.95
executeMethod · 0.95
executeMethod · 0.95
executeMethod · 0.95
user_choiceFunction · 0.85
FolderCdCommandClass · 0.85
FolderMakeCommandClass · 0.85
FolderMoveCommandClass · 0.85
getMethod · 0.80
CommandErrorClass · 0.70
infoMethod · 0.45
sync_downMethod · 0.45

Tested by

no test coverage detected