Workflows: Update generic view interface
Add icons for the workflow runtime proxy views. Fix failing tests. Convert runtime proxy links to use the new list facet menu. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -268,13 +268,13 @@ class DocumentStatesApp(MayanAppConfig):
|
||||
link_workflow_instance_transition
|
||||
), sources=(WorkflowInstance,)
|
||||
)
|
||||
menu_object.bind_links(
|
||||
menu_list_facet.bind_links(
|
||||
links=(
|
||||
link_workflow_runtime_proxy_document_list,
|
||||
link_workflow_runtime_proxy_state_list,
|
||||
), sources=(WorkflowRuntimeProxy,)
|
||||
)
|
||||
menu_object.bind_links(
|
||||
menu_list_facet.bind_links(
|
||||
links=(
|
||||
link_workflow_runtime_proxy_state_document_list,
|
||||
), sources=(WorkflowStateRuntimeProxy,)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from mayan.apps.appearance.classes import Icon
|
||||
from mayan.apps.documents.icons import icon_document_list
|
||||
|
||||
icon_document_workflow_instance_list = Icon(
|
||||
driver_name='fontawesome', symbol='sitemap'
|
||||
@@ -18,6 +19,15 @@ icon_workflow_edit = Icon(driver_name='fontawesome', symbol='pencil-alt')
|
||||
icon_workflow_list = Icon(driver_name='fontawesome', symbol='sitemap')
|
||||
icon_workflow_preview = Icon(driver_name='fontawesome', symbol='eye')
|
||||
|
||||
icon_workflow_runtime_proxy_document_list = icon_document_list
|
||||
icon_workflow_runtime_proxy_list = Icon(
|
||||
driver_name='fontawesome', symbol='sitemap'
|
||||
)
|
||||
icon_workflow_runtime_proxy_state_document_list = icon_document_list
|
||||
icon_workflow_runtime_proxy_state_list = Icon(
|
||||
driver_name='fontawesome', symbol='circle'
|
||||
)
|
||||
|
||||
icon_workflow_state_action_delete = Icon(
|
||||
driver_name='fontawesome', symbol='times'
|
||||
)
|
||||
|
||||
@@ -5,16 +5,20 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from mayan.apps.documents.icons import icon_document_type
|
||||
from mayan.apps.navigation import Link
|
||||
|
||||
|
||||
from .icons import (
|
||||
icon_document_workflow_instance_list, icon_tool_launch_all_workflows,
|
||||
icon_workflow_create, icon_workflow_delete, icon_workflow_edit,
|
||||
icon_workflow_list, icon_workflow_preview, icon_workflow_state,
|
||||
icon_workflow_state_action, icon_workflow_state_action_delete,
|
||||
icon_workflow_state_action_edit, icon_workflow_state_action_list,
|
||||
icon_workflow_state_action_selection, icon_workflow_state_create,
|
||||
icon_workflow_state_delete, icon_workflow_state_edit,
|
||||
icon_workflow_transition, icon_workflow_transition_create,
|
||||
icon_workflow_transition_delete, icon_workflow_transition_edit
|
||||
icon_workflow_list, icon_workflow_preview,
|
||||
icon_workflow_runtime_proxy_document_list, icon_workflow_runtime_proxy_list,
|
||||
icon_workflow_runtime_proxy_state_document_list,
|
||||
icon_workflow_runtime_proxy_state_list, icon_workflow_state,
|
||||
icon_workflow_state_action_delete, icon_workflow_state_action_edit,
|
||||
icon_workflow_state_action_list, icon_workflow_state_action_selection,
|
||||
icon_workflow_state_create, icon_workflow_state_delete,
|
||||
icon_workflow_state_edit, icon_workflow_transition,
|
||||
icon_workflow_transition_create, icon_workflow_transition_delete,
|
||||
icon_workflow_transition_edit
|
||||
)
|
||||
from .permissions import (
|
||||
permission_workflow_create, permission_workflow_delete,
|
||||
@@ -152,7 +156,7 @@ link_workflow_transition_edit = Link(
|
||||
)
|
||||
link_workflow_transition_list = Link(
|
||||
icon_class=icon_workflow_transition,
|
||||
kwargs={'workflow_transition_id': 'resolved_object.pk'},
|
||||
kwargs={'workflow_id': 'resolved_object.pk'},
|
||||
permission=permission_workflow_view, text=_('Transitions'),
|
||||
view='workflows:workflow_transition_list'
|
||||
)
|
||||
@@ -165,20 +169,24 @@ link_workflow_transition_triggers = Link(
|
||||
# Workflow runtime proxies
|
||||
|
||||
link_workflow_runtime_proxy_document_list = Link(
|
||||
icon_class=icon_workflow_runtime_proxy_document_list,
|
||||
kwargs={'workflow_runtime_proxy_id': 'resolved_object.pk'},
|
||||
permission=permission_workflow_view, text=_('Workflow documents'),
|
||||
view='workflows:workflow_runtime_proxy_document_list'
|
||||
)
|
||||
link_workflow_runtime_proxy_list = Link(
|
||||
icon_class=icon_workflow_list, permission=permission_workflow_view,
|
||||
text=_('Workflows'), view='workflows:workflow_runtime_proxy_list'
|
||||
icon_class=icon_workflow_runtime_proxy_list,
|
||||
permission=permission_workflow_view, text=_('Workflows'),
|
||||
view='workflows:workflow_runtime_proxy_list'
|
||||
)
|
||||
link_workflow_runtime_proxy_state_document_list = Link(
|
||||
icon_class=icon_workflow_runtime_proxy_state_document_list,
|
||||
kwargs={'workflow_runtime_proxy_state_id': 'resolved_object.pk'},
|
||||
permission=permission_workflow_view, text=_('State documents'),
|
||||
view='workflows:workflow_runtime_proxy_state_document_list'
|
||||
)
|
||||
link_workflow_runtime_proxy_state_list = Link(
|
||||
icon_class=icon_workflow_runtime_proxy_state_list,
|
||||
kwargs={'workflow_runtime_proxy_id': 'resolved_object.pk'},
|
||||
permission=permission_workflow_view, text=_('States'),
|
||||
view='workflows:workflow_runtime_proxy_state_list'
|
||||
|
||||
@@ -485,8 +485,8 @@ class WorkflowInstance(models.Model):
|
||||
all transition options.
|
||||
"""
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_workflow_transition,
|
||||
user=_user, obj=self.workflow
|
||||
obj=self.workflow,
|
||||
permission=permission_workflow_transition, user=_user
|
||||
)
|
||||
except PermissionDenied:
|
||||
"""
|
||||
@@ -495,7 +495,7 @@ class WorkflowInstance(models.Model):
|
||||
"""
|
||||
queryset = AccessControlList.objects.restrict_queryset(
|
||||
permission=permission_workflow_transition,
|
||||
user=_user, queryset=queryset
|
||||
queryset=queryset, user=_user
|
||||
)
|
||||
return queryset
|
||||
else:
|
||||
|
||||
@@ -94,7 +94,7 @@ class DocumentStateIndexingTestCase(BaseTestCase):
|
||||
|
||||
self.document.workflows.first().do_transition(
|
||||
transition=self.workflow_transition,
|
||||
user=self.admin_user
|
||||
user=self._test_case_user
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
@@ -111,7 +111,7 @@ class DocumentStateIndexingTestCase(BaseTestCase):
|
||||
|
||||
self.document.workflows.first().do_transition(
|
||||
transition=self.workflow_transition,
|
||||
user=self.admin_user
|
||||
user=self._test_case_user
|
||||
)
|
||||
|
||||
self.document.delete(to_trash=False)
|
||||
|
||||
@@ -56,7 +56,7 @@ class DocumentWorkflowInstanceListView(SingleObjectListView):
|
||||
) % self.get_document(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_document().workflows.all()
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ class WorkflowInstanceDetailView(SingleObjectListView):
|
||||
'workflow_instance': self.get_workflow_instance(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_workflow_instance().log_entries.order_by('-datetime')
|
||||
|
||||
def get_workflow_instance(self):
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
@@ -71,14 +70,14 @@ class WorkflowRuntimeProxyListView(SingleObjectListView):
|
||||
'title': _('Workflows'),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return WorkflowRuntimeProxy.objects.all()
|
||||
|
||||
|
||||
class WorkflowRuntimeProxyStateDocumentListView(ExternalObjectMixin, DocumentListView):
|
||||
external_object_class = WorkflowRuntimeProxy
|
||||
external_object_class = WorkflowStateRuntimeProxy
|
||||
external_object_permission = permission_workflow_view
|
||||
external_object_pk_url_kwarg = 'workflow_runtime_proxy_id'
|
||||
external_object_pk_url_kwarg = 'workflow_runtime_proxy_state_id'
|
||||
|
||||
def get_document_queryset(self):
|
||||
return self.get_workflow_state().get_documents()
|
||||
@@ -106,15 +105,6 @@ class WorkflowRuntimeProxyStateDocumentListView(ExternalObjectMixin, DocumentLis
|
||||
return context
|
||||
|
||||
def get_workflow_state(self):
|
||||
workflow_state = get_object_or_404(
|
||||
klass=WorkflowRuntimeProxyStateDocumentListView,
|
||||
pk=self.kwargs['workflow_instance_state_id'],
|
||||
workflow_pk=self.get_workflow()
|
||||
)
|
||||
|
||||
return workflow_state
|
||||
|
||||
def get_workflow(self):
|
||||
return self.get_external_object()
|
||||
|
||||
|
||||
@@ -142,7 +132,7 @@ class WorkflowRuntimeProxyStateListView(ExternalObjectMixin, SingleObjectListVie
|
||||
'title': _('States of workflow: %s') % self.get_workflow()
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return WorkflowStateRuntimeProxy.objects.filter(
|
||||
workflow=self.get_workflow()
|
||||
)
|
||||
|
||||
@@ -322,7 +322,7 @@ class WorkflowStateActionListView(SingleObjectListView):
|
||||
def get_form_schema(self):
|
||||
return {'fields': self.get_class().fields}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_workflow_state().actions.all()
|
||||
|
||||
def get_workflow_state(self):
|
||||
@@ -380,7 +380,7 @@ class WorkflowStateCreateView(ExternalObjectMixin, SingleObjectCreateView):
|
||||
def get_instance_extra_data(self):
|
||||
return {'workflow': self.get_workflow()}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_workflow().states.all()
|
||||
|
||||
def get_success_url(self):
|
||||
@@ -457,7 +457,7 @@ class WorkflowStateListView(ExternalObjectMixin, SingleObjectListView):
|
||||
'title': _('States of workflow: %s') % self.get_workflow()
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_workflow().states.all()
|
||||
|
||||
def get_workflow(self):
|
||||
@@ -488,7 +488,7 @@ class WorkflowTransitionCreateView(ExternalObjectMixin, SingleObjectCreateView):
|
||||
def get_instance_extra_data(self):
|
||||
return {'workflow': self.get_workflow()}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_workflow().transitions.all()
|
||||
|
||||
def get_success_url(self):
|
||||
@@ -575,7 +575,7 @@ class WorkflowTransitionListView(ExternalObjectMixin, SingleObjectListView):
|
||||
) % self.get_workflow()
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_workflow().transitions.all()
|
||||
|
||||
def get_workflow(self):
|
||||
|
||||
Reference in New Issue
Block a user