(self, params, **kwargs)
| 1302 | return arrange_folders_parser |
| 1303 | |
| 1304 | def execute(self, params, **kwargs): |
| 1305 | pattern = kwargs.get('pattern') |
| 1306 | regex = re.compile(pattern, re.IGNORECASE).match |
| 1307 | |
| 1308 | group_folders = {} |
| 1309 | for f_uid in params.root_folder.subfolders: |
| 1310 | if f_uid in params.shared_folder_cache: |
| 1311 | shared_folder = api.get_shared_folder(params, f_uid) |
| 1312 | m = regex(shared_folder.name) |
| 1313 | if m: |
| 1314 | sub_folder = m[1] |
| 1315 | logging.info('Shared folder \"%s\" will be moved to \"%s\"', shared_folder.name, sub_folder) |
| 1316 | if sub_folder.lower() not in group_folders: |
| 1317 | group_folders[sub_folder.lower()] = sub_folder |
| 1318 | else: |
| 1319 | logging.info('Shared folder \"%s\" does not match pattern. Skipping', shared_folder.name) |
| 1320 | if not group_folders: |
| 1321 | logging.info('There are no shared folders found for pattern \"%s\"', pattern) |
| 1322 | return |
| 1323 | |
| 1324 | folder = kwargs.get('folder') |
| 1325 | if not folder: |
| 1326 | raise CommandError(self.get_parser().prog, 'Target path should be existing record or folder') |
| 1327 | |
| 1328 | if not kwargs.get('force'): |
| 1329 | answer = user_choice('Do you want to proceed?', 'yn', default='n') |
| 1330 | if answer.lower() == 'y': |
| 1331 | answer = 'yes' |
| 1332 | if answer.lower() != 'yes': |
| 1333 | return |
| 1334 | |
| 1335 | folder_uid = None |
| 1336 | for f_uid in params.root_folder.subfolders: |
| 1337 | if folder_uid: |
| 1338 | f = params.folder_cache[folder_uid] |
| 1339 | if f.type != BaseFolderNode.UserFolderType: |
| 1340 | raise CommandError(self.get_parser().prog, f'\"{f.name}\" cannot be shared folder') |
| 1341 | break |
| 1342 | if f_uid == folder: |
| 1343 | folder_uid = f_uid |
| 1344 | elif f_uid in params.folder_cache: |
| 1345 | f = params.folder_cache[f_uid] |
| 1346 | if f.name.lower() == folder.lower(): |
| 1347 | folder_uid = f.uid |
| 1348 | |
| 1349 | cd_command = FolderCdCommand() |
| 1350 | cd_command.execute(params, folder='/') |
| 1351 | |
| 1352 | mkdir_command = FolderMakeCommand() |
| 1353 | if not folder_uid: |
| 1354 | mkdir_command.execute(params, folder=folder, user_folder=True) |
| 1355 | folder_uid = params.environment_variables[LAST_FOLDER_UID] |
| 1356 | api.sync_down(params) |
| 1357 | |
| 1358 | cd_command.execute(params, folder=folder_uid) |
| 1359 | subfolders = {x for x in params.folder_cache[folder_uid].subfolders if x in params.folder_cache} |
| 1360 | for key in list(group_folders.keys()): |
| 1361 | for f_uid in subfolders: |
nothing calls this directly
no test coverage detected