summaryrefslogtreecommitdiffstats
path: root/google_appengine/lib/django/django/contrib/contenttypes/management.py
blob: 3572d93049e71d09a34ad8a55da027e7af491a3d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""
Creates content types for all installed models.
"""

from django.dispatch import dispatcher
from django.db.models import get_apps, get_models, signals

def create_contenttypes(app, created_models, verbosity=2):
    from django.contrib.contenttypes.models import ContentType
    ContentType.objects.clear_cache()
    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()
            if verbosity >= 2:
                print "Adding content type '%s | %s'" % (ct.app_label, ct.model)

def create_all_contenttypes(verbosity=2):
    for app in get_apps():
        create_contenttypes(app, None, verbosity)

dispatcher.connect(create_contenttypes, signal=signals.post_syncdb)

if __name__ == "__main__":
    create_all_contenttypes()