Add convenience manager method filter_objects_by_access
This commit is contained in:
@@ -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'))
|
||||
|
||||
Reference in New Issue
Block a user