Fix filter-by-ext

This commit is contained in:
Cédric Leporcq 2021-08-14 21:35:12 +02:00
parent 08aaa0c5c4
commit 3bd06f0321
1 changed files with 10 additions and 15 deletions

View File

@ -27,13 +27,19 @@ class FileSystem(object):
"""A class for interacting with the file system.""" """A class for interacting with the file system."""
def __init__(self, cache=False, day_begins=0, dry_run=False, exclude_regex_list=set(), def __init__(self, cache=False, day_begins=0, dry_run=False, exclude_regex_list=set(),
filter_by_ext=(), logger=logging.getLogger(), max_deep=None, filter_by_ext=set(), logger=logging.getLogger(), max_deep=None,
mode='copy', path_format=None): mode='copy', path_format=None):
self.cache = cache self.cache = cache
self.day_begins = day_begins self.day_begins = day_begins
self.dry_run = dry_run self.dry_run = dry_run
self.exclude_regex_list = exclude_regex_list self.exclude_regex_list = exclude_regex_list
self.filter_by_ext = filter_by_ext
if '%media' in filter_by_ext:
filter_by_ext.remove('%media')
self.filter_by_ext = filter_by_ext.union(media.extensions)
else:
self.filter_by_ext = filter_by_ext
self.items = self.get_items() self.items = self.get_items()
self.logger = logger self.logger = logger
self.max_deep = max_deep self.max_deep = max_deep
@ -507,24 +513,13 @@ class FileSystem(object):
return self.summary, has_errors return self.summary, has_errors
def get_files_in_path(self, path, extensions=set()):
def get_files_in_path(self, path, extensions=False):
"""Recursively get files which match a path and extension. """Recursively get files which match a path and extension.
:param str path string: Path to start recursive file listing :param str path string: Path to start recursive file listing
:param tuple(str) extensions: File extensions to include (whitelist) :param tuple(str) extensions: File extensions to include (whitelist)
:returns: file_path, subdirs :returns: file_path, subdirs
""" """
if self.filter_by_ext != () and not extensions:
# Filtering files by extensions.
if '%media' in self.filter_by_ext:
extensions = set()
subclasses = get_all_subclasses()
for cls in subclasses:
extensions.update(cls.extensions)
else:
extensions = self.filter_by_ext
file_list = set() file_list = set()
if os.path.isfile(path): if os.path.isfile(path):
if not self.should_exclude(path, self.exclude_regex_list, True): if not self.should_exclude(path, self.exclude_regex_list, True):
@ -547,7 +542,7 @@ class FileSystem(object):
# Then append to the list # Then append to the list
filename_path = os.path.join(dirname, filename) filename_path = os.path.join(dirname, filename)
if ( if (
extensions == False extensions == set()
or os.path.splitext(filename)[1][1:].lower() in extensions or os.path.splitext(filename)[1][1:].lower() in extensions
and not self.should_exclude(filename_path, compiled_regex_list, False) and not self.should_exclude(filename_path, compiled_regex_list, False)
): ):