Loading django/core/management/commands/loaddata.py +5 −1 Original line number Diff line number Diff line Loading @@ -175,11 +175,15 @@ class Command(BaseCommand): if self.verbosity >= 2: self.stdout.write("Loading '%s' fixtures..." % fixture_name) if os.path.sep in fixture_name: if os.path.isabs(fixture_name): fixture_dirs = [os.path.dirname(fixture_name)] fixture_name = os.path.basename(fixture_name) else: fixture_dirs = self.fixture_dirs if os.path.sep in 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) suffixes = ('.'.join(ext for ext in combo if ext) for combo in product(databases, ser_fmts, cmp_fmts)) Loading docs/releases/1.6.1.txt +2 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,8 @@ Bug fixes * Fixed ``django.contrib.humanize`` translations where the unicode sequence for the non-breaking space was returned verbatim (#21415). * Fixed :djadmin:`loaddata` error when fixture file name contained any dots non related to file extensions (#21457). non related to file extensions (#21457) or when fixture path was relative but located in a subdirectory (#21551). * Fixed display of inline instances in formsets when parent has 0 for primary key (#21472). * Fixed a regression where custom querysets for foreign keys were overwritten Loading tests/fixtures_regress/fixtures_1/inner/absolute.json 0 → 100644 +9 −0 Original line number Diff line number Diff line [ { "pk": "1", "model": "fixtures_regress.absolute", "fields": { "name": "Load Absolute Path Test" } } ] tests/fixtures_regress/tests.py +10 −7 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ # Unittests for fixtures. from __future__ import absolute_import, unicode_literals import json import os import re import warnings Loading @@ -19,12 +20,13 @@ from django.utils.encoding import force_text from django.utils._os import upath from django.utils import six from django.utils.six import PY3, StringIO import json from .models import (Animal, Stuff, Absolute, Parent, Child, Article, Widget, Store, Person, Book, NKChild, RefToNKChild, Circle1, Circle2, Circle3, ExternalDependency, Thingy) _cur_dir = os.path.dirname(os.path.abspath(upath(__file__))) class TestFixtures(TestCase): Loading Loading @@ -150,12 +152,11 @@ class TestFixtures(TestCase): ) self.assertEqual(Absolute.objects.count(), 1) def test_relative_path(self): directory = os.path.dirname(upath(__file__)) relative_path = os.path.join('fixtures', 'absolute.json') def test_relative_path(self, path=['fixtures', 'absolute.json']): relative_path = os.path.join(*path) cwd = os.getcwd() try: os.chdir(directory) os.chdir(_cur_dir) management.call_command( 'loaddata', relative_path, Loading @@ -165,6 +166,10 @@ class TestFixtures(TestCase): os.chdir(cwd) self.assertEqual(Absolute.objects.count(), 1) @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1')]) def test_relative_path_in_fixture_dirs(self): self.test_relative_path(path=['inner', 'absolute.json']) def test_path_containing_dots(self): management.call_command( 'loaddata', Loading Loading @@ -412,8 +417,6 @@ class TestFixtures(TestCase): verbosity=0, ) _cur_dir = os.path.dirname(os.path.abspath(upath(__file__))) @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1'), os.path.join(_cur_dir, 'fixtures_2')]) def test_loaddata_forward_refs_split_fixtures(self): Loading Loading
django/core/management/commands/loaddata.py +5 −1 Original line number Diff line number Diff line Loading @@ -175,11 +175,15 @@ class Command(BaseCommand): if self.verbosity >= 2: self.stdout.write("Loading '%s' fixtures..." % fixture_name) if os.path.sep in fixture_name: if os.path.isabs(fixture_name): fixture_dirs = [os.path.dirname(fixture_name)] fixture_name = os.path.basename(fixture_name) else: fixture_dirs = self.fixture_dirs if os.path.sep in 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) suffixes = ('.'.join(ext for ext in combo if ext) for combo in product(databases, ser_fmts, cmp_fmts)) Loading
docs/releases/1.6.1.txt +2 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,8 @@ Bug fixes * Fixed ``django.contrib.humanize`` translations where the unicode sequence for the non-breaking space was returned verbatim (#21415). * Fixed :djadmin:`loaddata` error when fixture file name contained any dots non related to file extensions (#21457). non related to file extensions (#21457) or when fixture path was relative but located in a subdirectory (#21551). * Fixed display of inline instances in formsets when parent has 0 for primary key (#21472). * Fixed a regression where custom querysets for foreign keys were overwritten Loading
tests/fixtures_regress/fixtures_1/inner/absolute.json 0 → 100644 +9 −0 Original line number Diff line number Diff line [ { "pk": "1", "model": "fixtures_regress.absolute", "fields": { "name": "Load Absolute Path Test" } } ]
tests/fixtures_regress/tests.py +10 −7 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ # Unittests for fixtures. from __future__ import absolute_import, unicode_literals import json import os import re import warnings Loading @@ -19,12 +20,13 @@ from django.utils.encoding import force_text from django.utils._os import upath from django.utils import six from django.utils.six import PY3, StringIO import json from .models import (Animal, Stuff, Absolute, Parent, Child, Article, Widget, Store, Person, Book, NKChild, RefToNKChild, Circle1, Circle2, Circle3, ExternalDependency, Thingy) _cur_dir = os.path.dirname(os.path.abspath(upath(__file__))) class TestFixtures(TestCase): Loading Loading @@ -150,12 +152,11 @@ class TestFixtures(TestCase): ) self.assertEqual(Absolute.objects.count(), 1) def test_relative_path(self): directory = os.path.dirname(upath(__file__)) relative_path = os.path.join('fixtures', 'absolute.json') def test_relative_path(self, path=['fixtures', 'absolute.json']): relative_path = os.path.join(*path) cwd = os.getcwd() try: os.chdir(directory) os.chdir(_cur_dir) management.call_command( 'loaddata', relative_path, Loading @@ -165,6 +166,10 @@ class TestFixtures(TestCase): os.chdir(cwd) self.assertEqual(Absolute.objects.count(), 1) @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1')]) def test_relative_path_in_fixture_dirs(self): self.test_relative_path(path=['inner', 'absolute.json']) def test_path_containing_dots(self): management.call_command( 'loaddata', Loading Loading @@ -412,8 +417,6 @@ class TestFixtures(TestCase): verbosity=0, ) _cur_dir = os.path.dirname(os.path.abspath(upath(__file__))) @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1'), os.path.join(_cur_dir, 'fixtures_2')]) def test_loaddata_forward_refs_split_fixtures(self): Loading