summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-11-18 14:05:59 +0100
committerClaude Paroz <claude@2xlibre.net>2013-11-18 20:34:39 +0100
commit833f7d11e8f1d0171bac23e2e78c1111a83fbeaa (patch)
treefa1f8f3a79444e78b7f779594f984ae2c0cd951f
parent62bb4fc8063b755be00c4f2a936292fc0bf067ca (diff)
[1.6.x] Fixed #21457 -- Allowed fixture file name to contain dots
Thanks Keryn Knight for the report. Backport of 97ac22ebfc from master.
-rw-r--r--django/core/management/commands/loaddata.py17
-rw-r--r--docs/releases/1.6.1.txt2
-rw-r--r--tests/fixtures_regress/fixtures/path.containing.dots.json9
-rw-r--r--tests/fixtures_regress/tests.py8
4 files changed, 27 insertions, 9 deletions
diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py
index e8ec992af4..35a5ccc8cc 100644
--- a/django/core/management/commands/loaddata.py
+++ b/django/core/management/commands/loaddata.py
@@ -172,12 +172,6 @@ class Command(BaseCommand):
cmp_fmts = list(self.compression_formats.keys()) if cmp_fmt is None else [cmp_fmt]
ser_fmts = serializers.get_public_serializer_formats() if ser_fmt is None else [ser_fmt]
- # Check kept for backwards-compatibility; it doesn't look very useful.
- if '.' in os.path.basename(fixture_name):
- raise CommandError(
- "Problem installing fixture '%s': %s is not a known "
- "serialization format." % tuple(fixture_name.rsplit('.')))
-
if self.verbosity >= 2:
self.stdout.write("Loading '%s' fixtures..." % fixture_name)
@@ -253,9 +247,14 @@ class Command(BaseCommand):
else:
cmp_fmt = None
- if len(parts) > 1 and parts[-1] in self.serialization_formats:
- ser_fmt = parts[-1]
- parts = parts[:-1]
+ if len(parts) > 1:
+ if parts[-1] in self.serialization_formats:
+ ser_fmt = parts[-1]
+ parts = parts[:-1]
+ else:
+ raise CommandError(
+ "Problem installing fixture '%s': %s is not a known "
+ "serialization format." % (''.join(parts[:-1]), parts[-1]))
else:
ser_fmt = None
diff --git a/docs/releases/1.6.1.txt b/docs/releases/1.6.1.txt
index ad85908ca8..d88b404bc5 100644
--- a/docs/releases/1.6.1.txt
+++ b/docs/releases/1.6.1.txt
@@ -24,3 +24,5 @@ Bug fixes
from working in ``ModelForms``.
* 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).
diff --git a/tests/fixtures_regress/fixtures/path.containing.dots.json b/tests/fixtures_regress/fixtures/path.containing.dots.json
new file mode 100644
index 0000000000..d62ac03fff
--- /dev/null
+++ b/tests/fixtures_regress/fixtures/path.containing.dots.json
@@ -0,0 +1,9 @@
+[
+ {
+ "pk": "1",
+ "model": "fixtures_regress.absolute",
+ "fields": {
+ "name": "Load Absolute Path Test"
+ }
+ }
+]
diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py
index 58339c9280..9ce0337e67 100644
--- a/tests/fixtures_regress/tests.py
+++ b/tests/fixtures_regress/tests.py
@@ -165,6 +165,14 @@ class TestFixtures(TestCase):
os.chdir(cwd)
self.assertEqual(Absolute.objects.count(), 1)
+ def test_path_containing_dots(self):
+ management.call_command(
+ 'loaddata',
+ 'path.containing.dots.json',
+ verbosity=0,
+ )
+ self.assertEqual(Absolute.objects.count(), 1)
+
def test_unknown_format(self):
"""
Test for ticket #4371 -- Loading data of an unknown format should fail