django-authority/src/authority/admin.py

61 lines
2.4 KiB
Python
Raw Normal View History

from django import forms, template
from django.contrib import admin
2009-06-08 10:00:44 +00:00
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from django.http import HttpResponseForbidden, HttpResponseRedirect, Http404
from django.core.urlresolvers import reverse
from django.conf.urls.defaults import patterns, url
from django.db import models
from django.utils.safestring import mark_safe
from django.shortcuts import get_object_or_404, render_to_response
2009-06-08 10:00:44 +00:00
from authority.models import Permission
from authority import permissions
2009-06-08 10:00:44 +00:00
class PermissionInline(generic.GenericTabularInline):
model = Permission
raw_id_fields = ('user', 'group', 'creator')
extra = 1
def get_formset(self, request, obj=None, **kwargs):
self.current_user = request.user
return super(PermissionInline, self).get_formset(request, obj, **kwargs)
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'codename':
perm_choices = permissions.registry.get_choices_for(self.parent_model)
kwargs['label'] = _('permission')
kwargs['widget'] = forms.Select(choices=perm_choices)
return db_field.formfield(**kwargs)
elif db_field.name == 'screator':
field = db_field.formfield(**kwargs)
field.initial = self.current_user.id
return field
return super(PermissionInline, self).formfield_for_dbfield(db_field, **kwargs)
2009-06-08 10:00:44 +00:00
class PermissionAdmin(admin.ModelAdmin):
2009-06-08 10:00:44 +00:00
list_display = ('codename', 'content_type', 'user', 'group')
list_filter = ('codename', 'content_type')
search_fields = ('user', 'group')
raw_id_fields = ('user', 'group')
2009-06-08 10:00:44 +00:00
fieldsets = (
(None, {
'fields': ('codename', ('content_type', 'object_id'))
}),
(_('granted'), {
2009-06-08 10:00:44 +00:00
'fields': ('user', 'group', 'creator')
}),
)
permission_change_form_template = None
2009-06-08 10:00:44 +00:00
def queryset(self, request):
user = request.user
if user.is_superuser or \
user.has_perm('permissions.change_foreign_permissions'):
return super(PermissionAdmin, self).queryset(request)
return super(PermissionAdmin, self).queryset(request).filter(creator=user)
admin.site.register(Permission, PermissionAdmin)