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 <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user