diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-06-11 22:56:09 +0200 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-06-12 20:01:41 +0200 |
| commit | 55cbd65985bfad02512a64a4cb8468140f15ee84 (patch) | |
| tree | ab3e850489557ee7faf6f2ba2913ce2b2021729a /django/core | |
| parent | 0938970491eee41ccde11bf3efe5b307ced8dba6 (diff) | |
Fixed #20579 -- Improved TransactionTestCase.available_apps.
Also moved its documentation to the 'advanced' section. It doesn't
belong to the 'overview'. Same for TransactionTestCase.reset_sequences.
When available_apps is set, after a TransactionTestCase, the database
is now totally empty. post_syncdb is fired at the beginning of the next
TransactionTestCase.
Refs #20483.
Diffstat (limited to 'django/core')
| -rw-r--r-- | django/core/management/commands/flush.py | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/django/core/management/commands/flush.py b/django/core/management/commands/flush.py index 7054187e45..95dd634d08 100644 --- a/django/core/management/commands/flush.py +++ b/django/core/management/commands/flush.py @@ -32,9 +32,10 @@ class Command(NoArgsCommand): connection = connections[db] verbosity = int(options.get('verbosity')) interactive = options.get('interactive') - # 'reset_sequences' and 'allow_cascade' are stealth options + # The following are stealth options used by Django's internals. reset_sequences = options.get('reset_sequences', True) allow_cascade = options.get('allow_cascade', False) + inhibit_post_syncdb = options.get('inhibit_post_syncdb', False) self.style = no_style() @@ -75,16 +76,9 @@ Are you sure you want to do this? "Hint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.\n" "The full error: %s") % (connection.settings_dict['NAME'], e) six.reraise(CommandError, CommandError(new_msg), sys.exc_info()[2]) - # Emit the post sync signal. This allows individual - # applications to respond as if the database had been - # sync'd from scratch. - all_models = [] - for app in models.get_apps(): - all_models.extend([ - m for m in models.get_models(app, include_auto_created=True) - if router.allow_syncdb(db, m) - ]) - emit_post_sync_signal(set(all_models), verbosity, interactive, db) + + if not inhibit_post_syncdb: + self.emit_post_syncdb(verbosity, interactive, db) # Reinstall the initial_data fixture. if options.get('load_initial_data'): @@ -93,3 +87,15 @@ Are you sure you want to do this? else: self.stdout.write("Flush cancelled.\n") + + @staticmethod + def emit_post_syncdb(verbosity, interactive, database): + # Emit the post sync signal. This allows individual applications to + # respond as if the database had been sync'd from scratch. + all_models = [] + for app in models.get_apps(): + all_models.extend([ + m for m in models.get_models(app, include_auto_created=True) + if router.allow_syncdb(database, m) + ]) + emit_post_sync_signal(set(all_models), verbosity, interactive, database) |
