diff --git a/AUTHORS b/AUTHORS
index c690980..e741f59 100644
a
|
b
|
answer newbie questions, and generally made Django that much better:
|
289 | 289 | ymasuda@ethercube.com |
290 | 290 | Jarek Zgoda <jarek.zgoda@gmail.com> |
291 | 291 | Cheng Zhang |
| 292 | Rob Hudson <http://rob.cogit8.org/> |
292 | 293 | |
293 | 294 | A big THANK YOU goes to: |
294 | 295 | |
diff --git a/django/contrib/contenttypes/management.py b/django/contrib/contenttypes/management.py
index cb52e08..663628b 100644
a
|
b
|
|
2 | 2 | Creates content types for all installed models. |
3 | 3 | """ |
4 | 4 | |
| 5 | from django.contrib.contenttypes.models import ContentType |
5 | 6 | from django.dispatch import dispatcher |
6 | 7 | from django.db.models import get_apps, get_models, signals |
7 | 8 | from django.utils.encoding import smart_unicode |
8 | 9 | |
9 | 10 | def create_contenttypes(app, created_models, verbosity=2): |
10 | | from django.contrib.contenttypes.models import ContentType |
11 | 11 | ContentType.objects.clear_cache() |
| 12 | content_types = list(ContentType.objects.filter(app_label=app.__name__.split('.')[-2])) |
12 | 13 | app_models = get_models(app) |
13 | 14 | if not app_models: |
14 | 15 | return |
15 | 16 | for klass in app_models: |
16 | 17 | opts = klass._meta |
17 | 18 | try: |
18 | | ContentType.objects.get(app_label=opts.app_label, |
19 | | model=opts.object_name.lower()) |
| 19 | ct = ContentType.objects.get(app_label=opts.app_label, |
| 20 | model=opts.object_name.lower()) |
| 21 | content_types.remove(ct) |
20 | 22 | except ContentType.DoesNotExist: |
21 | 23 | ct = ContentType(name=smart_unicode(opts.verbose_name_raw), |
22 | 24 | app_label=opts.app_label, model=opts.object_name.lower()) |
23 | 25 | ct.save() |
24 | 26 | if verbosity >= 2: |
25 | 27 | print "Adding content type '%s | %s'" % (ct.app_label, ct.model) |
| 28 | # any remaining content types don't have a matching model and are removed |
| 29 | for ct in content_types: |
| 30 | if verbosity >= 2: |
| 31 | print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model) |
| 32 | ct.delete() |
26 | 33 | |
27 | 34 | def create_all_contenttypes(verbosity=2): |
28 | 35 | for app in get_apps(): |