Ticket #5177: ctremove.2.diff
| File ctremove.2.diff, 2.5 kB (added by Rob Hudson <treborhudson@gmail.com>, 1 year ago) |
|---|
-
a/AUTHORS
old new 141 141 Sung-Jin Hong <serialx.net@gmail.com> 142 142 Richard House <Richard.House@i-logue.com> 143 143 Robert Rock Howard <http://djangomojo.com/> 144 Rob Hudson <http://rob.cogit8.org/> 144 145 Jason Huggins <http://www.jrandolph.com/blog/> 145 146 Hyun Mi Ae 146 147 Tom Insam -
a/django/contrib/contenttypes/management.py
old new 1 """ 2 Creates content types for all installed models. 3 """ 4 1 from django.contrib.contenttypes.models import ContentType 5 2 from django.dispatch import dispatcher 6 3 from django.db.models import get_apps, get_models, signals 7 4 from django.utils.encoding import smart_unicode 8 5 9 6 def create_contenttypes(app, created_models, verbosity=2): 10 from django.contrib.contenttypes.models import ContentType 7 """ 8 Creates content types for models in the given app, removing any models that 9 appear to be orphaned. 10 """ 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 # The presence of any remaining content types means the supplied app has an 29 # undefined model and can safely be removed, which cascades to also remove 30 # related permissions. 31 for ct in content_types: 32 if verbosity >= 2: 33 print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model) 34 ct.delete() 26 35 27 36 def create_all_contenttypes(verbosity=2): 28 37 for app in get_apps():
