Skip to content

Instantly share code, notes, and snippets.

@jordotech
Created July 16, 2018 23:15
Show Gist options
  • Save jordotech/d512ebc47563c9b46d4a2cdbfc964496 to your computer and use it in GitHub Desktop.
Save jordotech/d512ebc47563c9b46d4a2cdbfc964496 to your computer and use it in GitHub Desktop.
Fix proxy permissions management command Django 1.9
import sys
from django.contrib.auth.management import _get_all_permissions
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.core.management.base import BaseCommand
from django.apps import apps
from django.utils.encoding import smart_unicode
class Command(BaseCommand):
help = "Fix permissions for proxy models."
def handle(self, *args, **options):
for model in apps.get_models():
opts = model._meta
ctype, created = ContentType.objects.get_or_create(
app_label=opts.app_label,
model=opts.object_name.lower(),
defaults={'name': smart_unicode(opts.verbose_name_raw)})
for codename, name in _get_all_permissions(opts, ctype):
p, created = Permission.objects.get_or_create(
codename=codename,
content_type=ctype,
defaults={'name': name})
if created:
sys.stdout.write('Adding permission {}\n'.format(p))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment