From 753053ae4756827758e104432e642e088ee9fe86 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 13 Oct 2012 02:47:38 -0400 Subject: [PATCH] Revert permission holder and role members caching changes, only cache stored permissions as these never change --- apps/permissions/managers.py | 11 +++-------- apps/permissions/models.py | 18 +----------------- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/apps/permissions/managers.py b/apps/permissions/managers.py index 7c82a562a2..3db2ad66a1 100644 --- a/apps/permissions/managers.py +++ b/apps/permissions/managers.py @@ -19,14 +19,9 @@ class RoleMemberManager(models.Manager): """ Return the roles to which a member_obj belongs to. """ - try: - return self.model._member_roles_cache[member_obj] - except KeyError: - member_obj = AnonymousUserSingleton.objects.passthru_check(member_obj) - member_type = ContentType.objects.get_for_model(member_obj) - roles = [role_member.role for role_member in self.model.objects.filter(member_type=member_type, member_id=member_obj.pk)] - self.model._member_roles_cache[member_obj] = roles - return roles + member_obj = AnonymousUserSingleton.objects.passthru_check(member_obj) + member_type = ContentType.objects.get_for_model(member_obj) + return (role_member.role for role_member in self.model.objects.filter(member_type=member_type, member_id=member_obj.pk)) class StoredPermissionManager(models.Manager): diff --git a/apps/permissions/models.py b/apps/permissions/models.py index 1a5361df07..b9d261c064 100644 --- a/apps/permissions/models.py +++ b/apps/permissions/models.py @@ -124,8 +124,6 @@ Permission._default_manager = Permission.objects class StoredPermission(models.Model): - _holders_cache = {} - namespace = models.CharField(max_length=64, verbose_name=_(u'namespace')) name = models.CharField(max_length=64, verbose_name=_(u'name')) @@ -145,13 +143,7 @@ class StoredPermission(models.Model): return unicode(getattr(self, 'volatile_permission', self.name)) def get_holders(self): - self.__class__._holders_cache.setdefault(self, None) - if self.__class__._holders_cache[self] is not None: - return self.__class__._holders_cache[self] - else: - holders = [holder.holder_object for holder in self.permissionholder_set.all()] - self.__class__._holders_cache[self] = holders - return holders + return (holder.holder_object for holder in self.permissionholder_set.all()) def requester_has_this(self, actor): actor = AnonymousUserSingleton.objects.passthru_check(actor) @@ -183,8 +175,6 @@ class StoredPermission(models.Model): def grant_to(self, actor): actor = AnonymousUserSingleton.objects.passthru_check(actor) permission_holder, created = PermissionHolder.objects.get_or_create(permission=self, holder_type=ContentType.objects.get_for_model(actor), holder_id=actor.pk) - if created: - self.__class__._holders_cache[self] = None return created def revoke_from(self, actor): @@ -195,7 +185,6 @@ class StoredPermission(models.Model): except PermissionHolder.DoesNotExist: return False else: - self.__class__._holders_cache[self] = None return True @@ -239,15 +228,12 @@ class Role(models.Model): member_id=member.pk) if not created: raise Exception('Unable to add member to role') - else: - RoleMember._member_roles_cache = None def remove_member(self, member): member = AnonymousUserSingleton.objects.passthru_check(member) member_type=ContentType.objects.get_for_model(member) role_member = RoleMember.objects.get(role=self, member_type=member_type, member_id=member.pk) role_member.delete() - RoleMember._member_roles_cache = None def members(self, filter_dict=None): filter_dict = filter_dict or {} @@ -255,8 +241,6 @@ class Role(models.Model): class RoleMember(models.Model): - _member_roles_cache = {} - role = models.ForeignKey(Role, verbose_name=_(u'role')) member_type = models.ForeignKey(ContentType, related_name='role_member',