mirror of https://github.com/django/django.git
Fixed #21652 -- Added notification when processing objects in loaddata
Added a running count of the objects processed by loaddata when verbosity >= 3.
This commit is contained in:
parent
355c5edd93
commit
188a241880
|
@ -122,6 +122,7 @@ class Command(BaseCommand):
|
||||||
"""
|
"""
|
||||||
Loads fixtures files for a given label.
|
Loads fixtures files for a given label.
|
||||||
"""
|
"""
|
||||||
|
show_progress = self.verbosity >= 3
|
||||||
for fixture_file, fixture_dir, fixture_name in self.find_fixtures(fixture_label):
|
for fixture_file, fixture_dir, fixture_name in self.find_fixtures(fixture_label):
|
||||||
_, ser_fmt, cmp_fmt = self.parse_name(os.path.basename(fixture_file))
|
_, ser_fmt, cmp_fmt = self.parse_name(os.path.basename(fixture_file))
|
||||||
open_method, mode = self.compression_formats[cmp_fmt]
|
open_method, mode = self.compression_formats[cmp_fmt]
|
||||||
|
@ -144,6 +145,11 @@ class Command(BaseCommand):
|
||||||
self.models.add(obj.object.__class__)
|
self.models.add(obj.object.__class__)
|
||||||
try:
|
try:
|
||||||
obj.save(using=self.using)
|
obj.save(using=self.using)
|
||||||
|
if show_progress:
|
||||||
|
self.stdout.write(
|
||||||
|
'\rProcessed %i object(s).' % loaded_objects_in_fixture,
|
||||||
|
ending=''
|
||||||
|
)
|
||||||
except (DatabaseError, IntegrityError) as e:
|
except (DatabaseError, IntegrityError) as e:
|
||||||
e.args = ("Could not load %(app_label)s.%(object_name)s(pk=%(pk)s): %(error_msg)s" % {
|
e.args = ("Could not load %(app_label)s.%(object_name)s(pk=%(pk)s): %(error_msg)s" % {
|
||||||
'app_label': obj.object._meta.app_label,
|
'app_label': obj.object._meta.app_label,
|
||||||
|
@ -152,7 +158,8 @@ class Command(BaseCommand):
|
||||||
'error_msg': force_text(e)
|
'error_msg': force_text(e)
|
||||||
},)
|
},)
|
||||||
raise
|
raise
|
||||||
|
if objects and show_progress:
|
||||||
|
self.stdout.write('') # add a newline after progress indicator
|
||||||
self.loaded_object_count += loaded_objects_in_fixture
|
self.loaded_object_count += loaded_objects_in_fixture
|
||||||
self.fixture_object_count += objects_in_fixture
|
self.fixture_object_count += objects_in_fixture
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -342,6 +342,16 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase):
|
||||||
'<Article: Who needs more than one database?>',
|
'<Article: Who needs more than one database?>',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_loaddata_verbosity_three(self):
|
||||||
|
output = six.StringIO()
|
||||||
|
management.call_command('loaddata', 'fixture1.json', verbosity=3, stdout=output, stderr=output)
|
||||||
|
command_output = output.getvalue()
|
||||||
|
self.assertIn(
|
||||||
|
"\rProcessed 1 object(s).\rProcessed 2 object(s)."
|
||||||
|
"\rProcessed 3 object(s).\rProcessed 4 object(s).\n",
|
||||||
|
command_output
|
||||||
|
)
|
||||||
|
|
||||||
def test_loading_using(self):
|
def test_loading_using(self):
|
||||||
# Load db fixtures 1 and 2. These will load using the 'default' database identifier explicitly
|
# Load db fixtures 1 and 2. These will load using the 'default' database identifier explicitly
|
||||||
management.call_command('loaddata', 'db_fixture_1', verbosity=0, using='default')
|
management.call_command('loaddata', 'db_fixture_1', verbosity=0, using='default')
|
||||||
|
|
Loading…
Reference in New Issue