diff options
Diffstat (limited to 'app/lib/filebrowser/management/commands/fb_version_remove.py')
-rw-r--r-- | app/lib/filebrowser/management/commands/fb_version_remove.py | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/app/lib/filebrowser/management/commands/fb_version_remove.py b/app/lib/filebrowser/management/commands/fb_version_remove.py deleted file mode 100644 index 4e4767a..0000000 --- a/app/lib/filebrowser/management/commands/fb_version_remove.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -# Python -import os, re - -# Django -from django.core.management.base import BaseCommand, CommandError - -# Filebrowser -from filebrowser.settings import EXTENSION_LIST, EXCLUDE, MEDIA_ROOT, DIRECTORY, VERSIONS, EXTENSIONS - - -class Command(BaseCommand): - args = '<media_path>' - help = "Remove version files of a specific version in MEDIA_ROOT or subdirectory of MEDIA_ROOT" - - def handle(self, *args, **options): - - media_path = "" - - if len(args): - media_path = args[0] - - path = os.path.join(MEDIA_ROOT, media_path) - - if not os.path.isdir(path): - raise CommandError('<media_path> must be a directory in MEDIA_ROOT. "%s" is no directory.' % path); - - self.stdout.write("\n%s\n" % self.help) - self.stdout.write("in this case: %s\n" % path) - - # get suffix or prefix - default_prefix_or_suffix = "s" - while 1: - self.stdout.write('\nOlder versions of django-filebrowser used to prefix the filename with the version name.\n') - self.stdout.write('Current version of django-filebrowser adds the version name as suffix.\n') - prefix_or_suffix = raw_input('"p" for prefix or "s" for suffix (leave blank for "%s"): ' % default_prefix_or_suffix) - - if default_prefix_or_suffix and prefix_or_suffix == '': - prefix_or_suffix = default_prefix_or_suffix - if prefix_or_suffix != "s" and prefix_or_suffix != "p": - sys.stderr.write('Error: "p" and "s" are the only valid inputs.\n') - prefix_or_suffix = None - continue - break - - # get version name - while 1: - version_name = raw_input('\nversion name ("thumb", "big",...): ') - - if version_name == "": - self.stderr.write('Error: You have to enter a version name like "thumb" or "big".\n') - version_name = None - continue - else: - break - - # get list of all matching files - files = self.get_files(path, version_name, (prefix_or_suffix == "p")) - - # output (short version) of files to be deleted - if len(files) > 15: - self.stdout.write('\nFirst/Last 5 files to remove:\n') - for current_file in files[:5]: - self.stdout.write('%s\n' % current_file) - self.stdout.write('...\n') - self.stdout.write('...\n') - for current_file in files[len(files)-5:]: - self.stdout.write('%s\n' % current_file) - else: - self.stdout.write('\nFiles to remove:\n') - for current_file in files: - self.stdout.write('%s\n' % current_file) - - # no files...done - if len(files) == 0: - self.stdout.write('0 files removed.\n\n') - return - else: - self.stdout.write('%d file(s) will be removed.\n\n' % len(files)) - - # ask to make sure - do_remove = "" - self.stdout.write('Sure you want to delete these files?\n') - do_remove = raw_input('"y" for Yes or "n" for No (leave blank for No): ') - - # if "yes" we delete. any different case we finish without removing anything - if do_remove == "y": - for current_file in files: - os.remove(current_file) - self.stdout.write('%d file(s) removed.\n\n' % len(files)) - else: - self.stdout.write('No files removed.\n\n') - return - - - # get files mathing: - # path: search recoursive in this path (os.walk) - # version_name: string is pre/suffix of filename - # search_for_prefix: if true we match against the start of the filename (default is the end) - def get_files(self, path, version_name, search_for_prefix): - file_list = [] - # Precompile regular expressions - filter_re = [] - for exp in EXCLUDE: - filter_re.append(re.compile(exp)) - - # walkt throu the filebrowser directory - # for all/new files (except file versions itself and excludes) - for dirpath,dirnames,filenames in os.walk(path): - for filename in filenames: - filtered = False - # no "hidden" files (stating with ".") - if filename.startswith('.'): - continue - # check the exclude list - for re_prefix in filter_re: - if re_prefix.search(filename): - filtered = True - if filtered: - continue - (filename_noext, extension) = os.path.splitext(filename) - # images only - if extension in EXTENSIONS["Image"]: - # if image matches with version_name we add it to the file_list - if search_for_prefix: - if filename_noext.startswith(version_name + "_"): - file_list.append(os.path.join(dirpath, filename)) - elif filename_noext.endswith("_" + version_name): - file_list.append(os.path.join(dirpath, filename)) - - return file_list |