summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Long <indirecthit@gmail.com>2006-08-18 14:06:02 +0000
committerChristopher Long <indirecthit@gmail.com>2006-08-18 14:06:02 +0000
commit7c986521cf37b7384e7f2f3cee8bae4b1e4f624b (patch)
tree8d27d35b6bc76b02e68ccc79aa7b9d667b314d59
parent82501149907393d818766af4004c4a307aa28ef8 (diff)
downloaddjango-7c986521cf37b7384e7f2f3cee8bae4b1e4f624b.tar.gz
[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
-rw-r--r--django/contrib/admin/views/main.py8
-rw-r--r--django/db/models/options.py5
2 files changed, 12 insertions, 1 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index b5ae648dfa..6f693dd8b0 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -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"):
diff --git a/django/db/models/options.py b/django/db/models/options.py
index e96afac16a..a574623c86 100644
--- a/django/db/models/options.py
+++ b/django/db/models/options.py
@@ -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."