(self, params, **kwargs)
| 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: |
nothing calls this directly
no test coverage detected