Add anonymous user support to the acl model manager methods

This commit is contained in:
Roberto Rosario
2012-01-07 23:24:04 -04:00
parent b9f7939e3e
commit 595e901b64
2 changed files with 7 additions and 2 deletions

View File

@@ -9,6 +9,8 @@ from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from common.models import AnonymousUserSingleton
from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -65,6 +67,8 @@ class AccessEntryManager(models.Manager):
if actor.is_superuser or actor.is_staff: if actor.is_superuser or actor.is_staff:
return True return True
actor = AnonymousUserSingleton.objects.passthru_check(actor)
try: try:
access_entry = self.model.objects.get( access_entry = self.model.objects.get(
permission=permission.get_stored_permission(), permission=permission.get_stored_permission(),
@@ -98,6 +102,7 @@ class AccessEntryManager(models.Manager):
def get_allowed_class_objects(self, permission, actor, cls, related=None): def get_allowed_class_objects(self, permission, actor, cls, related=None):
logger.debug('related: %s' % related) logger.debug('related: %s' % related)
actor = AnonymousUserSingleton.objects.passthru_check(actor)
actor_type = ContentType.objects.get_for_model(actor) actor_type = ContentType.objects.get_for_model(actor)
content_type = ContentType.objects.get_for_model(cls) content_type = ContentType.objects.get_for_model(cls)
if related: if related: