summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Koziel <arthur@arthurkoziel.com>2010-08-15 18:31:48 +0000
committerArthur Koziel <arthur@arthurkoziel.com>2010-08-15 18:31:48 +0000
commita357ed10be8eb7d9c0210a47e28b28c2653739ed (patch)
treecff770cb4bf60c1bcb59a97e7308544f8f87e4d6
parent3da601b606fd2bc6da06e2749a30f1e4a8755cd3 (diff)
downloaddjango-a357ed10be8eb7d9c0210a47e28b28c2653739ed.tar.gz
[soc2010/app-loading] added verbose_name to app instance and modified admin to use it
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/app-loading@13592 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/admin/__init__.py7
-rw-r--r--django/contrib/admin/options.py11
-rw-r--r--django/contrib/admin/sites.py8
-rw-r--r--django/core/apps.py9
-rw-r--r--django/core/management/commands/syncdb.py3
-rw-r--r--django/template/loaders/app_directories.py9
6 files changed, 29 insertions, 18 deletions
diff --git a/django/contrib/admin/__init__.py b/django/contrib/admin/__init__.py
index 92886ab8d3..c9f5bc71f4 100644
--- a/django/contrib/admin/__init__.py
+++ b/django/contrib/admin/__init__.py
@@ -2,7 +2,7 @@ from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
from django.contrib.admin.options import StackedInline, TabularInline
from django.contrib.admin.sites import AdminSite, site
-
+from django.core.apps import cache
def autodiscover():
"""
@@ -16,8 +16,9 @@ def autodiscover():
from django.utils.importlib import import_module
from django.utils.module_loading import module_has_submodule
- for app in settings.INSTALLED_APPS:
- mod = import_module(app)
+ for app in cache.installed_apps:
+ app_instance = cache.find_app(app)
+ mod = app_instance.module
# Attempt to import the app's admin module.
try:
before_import_registry = copy.copy(site._registry)
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 1f8ff6dbd1..abbe14c948 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -8,6 +8,7 @@ from django.contrib.admin import helpers
from django.contrib.admin.util import unquote, flatten_fieldsets, get_deleted_objects, model_ngettext, model_format_dict
from django.contrib import messages
from django.views.decorators.csrf import csrf_protect
+from django.core.apps import cache
from django.core.exceptions import PermissionDenied, ValidationError
from django.db import models, transaction
from django.db.models.fields import BLANK_CHOICE_DASH
@@ -845,7 +846,7 @@ class ModelAdmin(BaseModelAdmin):
'inline_admin_formsets': inline_admin_formsets,
'errors': helpers.AdminErrorList(form, formsets),
'root_path': self.admin_site.root_path,
- 'app_label': opts.app_label,
+ 'app_label': cache.find_app(opts.app_label).verbose_name,
}
context.update(extra_context or {})
return self.render_change_form(request, context, form_url=form_url, add=True)
@@ -937,7 +938,7 @@ class ModelAdmin(BaseModelAdmin):
'inline_admin_formsets': inline_admin_formsets,
'errors': helpers.AdminErrorList(form, formsets),
'root_path': self.admin_site.root_path,
- 'app_label': opts.app_label,
+ 'app_label': cache.find_app(opts.app_label).verbose_name,
}
context.update(extra_context or {})
return self.render_change_form(request, context, change=True, obj=obj)
@@ -1076,7 +1077,7 @@ class ModelAdmin(BaseModelAdmin):
'media': media,
'has_add_permission': self.has_add_permission(request),
'root_path': self.admin_site.root_path,
- 'app_label': app_label,
+ 'app_label': cache.find_app(app_label).verbose_name,
'action_form': action_form,
'actions_on_top': self.actions_on_top,
'actions_on_bottom': self.actions_on_bottom,
@@ -1129,7 +1130,7 @@ class ModelAdmin(BaseModelAdmin):
"perms_lacking": perms_needed,
"opts": opts,
"root_path": self.admin_site.root_path,
- "app_label": app_label,
+ "app_label": cache.find_app(app_label).verbose_name,
}
context.update(extra_context or {})
context_instance = template.RequestContext(request, current_app=self.admin_site.name)
@@ -1157,7 +1158,7 @@ class ModelAdmin(BaseModelAdmin):
'module_name': capfirst(force_unicode(opts.verbose_name_plural)),
'object': obj,
'root_path': self.admin_site.root_path,
- 'app_label': app_label,
+ 'app_label': cache.find_app(app_label).verbose_name,
}
context.update(extra_context or {})
context_instance = template.RequestContext(request, current_app=self.admin_site.name)
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py
index 4446490451..f4b6953347 100644
--- a/django/contrib/admin/sites.py
+++ b/django/contrib/admin/sites.py
@@ -5,6 +5,7 @@ from django.contrib.admin import actions
from django.contrib.auth import authenticate, login
from django.views.decorators.csrf import csrf_protect
from django.db.models.base import ModelBase
+from django.core.apps import cache
from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response
@@ -371,7 +372,7 @@ class AdminSite(object):
app_dict[app_label]['models'].append(model_dict)
else:
app_dict[app_label] = {
- 'name': app_label.title(),
+ 'name': cache.find_app(app_label).verbose_name,
'app_url': app_label + '/',
'has_module_perms': has_module_perms,
'models': [model_dict],
@@ -415,6 +416,7 @@ class AdminSite(object):
user = request.user
has_module_perms = user.has_module_perms(app_label)
app_dict = {}
+ app_instance = cache.find_app(app_label)
for model, model_admin in self._registry.items():
if app_label == model._meta.app_label:
if has_module_perms:
@@ -435,7 +437,7 @@ class AdminSite(object):
# something to display, add in the necessary meta
# information.
app_dict = {
- 'name': app_label.title(),
+ 'name': app_instance.verbose_name,
'app_url': '',
'has_module_perms': has_module_perms,
'models': [model_dict],
@@ -445,7 +447,7 @@ class AdminSite(object):
# Sort the models alphabetically within each app.
app_dict['models'].sort(lambda x, y: cmp(x['name'], y['name']))
context = {
- 'title': _('%s administration') % capfirst(app_label),
+ 'title': _('%s administration') % app_instance.verbose_name,
'app_list': [app_dict],
'root_path': self.root_path,
}
diff --git a/django/core/apps.py b/django/core/apps.py
index e59637c5dd..ae01b44e7f 100644
--- a/django/core/apps.py
+++ b/django/core/apps.py
@@ -3,6 +3,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.utils.datastructures import SortedDict
from django.utils.importlib import import_module
from django.utils.module_loading import module_has_submodule
+from django.utils.translation import ugettext as _
import imp
import sys
@@ -22,9 +23,14 @@ class App(object):
"""
def __init__(self, name):
self.name = name
- # errors raised when trying to import the app
+ self.verbose_name = _(name.title())
+ self.verbose_name_plural = _(name.title())
self.errors = []
self.models = []
+ self.module = None
+
+ def __str__(self):
+ return self.name
def __repr__(self):
return '<App: %s>' % self.name
@@ -127,6 +133,7 @@ class AppCache(object):
else:
app_instance_name = app_name
app_instance = app_class(app_instance_name)
+ app_instance.module = app_module
self.app_instances.append(app_instance)
self.installed_apps.append(app_name)
diff --git a/django/core/management/commands/syncdb.py b/django/core/management/commands/syncdb.py
index d1dd49b75e..6f1a198653 100644
--- a/django/core/management/commands/syncdb.py
+++ b/django/core/management/commands/syncdb.py
@@ -2,6 +2,7 @@ from optparse import make_option
import sys
from django.conf import settings
+from django.core.apps import cache
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
@@ -30,7 +31,7 @@ class Command(NoArgsCommand):
# Import the 'management' module within each installed app, to register
# dispatcher events.
- for app_name in settings.INSTALLED_APPS:
+ for app_name in cache.installed_apps:
try:
import_module('.management', app_name)
except ImportError, exc:
diff --git a/django/template/loaders/app_directories.py b/django/template/loaders/app_directories.py
index 3e05bf87f6..1fc9ec0b1a 100644
--- a/django/template/loaders/app_directories.py
+++ b/django/template/loaders/app_directories.py
@@ -8,6 +8,7 @@ import sys
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
+from django.core.apps import cache
from django.template import TemplateDoesNotExist
from django.template.loader import BaseLoader
from django.utils._os import safe_join
@@ -16,11 +17,9 @@ from django.utils.importlib import import_module
# At compile time, cache the directories to search.
fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
app_template_dirs = []
-for app in settings.INSTALLED_APPS:
- try:
- mod = import_module(app)
- except ImportError, e:
- raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))
+for app in cache.installed_apps:
+ app_instance = cache.find_app(app)
+ mod = app_instance.module
template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')
if os.path.isdir(template_dir):
app_template_dirs.append(template_dir.decode(fs_encoding))