From 7c899a245de0c405bf7eddad6277f59d65704a15 Mon Sep 17 00:00:00 2001 From: Jason Ward Date: Wed, 26 Sep 2012 16:01:01 -0400 Subject: [PATCH] refs #7: doing the correct number of queries now --- authority/permissions.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/authority/permissions.py b/authority/permissions.py index 590fe5a..d4667da 100644 --- a/authority/permissions.py +++ b/authority/permissions.py @@ -50,8 +50,6 @@ class BasePermission(object): return {}, {} perms = Permission.objects.filter( Q(user__pk=self.user.pk) | Q(group__in=self.user.groups.all()), - ).select_related( - 'group', ) user_permissions = {} group_permissions = {} @@ -63,7 +61,10 @@ class BasePermission(object): perm.codename, perm.approved, )] = True - if perm.group and self.user in perm.group.user_set.all(): + # If the user has the permission do for something, but perm.user != + # self.user then by definition that permission came from the + # group. + else: group_permissions[( perm.object_id, perm.content_type_id, @@ -162,11 +163,13 @@ class BasePermission(object): return False if self.use_smart_cache: + content_type_pk = Permission.objects.get_content_type(obj).pk + def _user_has_perms(cached_perms): # Check to see if the permission is in the cache. return cached_perms.get(( obj.pk, - Permission.objects.get_content_type(obj).pk, + content_type_pk, perm, approved, ))