Răsfoiți Sursa

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.
William Schwartz 4 ani în urmă
părinte
comite
1557778121
1 a modificat fișierele cu 4 adăugiri și 5 ștergeri
  1. 4 5
      django/core/management/commands/loaddata.py

+ 4 - 5
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)