summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/core/management/commands/flush.py2
-rw-r--r--django/core/management/commands/syncdb.py6
-rw-r--r--django/core/management/sql.py14
-rw-r--r--django/db/models/signals.py1
4 files changed, 21 insertions, 2 deletions
diff --git a/django/core/management/commands/flush.py b/django/core/management/commands/flush.py
index 10066417a1..c56fc1e1b0 100644
--- a/django/core/management/commands/flush.py
+++ b/django/core/management/commands/flush.py
@@ -20,7 +20,7 @@ class Command(NoArgsCommand):
default=DEFAULT_DB_ALIAS, help='Nominates a database to flush. '
'Defaults to the "default" database.'),
make_option('--no-initial-data', action='store_false', dest='load_initial_data', default=True,
- help='Tells Django not to load any initial data after database synchronization.'),
+ help='Tells Django not to load any initial data after database synchronization.'),
)
help = ('Returns the database to the state it was in immediately after '
'syncdb was executed. This means that all data will be removed '
diff --git a/django/core/management/commands/syncdb.py b/django/core/management/commands/syncdb.py
index ab80d8aece..3e73d24a04 100644
--- a/django/core/management/commands/syncdb.py
+++ b/django/core/management/commands/syncdb.py
@@ -1,11 +1,12 @@
from optparse import make_option
+import itertools
import traceback
from django.conf import settings
from django.core.management import call_command
from django.core.management.base import NoArgsCommand
from django.core.management.color import no_style
-from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
+from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal, emit_pre_sync_signal
from django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS
from django.utils.datastructures import SortedDict
from django.utils.importlib import import_module
@@ -80,6 +81,9 @@ class Command(NoArgsCommand):
for app_name, model_list in all_models
)
+ create_models = set([x for x in itertools.chain(*manifest.values())])
+ emit_pre_sync_signal(create_models, verbosity, interactive, db)
+
# Create the tables for each model
if verbosity >= 1:
self.stdout.write("Creating tables ...\n")
diff --git a/django/core/management/sql.py b/django/core/management/sql.py
index ac60ed470c..27ada10248 100644
--- a/django/core/management/sql.py
+++ b/django/core/management/sql.py
@@ -137,6 +137,7 @@ def sql_indexes(app, style, connection):
output.extend(connection.creation.sql_indexes_for_model(model, style))
return output
+
def sql_destroy_indexes(app, style, connection):
"Returns a list of the DROP INDEX SQL statements for all models in the given app."
output = []
@@ -191,6 +192,19 @@ def custom_sql_for_model(model, style, connection):
return output
+def emit_pre_sync_signal(create_models, verbosity, interactive, db):
+ # Emit the pre_sync signal for every application.
+ for app in models.get_apps():
+ app_name = app.__name__.split('.')[-2]
+ if verbosity >= 2:
+ print("Running pre-sync handlers for application %s" % app_name)
+ models.signals.pre_syncdb.send(sender=app, app=app,
+ create_models=create_models,
+ verbosity=verbosity,
+ interactive=interactive,
+ db=db)
+
+
def emit_post_sync_signal(created_models, verbosity, interactive, db):
# Emit the post_sync signal for every application.
for app in models.get_apps():
diff --git a/django/db/models/signals.py b/django/db/models/signals.py
index 09f93d0f77..3e321893c1 100644
--- a/django/db/models/signals.py
+++ b/django/db/models/signals.py
@@ -12,6 +12,7 @@ post_save = Signal(providing_args=["instance", "raw", "created", "using", "updat
pre_delete = Signal(providing_args=["instance", "using"], use_caching=True)
post_delete = Signal(providing_args=["instance", "using"], use_caching=True)
+pre_syncdb = Signal(providing_args=["app", "create_models", "verbosity", "interactive", "db"])
post_syncdb = Signal(providing_args=["class", "app", "created_models", "verbosity", "interactive", "db"], use_caching=True)
m2m_changed = Signal(providing_args=["action", "instance", "reverse", "model", "pk_set", "using"], use_caching=True)