Created
July 16, 2018 23:15
-
-
Save jordotech/d512ebc47563c9b46d4a2cdbfc964496 to your computer and use it in GitHub Desktop.
Fix proxy permissions management command Django 1.9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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