From 1557778121e5d04a80f1f7c81eeb4b47400939e4 Mon Sep 17 00:00:00 2001 From: William Schwartz Date: Wed, 30 Dec 2020 11:49:58 -0600 Subject: [PATCH] Refs #32317 -- Simplified find_fixtures() in loaddata command. This always replaces 'fixture_name' with its base name, which preserves the previous behavior, because os.path.basename() was not called only on relative paths without os.path.sep i.e. when base name was equal to the file name. This also changes os.path.dirname() and os.path.basename() calls to the equivalent os.path.split() call. --- django/core/management/commands/loaddata.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index 096d2c7aeb6..021c6b7ee1b 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -235,15 +235,14 @@ class Command(BaseCommand): if self.verbosity >= 2: self.stdout.write("Loading '%s' fixtures..." % fixture_name) + dirname, basename = os.path.split(fixture_name) if os.path.isabs(fixture_name): - fixture_dirs = [os.path.dirname(fixture_name)] - fixture_name = os.path.basename(fixture_name) + fixture_dirs = [dirname] else: fixture_dirs = self.fixture_dirs if os.path.sep in os.path.normpath(fixture_name): - fixture_dirs = [os.path.join(dir_, os.path.dirname(fixture_name)) - for dir_ in fixture_dirs] - fixture_name = os.path.basename(fixture_name) + fixture_dirs = [os.path.join(dir_, dirname) for dir_ in fixture_dirs] + fixture_name = basename suffixes = ( '.'.join(ext for ext in combo if ext)