Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #21457 -- Allowed fixture file name to contain dots

Thanks Keryn Knight for the report.
  • Loading branch information...
commit 97ac22ebfca0a5b0759f495cc5d7bed3f9da6615 1 parent bc0413c
@claudep claudep authored
View
17 django/core/management/commands/loaddata.py
@@ -175,12 +175,6 @@ def find_fixtures(self, fixture_label):
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 @@ def parse_name(self, fixture_name):
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
View
2  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).
View
9 tests/fixtures_regress/fixtures/path.containing.dots.json
@@ -0,0 +1,9 @@
+[
+ {
+ "pk": "1",
+ "model": "fixtures_regress.absolute",
+ "fields": {
+ "name": "Load Absolute Path Test"
+ }
+ }
+]
View
8 tests/fixtures_regress/tests.py
@@ -165,6 +165,14 @@ def test_relative_path(self):
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
Please sign in to comment.
Something went wrong with that request. Please try again.