From 2da4c4111ea359ee79ccfdf39167116f232ef8cb Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Mon, 19 Jun 2006 12:50:53 +0000 Subject: [PATCH] Fixed #1856 -- install content-type entries and auth permissions for models regardless of the presence of an inner Admin class. Patch from Mathew Flanagan. git-svn-id: http://code.djangoproject.com/svn/django/trunk@3148 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/auth/management.py | 2 -- django/contrib/contenttypes/management.py | 24 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 django/contrib/contenttypes/management.py diff --git a/django/contrib/auth/management.py b/django/contrib/auth/management.py index fe3399edbb..c4c315eb21 100644 --- a/django/contrib/auth/management.py +++ b/django/contrib/auth/management.py @@ -23,8 +23,6 @@ def create_permissions(app, created_models): if not app_models: return for klass in app_models: - if not klass._meta.admin: - continue ctype = ContentType.objects.get_for_model(klass) for codename, name in _get_all_permissions(klass._meta): try: diff --git a/django/contrib/contenttypes/management.py b/django/contrib/contenttypes/management.py new file mode 100644 index 0000000000..a9174584bc --- /dev/null +++ b/django/contrib/contenttypes/management.py @@ -0,0 +1,24 @@ +""" +Creates content types for all installed models. +""" + +from django.dispatch import dispatcher +from django.db.models import get_models, signals + +def create_contenttypes(app, created_models): + from django.contrib.contenttypes.models import ContentType + app_models = get_models(app) + if not app_models: + return + for klass in app_models: + opts = klass._meta + try: + ContentType.objects.get(app_label=opts.app_label, + model=opts.object_name.lower()) + except ContentType.DoesNotExist: + ct = ContentType(name=str(opts.verbose_name), + app_label=opts.app_label, model=opts.object_name.lower()) + ct.save() + print "Adding content type '%s | %s'" % (ct.app_label, ct.model) + +dispatcher.connect(create_contenttypes, signal=signals.post_syncdb)