Backport ACL computation improvements

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-05-04 03:27:30 -04:00
parent d271f1503d
commit 8e731d6280
61 changed files with 701 additions and 609 deletions
+21 -20
View File
@@ -40,8 +40,8 @@ class APIDocumentTypeWorkflowListView(generics.ListAPIView):
)
AccessControlList.objects.check_access(
permissions=permission_document_type_view, user=self.request.user,
obj=document_type
obj=document_type, permissions=(permission_document_type_view,),
user=self.request.user
)
return document_type
@@ -105,8 +105,8 @@ class APIWorkflowDocumentTypeList(generics.ListCreateAPIView):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
obj=workflow
obj=workflow, permissions=(permission_required,),
user=self.request.user
)
return workflow
@@ -158,8 +158,8 @@ class APIWorkflowDocumentTypeView(generics.RetrieveDestroyAPIView):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
obj=workflow
obj=workflow, permissions=(permission_required,),
user=self.request.user
)
return workflow
@@ -261,8 +261,8 @@ class APIWorkflowStateListView(generics.ListCreateAPIView):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
obj=workflow
obj=workflow, permissions=(permission_required,),
user=self.request.user
)
return workflow
@@ -304,8 +304,8 @@ class APIWorkflowStateView(generics.RetrieveUpdateDestroyAPIView):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
obj=workflow
obj=workflow, permissions=(permission_required,),
user=self.request.user
)
return workflow
@@ -357,8 +357,8 @@ class APIWorkflowTransitionListView(generics.ListCreateAPIView):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
obj=workflow
obj=workflow, permissions=(permission_required,),
user=self.request.user
)
return workflow
@@ -411,8 +411,8 @@ class APIWorkflowTransitionView(generics.RetrieveUpdateDestroyAPIView):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
obj=workflow
obj=workflow, permissions=(permission_required,),
user=self.request.user
)
return workflow
@@ -435,8 +435,8 @@ class APIWorkflowInstanceListView(generics.ListAPIView):
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=self.request.user,
obj=document
obj=document, permissions=(permission_workflow_view,),
user=self.request.user
)
return document
@@ -460,8 +460,8 @@ class APIWorkflowInstanceView(generics.RetrieveAPIView):
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=self.request.user,
obj=document
obj=document, permissions=(permission_workflow_view,),
user=self.request.user
)
return document
@@ -488,9 +488,10 @@ class APIWorkflowInstanceLogEntryListView(generics.ListCreateAPIView):
Failing that, check for ACLs for any of the workflow's transitions.
Failing that, then raise PermissionDenied
"""
# TODO: Improvement above
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=self.request.user,
obj=document
obj=document, permissions=(permission_workflow_view,),
user=self.request.user
)
return document
+5 -3
View File
@@ -417,8 +417,9 @@ class WorkflowInstance(models.Model):
all transition options.
"""
AccessControlList.objects.check_access(
permissions=permission_workflow_transition,
user=_user, obj=self.workflow
obj=self.workflow,
permissions=(permission_workflow_transition,),
user=_user
)
except PermissionDenied:
"""
@@ -427,7 +428,8 @@ class WorkflowInstance(models.Model):
"""
queryset = AccessControlList.objects.filter_by_access(
permission=permission_workflow_transition,
user=_user, queryset=queryset
queryset=queryset,
user=_user
)
return queryset
else:
@@ -23,8 +23,8 @@ __all__ = (
class DocumentWorkflowInstanceListView(SingleObjectListView):
def dispatch(self, request, *args, **kwargs):
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=request.user,
obj=self.get_document()
obj=self.get_document(), permissions=(permission_workflow_view,),
user=request.user
)
return super(
@@ -58,8 +58,8 @@ class DocumentWorkflowInstanceListView(SingleObjectListView):
class WorkflowInstanceDetailView(SingleObjectListView):
def dispatch(self, request, *args, **kwargs):
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=request.user,
obj=self.get_workflow_instance().document
obj=self.get_workflow_instance().document,
permissions=(permission_workflow_view,), user=request.user
)
return super(
@@ -27,8 +27,8 @@ class WorkflowDocumentListView(DocumentListView):
)
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=request.user,
obj=self.workflow
obj=self.workflow, permissions=(permission_workflow_view,),
user=request.user
)
return super(
@@ -111,8 +111,8 @@ class WorkflowStateDocumentListView(DocumentListView):
)
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=self.request.user,
obj=workflow_state.workflow
obj=workflow_state.workflow,
permissions=(permission_workflow_view,), user=self.request.user
)
return workflow_state
@@ -121,8 +121,8 @@ class WorkflowStateDocumentListView(DocumentListView):
class WorkflowStateListView(SingleObjectListView):
def dispatch(self, request, *args, **kwargs):
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=request.user,
obj=self.get_workflow()
obj=self.get_workflow(), permissions=(permission_workflow_view,),
user=request.user
)
return super(
@@ -345,7 +345,7 @@ class SetupWorkflowStateCreateView(SingleObjectCreateView):
def get_workflow(self):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=(permission_workflow_edit,), obj=workflow,
obj=workflow, permissions=(permission_workflow_edit,),
user=self.request.user
)
return workflow
@@ -380,7 +380,7 @@ class SetupWorkflowStateDeleteView(SingleObjectDeleteView):
def get_workflow(self):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=(permission_workflow_edit,), obj=workflow,
obj=workflow, permissions=(permission_workflow_edit,),
user=self.request.user
)
return workflow
@@ -410,8 +410,8 @@ class SetupWorkflowStateListView(SingleObjectListView):
def dispatch(self, request, *args, **kwargs):
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=request.user,
obj=self.get_workflow()
obj=self.get_workflow(), permissions=(permission_workflow_view,),
user=request.user
)
return super(
@@ -492,7 +492,7 @@ class SetupWorkflowTransitionCreateView(SingleObjectCreateView):
def get_workflow(self):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
AccessControlList.objects.check_access(
permissions=(permission_workflow_edit,), obj=workflow,
obj=workflow, permissions=(permission_workflow_edit,),
user=self.request.user
)
return workflow
@@ -580,8 +580,9 @@ class SetupWorkflowTransitionTriggerEventListView(FormView):
def dispatch(self, *args, **kwargs):
AccessControlList.objects.check_access(
permissions=permission_workflow_edit,
user=self.request.user, obj=self.get_object().workflow
obj=self.get_object().workflow,
permissions=(permission_workflow_edit,),
user=self.request.user
)
EventType.refresh()