Embed authgroup into group admin.

Mirror authgroup admin permissions from group model.
Delete authgroup permissions.
This commit is contained in:
Adarnof 2018-02-23 18:21:58 -05:00
parent 9f9cc7ed42
commit f3c0d05c39
3 changed files with 57 additions and 6 deletions

View File

@ -6,11 +6,24 @@ from .models import AuthGroup
from .models import GroupRequest from .models import GroupRequest
class AuthGroupAdmin(admin.ModelAdmin): class AuthGroupInlineAdmin(admin.StackedInline):
""" model = AuthGroup
Admin model for AuthGroup
"""
filter_horizontal = ('group_leaders',) filter_horizontal = ('group_leaders',)
fields = ('description', 'group_leaders', 'internal', 'hidden', 'open', 'public')
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
def has_change_permission(self, request, obj=None):
return request.user.has_perm('auth.change_group')
class GroupAdmin(admin.ModelAdmin):
filter_horizontal = ('permissions',)
inlines = (AuthGroupInlineAdmin,)
class Group(BaseGroup): class Group(BaseGroup):
@ -22,11 +35,10 @@ class Group(BaseGroup):
try: try:
admin.site.unregister(BaseGroup) admin.site.unregister(BaseGroup)
finally: finally:
admin.site.register(Group) admin.site.register(Group, GroupAdmin)
admin.site.register(GroupRequest) admin.site.register(GroupRequest)
admin.site.register(AuthGroup, AuthGroupAdmin)
@receiver(pre_save, sender=Group) @receiver(pre_save, sender=Group)

View File

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.10 on 2018-02-23 23:09
from __future__ import unicode_literals
from django.db import migrations
def delete_permissions(apps, schema_editor):
AuthGroup = apps.get_model('groupmanagement', 'AuthGroup')
ContentType = apps.get_model('contenttypes', 'ContentType')
Permission = apps.get_model('auth', 'Permission')
ct = ContentType.objects.get_for_model(AuthGroup)
Permission.objects.filter(content_type=ct).delete()
def recreate_permissions(apps, schema_editor):
AuthGroup = apps.get_model('groupmanagement', 'AuthGroup')
ContentType = apps.get_model('contenttypes', 'ContentType')
Permission = apps.get_model('auth', 'Permission')
ct = ContentType.objects.get_for_model(AuthGroup)
Permission.objects.create(content_type=ct, name='Can add auth group', codename='add_authgroup')
Permission.objects.create(content_type=ct, name='Can delete auth group', codename='delete_authgroup')
Permission.objects.create(content_type=ct, name='Can change auth group', codename='change_authgroup')
class Migration(migrations.Migration):
dependencies = [
('groupmanagement', '0007_on_delete'),
]
operations = [
migrations.AlterModelOptions(
name='authgroup',
options={'default_permissions': (), 'permissions': (('request_groups', 'Can request non-public groups'),)},
),
migrations.RunPython(delete_permissions, recreate_permissions)
]

View File

@ -74,6 +74,7 @@ class AuthGroup(models.Model):
permissions = ( permissions = (
("request_groups", u"Can request non-public groups"), ("request_groups", u"Can request non-public groups"),
) )
default_permissions = tuple()
@receiver(post_save, sender=Group) @receiver(post_save, sender=Group)