Browse Source

Do proper cleanup after rename

pull/4201/head
Ruud 11 years ago
parent
commit
db367a80d1
  1. 18
      couchpotato/core/plugins/base.py
  2. 10
      couchpotato/core/plugins/renamer.py

18
couchpotato/core/plugins/base.py

@ -146,21 +146,17 @@ class Plugin(object):
folder = sp(folder) folder = sp(folder)
for item in os.listdir(folder): for item in os.listdir(folder):
full_folder = os.path.join(folder, item) full_folder = sp(os.path.join(folder, item))
if not only_clean or (item in only_clean and os.path.isdir(full_folder)): if not only_clean or (item in only_clean and os.path.isdir(full_folder)):
for root, dirs, files in os.walk(full_folder): for subfolder, dirs, files in os.walk(full_folder, topdown = False):
for dir_name in dirs: try:
full_path = os.path.join(root, dir_name) os.rmdir(subfolder)
except:
if len(os.listdir(full_path)) == 0: if show_error:
try: log.info2('Couldn\'t remove directory %s: %s', (subfolder, traceback.format_exc()))
os.rmdir(full_path)
except:
if show_error:
log.info2('Couldn\'t remove directory %s: %s', (full_path, traceback.format_exc()))
try: try:
os.rmdir(folder) os.rmdir(folder)

10
couchpotato/core/plugins/renamer.py

@ -555,9 +555,9 @@ class Renamer(Plugin):
os.remove(src) os.remove(src)
parent_dir = os.path.dirname(src) parent_dir = os.path.dirname(src)
if delete_folders.count(parent_dir) == 0 and os.path.isdir(parent_dir) and \ if parent_dir not in delete_folders and os.path.isdir(parent_dir) and \
not isSubFolder(destination, parent_dir) and not isSubFolder(media_folder, parent_dir) and \ not isSubFolder(destination, parent_dir) and not isSubFolder(media_folder, parent_dir) and \
not isSubFolder(parent_dir, base_folder): isSubFolder(parent_dir, base_folder):
delete_folders.append(parent_dir) delete_folders.append(parent_dir)
@ -566,6 +566,7 @@ class Renamer(Plugin):
self.tagRelease(group = group, tag = 'failed_remove') self.tagRelease(group = group, tag = 'failed_remove')
# Delete leftover folder from older releases # Delete leftover folder from older releases
delete_folders = sorted(delete_folders, key = len, reverse = True)
for delete_folder in delete_folders: for delete_folder in delete_folders:
try: try:
self.deleteEmptyFolder(delete_folder, show_error = False) self.deleteEmptyFolder(delete_folder, show_error = False)
@ -620,8 +621,9 @@ class Renamer(Plugin):
group_folder = sp(os.path.join(base_folder, os.path.relpath(group['parentdir'], base_folder).split(os.path.sep)[0])) group_folder = sp(os.path.join(base_folder, os.path.relpath(group['parentdir'], base_folder).split(os.path.sep)[0]))
try: try:
log.info('Deleting folder: %s', group_folder) if self.conf('cleanup') or self.conf('move_leftover'):
self.deleteEmptyFolder(group_folder) log.info('Deleting folder: %s', group_folder)
self.deleteEmptyFolder(group_folder)
except: except:
log.error('Failed removing %s: %s', (group_folder, traceback.format_exc())) log.error('Failed removing %s: %s', (group_folder, traceback.format_exc()))

Loading…
Cancel
Save