mirror of
https://github.com/django/django.git
synced 2025-07-05 02:09:13 +00:00
[per-object-permissions] Fixed two bugs (noticed by Robert). 1) has_add_permission was not part of the new add user context and was causing an error when rendering the submit_row, changed view to have the has_add_permission 2) Custom SQL for checking if permissions exist was causing an error due to an incorrect False statment, corrected now.
[per-object-permissions] Fixed a bug where delete row level permission was giving a PermissionDenied error falsely git-svn-id: http://code.djangoproject.com/svn/django/branches/per-object-permissions@3655 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
84771a606a
commit
7b2e3798f4
@ -27,6 +27,7 @@ def user_add_stage(request):
|
|||||||
'is_popup': request.REQUEST.has_key('_popup'),
|
'is_popup': request.REQUEST.has_key('_popup'),
|
||||||
'add': True,
|
'add': True,
|
||||||
'change': False,
|
'change': False,
|
||||||
|
'has_add_permission': True,
|
||||||
'has_delete_permission': False,
|
'has_delete_permission': False,
|
||||||
'has_change_permission': True,
|
'has_change_permission': True,
|
||||||
'has_file_field': False,
|
'has_file_field': False,
|
||||||
|
@ -366,7 +366,7 @@ class User(models.Model):
|
|||||||
#FROM "auth_user_groups" ug, "auth_rowlevelpermission" rlp, "django_content_type" ct
|
#FROM "auth_user_groups" ug, "auth_rowlevelpermission" rlp, "django_content_type" ct
|
||||||
#WHERE rlp."owner_id" = ug."group_id"
|
#WHERE rlp."owner_id" = ug."group_id"
|
||||||
#AND ug."user_id"=%s
|
#AND ug."user_id"=%s
|
||||||
#AND rlp."negative" = 0
|
#AND rlp."negative" = False
|
||||||
#AND rlp."owner_ct_id" = %s
|
#AND rlp."owner_ct_id" = %s
|
||||||
#AND rlp."model_ct_id" = %s
|
#AND rlp."model_ct_id" = %s
|
||||||
|
|
||||||
@ -376,17 +376,16 @@ class User(models.Model):
|
|||||||
FROM %s ug, %s rlp, %s ct
|
FROM %s ug, %s rlp, %s ct
|
||||||
WHERE rlp.%s = ug.%s
|
WHERE rlp.%s = ug.%s
|
||||||
AND ug.%s=%%s
|
AND ug.%s=%%s
|
||||||
AND rlp.%s = 0
|
AND rlp.%s = %%s
|
||||||
AND rlp.%s = %%s
|
AND rlp.%s = %%s
|
||||||
AND rlp.%s = %%s
|
AND rlp.%s = %%s
|
||||||
AND rlp.%s = %%s""" % (
|
AND rlp.%s = %%s""" % (
|
||||||
backend.quote_name('auth_user_groups'), backend.quote_name('auth_rowlevelpermission'),
|
backend.quote_name('auth_user_groups'), backend.quote_name('auth_rowlevelpermission'),
|
||||||
backend.quote_name('django_content_type'), backend.quote_name('owner_id'),
|
backend.quote_name('django_content_type'), backend.quote_name('owner_id'),
|
||||||
backend.quote_name('group_id'), backend.quote_name('user_id'),
|
backend.quote_name('group_id'), backend.quote_name('user_id'),
|
||||||
backend.quote_name('negative'), backend.quote_name('owner_ct_id'),
|
backend.quote_name('negative'), backend.quote_name('owner_ct_id'),
|
||||||
backend.quote_name('model_ct_id'), backend.quote_name('permission_id'))
|
backend.quote_name('model_ct_id'), backend.quote_name('permission_id'))
|
||||||
|
cursor.execute(sql, [self.id, False, ContentType.objects.get_for_model(Group).id, ct.id, perm.id])
|
||||||
cursor.execute(sql, [self.id, ContentType.objects.get_for_model(Group).id, ct.id, perm.id])
|
|
||||||
count = int(cursor.fetchone()[0])
|
count = int(cursor.fetchone()[0])
|
||||||
return (count>0)
|
return (count>0)
|
||||||
|
|
||||||
@ -403,7 +402,7 @@ class User(models.Model):
|
|||||||
#FROM "django_content_type" ct, "auth_rowlevelpermission" rlp
|
#FROM "django_content_type" ct, "auth_rowlevelpermission" rlp
|
||||||
#WHERE rlp."model_ct_id" = ct."id"
|
#WHERE rlp."model_ct_id" = ct."id"
|
||||||
#AND ct."app_label"=%s
|
#AND ct."app_label"=%s
|
||||||
#AND rlp."negative" = 0
|
#AND rlp."negative" = False
|
||||||
#AND rlp."owner_ct_id" = %s
|
#AND rlp."owner_ct_id" = %s
|
||||||
#AND rlp."owner_id" = %s
|
#AND rlp."owner_id" = %s
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
@ -412,17 +411,20 @@ class User(models.Model):
|
|||||||
FROM %s ct, %s rlp
|
FROM %s ct, %s rlp
|
||||||
WHERE rlp.%s = ct.%s
|
WHERE rlp.%s = ct.%s
|
||||||
AND ct.%s=%%s
|
AND ct.%s=%%s
|
||||||
AND rlp.%s = 0
|
|
||||||
AND rlp.%s = %%s
|
AND rlp.%s = %%s
|
||||||
AND rlp.%s = %%s
|
AND rlp.%s = %%s
|
||||||
""" % (
|
AND rlp.%s = %%s
|
||||||
|
""" % (
|
||||||
backend.quote_name('django_content_type'), backend.quote_name('auth_rowlevelpermission'),
|
backend.quote_name('django_content_type'), backend.quote_name('auth_rowlevelpermission'),
|
||||||
backend.quote_name('model_ct_id'), backend.quote_name('id'),
|
backend.quote_name('model_ct_id'), backend.quote_name('id'),
|
||||||
backend.quote_name('app_label'), backend.quote_name('negative'),
|
backend.quote_name('app_label'),
|
||||||
backend.quote_name('owner_ct_id'),
|
backend.quote_name('owner_ct_id'),
|
||||||
backend.quote_name('owner_id'), )
|
backend.quote_name('owner_id'),backend.quote_name('negative'), )
|
||||||
cursor.execute(sql, [app_label, ContentType.objects.get_for_model(User).id, self.id])
|
#import pdb
|
||||||
|
#pdb.set_trace()
|
||||||
|
cursor.execute(sql, [app_label, ContentType.objects.get_for_model(User).id, self.id, False])
|
||||||
count = int(cursor.fetchone()[0])
|
count = int(cursor.fetchone()[0])
|
||||||
|
print "User. App: %s, Count: %d" % (app_label, count)
|
||||||
if count>0:
|
if count>0:
|
||||||
return True
|
return True
|
||||||
return self.has_module_group_row_level_perms(app_label)
|
return self.has_module_group_row_level_perms(app_label)
|
||||||
@ -434,7 +436,7 @@ class User(models.Model):
|
|||||||
#AND ug."user_id"=%s
|
#AND ug."user_id"=%s
|
||||||
#AND rlp."model_ct_id" = ct."id"
|
#AND rlp."model_ct_id" = ct."id"
|
||||||
#AND ct."app_label"=%s
|
#AND ct."app_label"=%s
|
||||||
#AND rlp."negative" = 0
|
#AND rlp."negative" = False
|
||||||
#AND rlp."owner_ct_id" = %s
|
#AND rlp."owner_ct_id" = %s
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
sql = """
|
sql = """
|
||||||
@ -444,7 +446,7 @@ class User(models.Model):
|
|||||||
AND ug.%s=%%s
|
AND ug.%s=%%s
|
||||||
AND rlp.%s = ct.%s
|
AND rlp.%s = ct.%s
|
||||||
AND ct.%s=%%s
|
AND ct.%s=%%s
|
||||||
AND rlp.%s = 0
|
AND rlp.%s = %%s
|
||||||
AND rlp.%s = %%s""" % (
|
AND rlp.%s = %%s""" % (
|
||||||
backend.quote_name('auth_user_groups'), backend.quote_name('auth_rowlevelpermission'),
|
backend.quote_name('auth_user_groups'), backend.quote_name('auth_rowlevelpermission'),
|
||||||
backend.quote_name('django_content_type'), backend.quote_name('owner_id'),
|
backend.quote_name('django_content_type'), backend.quote_name('owner_id'),
|
||||||
@ -452,8 +454,9 @@ class User(models.Model):
|
|||||||
backend.quote_name('model_ct_id'), backend.quote_name('id'),
|
backend.quote_name('model_ct_id'), backend.quote_name('id'),
|
||||||
backend.quote_name('app_label'), backend.quote_name('negative'),
|
backend.quote_name('app_label'), backend.quote_name('negative'),
|
||||||
backend.quote_name('owner_ct_id'))
|
backend.quote_name('owner_ct_id'))
|
||||||
cursor.execute(sql, [app_label, self.id, ContentType.objects.get_for_model(Group).id,])
|
cursor.execute(sql, [app_label, self.id, False, ContentType.objects.get_for_model(Group).id])
|
||||||
count = int(cursor.fetchone()[0])
|
count = int(cursor.fetchone()[0])
|
||||||
|
print "Group. App: %s, Count: %d" % (app_label, count)
|
||||||
return (count>0)
|
return (count>0)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user