summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2013-12-30 12:49:53 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-12-30 22:11:16 +0100
commite187caa3afd7d292353fb32be1647da2cf0968da (patch)
tree4f06964b7980dbb10ccdee92593d2e42cfa1629f
parent0d2c8ff2be733c7cc83a023bbafe0258faa5603c (diff)
Added AppConfig.setup() to run setup code.
-rw-r--r--django/apps/base.py5
-rw-r--r--django/apps/registry.py3
-rw-r--r--docs/ref/applications.txt6
3 files changed, 14 insertions, 0 deletions
diff --git a/django/apps/base.py b/django/apps/base.py
index 784c460bcd..eaf8993624 100644
--- a/django/apps/base.py
+++ b/django/apps/base.py
@@ -162,3 +162,8 @@ class AppConfig(object):
if module_has_submodule(self.module, MODELS_MODULE_NAME):
models_module_name = '%s.%s' % (self.name, MODELS_MODULE_NAME)
self.models_module = import_module(models_module_name)
+
+ def setup(self):
+ """
+ Override this method in subclasses to run setup code.
+ """
diff --git a/django/apps/registry.py b/django/apps/registry.py
index 1bb00f37f7..c23fe69362 100644
--- a/django/apps/registry.py
+++ b/django/apps/registry.py
@@ -135,6 +135,9 @@ class Apps(object):
self.clear_cache()
self._models_loaded = True
+ for app_config in self.get_app_configs():
+ app_config.setup()
+
@property
def ready(self):
"""
diff --git a/docs/ref/applications.txt b/docs/ref/applications.txt
index 8505784737..5d9db49140 100644
--- a/docs/ref/applications.txt
+++ b/docs/ref/applications.txt
@@ -166,6 +166,12 @@ Methods
``model_name``. Raises :exc:`~exceptions.LookupError` if no such model
exists. ``model_name`` is case-insensitive.
+.. method:: AppConfig.setup()
+
+ Subclasses can override this method to perform setup tasks such as
+ registering signals. It is called as soon as the registry is fully
+ populated.
+
Application registry
====================