From 3b884e8c8abcd1e051ef4f153a356581b7a696f1 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 24 Dec 2011 01:16:53 -0400 Subject: [PATCH] Update get_allowed_class_objects to return a generator instead of a list, filter_objects_by_access to try return to return a queryset and failing that return a filtered list --- apps/acls/models.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/acls/models.py b/apps/acls/models.py index bfdc0cf95e..05b99753a9 100644 --- a/apps/acls/models.py +++ b/apps/acls/models.py @@ -211,7 +211,7 @@ class AccessEntryManager(models.Manager): holder_type = ContentType.objects.get_for_model(requester) content_type = ContentType.objects.get_for_model(cls) - return [obj.content_object for obj in self.model.objects.filter(holder_type=holder_type, holder_id=requester.pk, content_type=content_type, permission=permission.get_stored_permission)] + return (obj.content_object for obj in self.model.objects.filter(holder_type=holder_type, holder_id=requester.pk, content_type=content_type, permission=permission.get_stored_permission)) def get_acl_url(self, obj): content_type = ContentType.objects.get_for_model(obj) @@ -242,10 +242,11 @@ class AccessEntryManager(models.Manager): return [access.permission for access in self.model.objects.filter(content_type=content_type, object_id=obj.pk, holder_type=holder_type, holder_id=holder.pk)] def filter_objects_by_access(self, permission, actor, object_list): - class_objects = self.get_allowed_class_objects(permission, actor, object_list[0]) - logger.debug('class_objects: %s' % class_objects) logger.debug('object_list: %s' % object_list) - return list(set(object_list) & set(class_objects)) + try: + return object_list.filter(pk__in=[obj.pk for obj in self.get_allowed_class_objects(permission, actor, object_list[0])]) + except AttributeError: + return list(set(object_list) & set(self.get_allowed_class_objects(permission, actor, object_list[0]))) class AccessEntry(models.Model):