diff --git a/apps/acls/models.py b/apps/acls/models.py index 942fdc18c4..bfdc0cf95e 100644 --- a/apps/acls/models.py +++ b/apps/acls/models.py @@ -1,5 +1,6 @@ import sys import types +import logging from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -20,6 +21,8 @@ _cache = {} _class_permissions = {} +logger = logging.getLogger(__name__) + def class_permissions(cls, permission_list): stored_permissions = _class_permissions.setdefault(cls, []) @@ -238,6 +241,12 @@ class AccessEntryManager(models.Manager): content_type = ContentType.objects.get_for_model(obj) 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)) + class AccessEntry(models.Model): permission = models.ForeignKey(StoredPermission, verbose_name=_(u'permission'))