authentic/src/authentic2/a2_rbac/admin.py

64 lines
2.0 KiB
Python

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from . import models
class RoleParentInline(admin.TabularInline):
model = models.RoleParenting
fk_name = 'child'
fields = ['parent']
def get_queryset(self, request):
return super(RoleParentInline, self).get_queryset(request) \
.filter(direct=True)
class RoleChildInline(admin.TabularInline):
model = models.RoleParenting
fk_name = 'parent'
fields = ['child']
def get_queryset(self, request):
return super(RoleChildInline, self).get_queryset(request) \
.filter(direct=True)
class RoleAttributeInline(admin.TabularInline):
model = models.RoleAttribute
class RoleAdmin(admin.ModelAdmin):
inlines = [RoleChildInline, RoleParentInline]
fields = ('uuid', 'name', 'slug', 'description', 'ou', 'members',
'permissions', 'admin_scope_ct', 'admin_scope_id', 'service')
readonly_fields = ('uuid',)
prepopulated_fields = {"slug": ("name",)}
filter_horizontal = ('members', 'permissions')
list_display = ('__unicode__', 'slug', 'ou', 'service', 'admin_scope')
list_select_related = ('name', 'slug', 'ou')
list_filter = ['ou', 'service']
inlines = [RoleAttributeInline]
class OrganizationalUnitAdmin(admin.ModelAdmin):
fields = ('uuid', 'name', 'slug', 'description', 'username_is_unique',
'email_is_unique', 'default')
readonly_fields = ('uuid',)
prepopulated_fields = {"slug": ("name",)}
list_display = ('name', 'slug')
class PermissionAdmin(admin.ModelAdmin):
fields = ('operation', 'ou', 'target_ct', 'target_id')
list_display = ('name', 'operation', 'ou', 'target')
list_select_related = ('operation', 'ou', 'target')
def name(self, obj):
return unicode(obj)
name.short_description = _('name')
admin.site.register(models.Role, RoleAdmin)
admin.site.register(models.OrganizationalUnit, OrganizationalUnitAdmin)
admin.site.register(models.Permission, PermissionAdmin)