Checking for access also checks for permission. Remove reduntant check.

Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
Michael Price
2018-03-14 15:31:49 -04:00
committed by Roberto Rosario
parent 0c4a52558b
commit c69147bdc5
4 changed files with 38 additions and 72 deletions

View File

@@ -1,13 +1,10 @@
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from rest_framework import generics from rest_framework import generics
from permissions import Permission
from .models import AccessControlList from .models import AccessControlList
from .permissions import permission_acl_edit, permission_acl_view from .permissions import permission_acl_edit, permission_acl_view
from .serializers import ( from .serializers import (
@@ -37,14 +34,10 @@ class APIObjectACLListView(generics.ListCreateAPIView):
else: else:
permission_required = permission_acl_edit permission_required = permission_acl_edit
try: AccessControlList.objects.check_access(
Permission.check_permissions( permissions=permission_required, user=self.request.user,
self.request.user, permissions=(permission_required,) obj=content_object
) )
except PermissionDenied:
AccessControlList.objects.check_access(
permission_required, self.request.user, content_object
)
return content_object return content_object
@@ -100,14 +93,10 @@ class APIObjectACLView(generics.RetrieveDestroyAPIView):
content_type.model_class(), pk=self.kwargs['object_pk'] content_type.model_class(), pk=self.kwargs['object_pk']
) )
try: AccessControlList.objects.check_access(
Permission.check_permissions( permissions=permission_required, user=self.request.user,
self.request.user, permissions=(permission_required,) obj=content_object
) )
except PermissionDenied:
AccessControlList.objects.check_access(
permission_required, self.request.user, content_object
)
return content_object return content_object
@@ -135,14 +124,10 @@ class APIObjectACLPermissionListView(generics.ListCreateAPIView):
content_type.model_class(), pk=self.kwargs['object_pk'] content_type.model_class(), pk=self.kwargs['object_pk']
) )
try: AccessControlList.objects.check_access(
Permission.check_permissions( permissions=permission_acl_view, user=self.request.user,
self.request.user, permissions=(permission_acl_view,) obj=content_object
) )
except PermissionDenied:
AccessControlList.objects.check_access(
permission_acl_view, self.request.user, content_object
)
return content_object return content_object
@@ -196,14 +181,10 @@ class APIObjectACLPermissionView(generics.RetrieveDestroyAPIView):
content_type.model_class(), pk=self.kwargs['object_pk'] content_type.model_class(), pk=self.kwargs['object_pk']
) )
try: AccessControlList.objects.check_access(
Permission.check_permissions( permissions=permission_acl_view, user=self.request.user,
self.request.user, permissions=(permission_acl_view,) obj=content_object
) )
except PermissionDenied:
AccessControlList.objects.check_access(
permission_acl_view, self.request.user, content_object
)
return content_object return content_object

View File

@@ -1,13 +1,11 @@
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from rest_framework import generics from rest_framework import generics
from acls.models import AccessControlList from acls.models import AccessControlList
from documents.models import Document from documents.models import Document
from permissions import Permission
from .permissions import ( from .permissions import (
permission_comment_create, permission_comment_delete, permission_comment_create, permission_comment_delete,
@@ -82,14 +80,10 @@ class APICommentView(generics.RetrieveDestroyAPIView):
document = get_object_or_404(Document, pk=self.kwargs['document_pk']) document = get_object_or_404(Document, pk=self.kwargs['document_pk'])
try: AccessControlList.objects.check_access(
Permission.check_permissions( permissions=permission_required, user=self.request.user,
self.request.user, (permission_required,) obj=document
) )
except PermissionDenied:
AccessControlList.objects.check_access(
permission_required, self.request.user, document
)
return document return document

View File

@@ -18,7 +18,6 @@ from acls.models import AccessControlList
from common.validators import validate_internal_name from common.validators import validate_internal_name
from documents.models import Document, DocumentType from documents.models import Document, DocumentType
from events.models import StoredEventType from events.models import StoredEventType
from permissions import Permission
from .error_logs import error_log_state_actions from .error_logs import error_log_state_actions
from .literals import ( from .literals import (
@@ -389,32 +388,23 @@ class WorkflowInstance(models.Model):
if _user: if _user:
try: try:
Permission.check_permissions( """
requester=_user, permissions=( Check for ACL access to the workflow, if true, allow
permission_workflow_transition, all transition options.
) """
AccessControlList.objects.check_access(
permissions=permission_workflow_transition,
user=_user, obj=self.workflow
) )
except PermissionDenied: except PermissionDenied:
try: """
""" If not ACL access to the workflow, filter transition
Check for ACL access to the workflow, if true, allow options by each transition ACL access
all transition options. """
""" queryset = AccessControlList.objects.filter_by_access(
permission=permission_workflow_transition,
AccessControlList.objects.check_access( user=_user, queryset=queryset
permissions=permission_workflow_transition, )
user=_user, obj=self.workflow
)
except PermissionDenied:
"""
If not ACL access to the workflow, filter transition
options by each transition ACL access
"""
queryset = AccessControlList.objects.filter_by_access(
permission=permission_workflow_transition,
user=_user, queryset=queryset
)
return queryset return queryset
else: else:
""" """
@@ -422,7 +412,6 @@ class WorkflowInstance(models.Model):
whose document type has this workflow is created. We return an whose document type has this workflow is created. We return an
empty transition queryset. empty transition queryset.
""" """
return WorkflowTransition.objects.none() return WorkflowTransition.objects.none()

View File

@@ -18,7 +18,9 @@ class MayanPermission(BasePermission):
if required_permission: if required_permission:
try: try:
Permission.check_permissions(request.user, required_permission) Permission.check_permissions(
requester=request.user, permissions=required_permission
)
except PermissionDenied: except PermissionDenied:
return False return False
else: else: