1
0
mirror of https://github.com/django/django.git synced 2025-07-05 18:29:11 +00:00

[per-object-permissions] Added grant_change_row_level_perm and grant_delete_row_level_perm for admin class in models, assigns the given permissions automatically after creation of an object

git-svn-id: http://code.djangoproject.com/svn/django/branches/per-object-permissions@3609 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Christopher Long 2006-08-18 14:06:02 +00:00
parent 8250114990
commit 7c986521cf
2 changed files with 12 additions and 1 deletions

View File

@ -255,6 +255,14 @@ def add_stage(request, app_label, model_name, show_delete=False, form_url='', po
pk_value = new_object._get_pk_val()
LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(model).id, pk_value, str(new_object), ADDITION)
msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': opts.verbose_name, 'obj': new_object}
if new_object._meta.row_level_permissions:
from django.contrib.auth.models import RowLevelPermission
admin_opts = new_object._meta.admin
RowLevelPermission.objects.create_default_row_permissions(new_object, request.user,
change=admin_opts.grant_change_row_level_perm,
delete=admin_opts.grant_delete_row_level_perm)
# Here, we distinguish between different save types by checking for
# the presence of keys in request.POST.
if request.POST.has_key("_continue"):

View File

@ -202,7 +202,8 @@ class Options(object):
class AdminOptions(object):
def __init__(self, fields=None, js=None, list_display=None, list_display_links=None, list_filter=None,
date_hierarchy=None, save_as=False, ordering=None, search_fields=None,
save_on_top=False, list_select_related=False, manager=None, list_per_page=100):
save_on_top=False, list_select_related=False, manager=None, list_per_page=100,
grant_change_row_level_perm=False, grant_delete_row_level_perm=False):
self.fields = fields
self.js = js or []
self.list_display = list_display or ['__str__']
@ -215,6 +216,8 @@ class AdminOptions(object):
self.list_select_related = list_select_related
self.list_per_page = list_per_page
self.manager = manager or Manager()
self.grant_change_row_level_perm=grant_change_row_level_perm
self.grant_delete_row_level_perm=grant_delete_row_level_perm
def get_field_sets(self, opts):
"Returns a list of AdminFieldSet objects for this AdminOptions object."