From 7335a12b48974dac328865dc52ff0f4a636506c6 Mon Sep 17 00:00:00 2001 From: Joseph Kocherhans Date: Fri, 24 Mar 2006 22:20:41 +0000 Subject: [PATCH] magic-removal: fixed django.contrib.auth.models.User.get_group_permissions. It was returning content_type_id.codename rather than app_label.codename for each permissions so has_perm didn't work for group permissions. git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2561 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/auth/models.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py index fe26ff94d7..902cb145b6 100644 --- a/django/contrib/auth/models.py +++ b/django/contrib/auth/models.py @@ -133,22 +133,26 @@ class User(models.Model): cursor = connection.cursor() # The SQL below works out to the following, after DB quoting: # cursor.execute(""" - # SELECT p.content_type_id, p.codename - # FROM auth_permission p, auth_group_permissions gp, auth_user_groups ug - # WHERE p.id = gp.permission_id - # AND gp.group_id = ug.group_id - # AND ug.user_id = %s""", [self.id]) + # SELECT ct."app_label", p."codename" + # FROM "auth_permission" p, "auth_group_permissions" gp, "auth_user_groups" ug, "django_content_type" ct + # WHERE p."id" = gp."permission_id" + # AND gp."group_id" = ug."group_id" + # AND ct."id" = p."content_type_id" + # AND ug."user_id" = %s, [self.id]) sql = """ - SELECT p.%s, p.%s - FROM %s p, %s gp, %s ug + SELECT ct.%s, p.%s + FROM %s p, %s gp, %s ug, %s ct WHERE p.%s = gp.%s AND gp.%s = ug.%s + AND ct.%s = p.%s AND ug.%s = %%s""" % ( - backend.quote_name('content_type_id'), backend.quote_name('codename'), + backend.quote_name('app_label'), backend.quote_name('codename'), backend.quote_name('auth_permission'), backend.quote_name('auth_group_permissions'), - backend.quote_name('auth_user_groups'), backend.quote_name('id'), - backend.quote_name('permission_id'), backend.quote_name('group_id'), - backend.quote_name('group_id'), backend.quote_name('user_id')) + backend.quote_name('auth_user_groups'), backend.quote_name('django_content_type'), + backend.quote_name('id'), backend.quote_name('permission_id'), + backend.quote_name('group_id'), backend.quote_name('group_id'), + backend.quote_name('id'), backend.quote_name('content_type_id'), + backend.quote_name('user_id'),) cursor.execute(sql, [self.id]) self._group_perm_cache = sets.Set(["%s.%s" % (row[0], row[1]) for row in cursor.fetchall()]) return self._group_perm_cache