From e83f6e55a0f2bfd9a25f69172122c5df97455582 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 12 Dec 2018 23:12:52 -0400 Subject: [PATCH] Permission: Permission reference to property Convert the volatile permission reference in the stored permission model from a method to a property to allow future caching optimization. Signed-off-by: Roberto Rosario --- mayan/apps/acls/views.py | 4 ++-- mayan/apps/permissions/classes.py | 1 - mayan/apps/permissions/models.py | 10 ++++++---- mayan/apps/permissions/serializers.py | 2 +- mayan/apps/permissions/views.py | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index 8531829781..b8ccc253ab 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -173,8 +173,8 @@ class ACLPermissionsView(AssignRemoveView): entries = sorted( entries, key=lambda x: ( - x.get_volatile_permission().namespace.label, - x.get_volatile_permission().label + x.volatile_permission.namespace.label, + x.volatile_permission.label ) ) diff --git a/mayan/apps/permissions/classes.py b/mayan/apps/permissions/classes.py index 3f984ad85a..28141dce9d 100644 --- a/mayan/apps/permissions/classes.py +++ b/mayan/apps/permissions/classes.py @@ -138,7 +138,6 @@ class Permission(object): namespace=self.namespace.name, name=self.name, ) - stored_permission.volatile_permission = self self.__class__._stored_permissions_cache[ self.uuid ] = stored_permission diff --git a/mayan/apps/permissions/models.py b/mayan/apps/permissions/models.py index c0a8463c26..d0eb4a7b2f 100644 --- a/mayan/apps/permissions/models.py +++ b/mayan/apps/permissions/models.py @@ -34,24 +34,26 @@ class StoredPermission(models.Model): def __str__(self): try: - return force_text(self.get_volatile_permission()) + return force_text(self.volatile_permission) except KeyError: return self.name - def get_volatile_permission_id(self): + @property + def volatile_permission_id(self): """ Return the identifier of the real permission class represented by this model instance. """ return '{}.{}'.format(self.namespace, self.name) - def get_volatile_permission(self): + @property + def volatile_permission(self): """ Returns the real class of the permission represented by this model instance. """ return Permission.get( - pk=self.get_volatile_permission_id(), proxy_only=True + pk=self.volatile_permission_id, proxy_only=True ) def natural_key(self): diff --git a/mayan/apps/permissions/serializers.py b/mayan/apps/permissions/serializers.py index 0a8d5e4e95..4753bb3867 100644 --- a/mayan/apps/permissions/serializers.py +++ b/mayan/apps/permissions/serializers.py @@ -20,7 +20,7 @@ class PermissionSerializer(serializers.Serializer): def to_representation(self, instance): if isinstance(instance, StoredPermission): return super(PermissionSerializer, self).to_representation( - instance.get_volatile_permission() + instance.volatile_permission ) else: return super(PermissionSerializer, self).to_representation( diff --git a/mayan/apps/permissions/views.py b/mayan/apps/permissions/views.py index fc6b9c3b70..e5ceb71ce3 100644 --- a/mayan/apps/permissions/views.py +++ b/mayan/apps/permissions/views.py @@ -129,8 +129,8 @@ class SetupRolePermissionsView(AssignRemoveView): entries = sorted( entries, key=lambda x: ( - x.get_volatile_permission().namespace.label, - x.get_volatile_permission().label + x.volatile_permission.namespace.label, + x.volatile_permission.label ) )