Add workflow state and transition edit views

This commit is contained in:
Roberto Rosario
2015-01-17 01:56:05 -04:00
parent 8fa06040ef
commit 32250a5cea
4 changed files with 82 additions and 14 deletions

View File

@@ -17,8 +17,9 @@ from .links import (
link_document_workflow_instance_list, link_setup_workflow_create,
link_setup_workflow_delete, link_setup_workflow_edit,
link_setup_workflow_list, link_setup_workflow_states,
link_setup_workflow_states_create, link_setup_workflow_transitions,
link_setup_workflow_transitions_create, link_setup_workflow_document_types,
link_setup_workflow_state_create, link_setup_workflow_state_edit,
link_setup_workflow_transitions, link_setup_workflow_transition_create,
link_setup_workflow_transition_edit, link_setup_workflow_document_types,
link_workflow_instance_detail, link_workflow_instance_transition
)
@@ -86,4 +87,6 @@ register_links([Document], [link_document_workflow_instance_list], menu_name='fo
register_links([WorkflowInstance], [link_workflow_instance_detail, link_workflow_instance_transition])
register_links([Workflow, 'document_states:setup_workflow_create', 'document_states:setup_workflow_list'], [link_setup_workflow_list, link_setup_workflow_create], menu_name='secondary_menu')
register_links([Workflow], [link_setup_workflow_states, link_setup_workflow_transitions, link_setup_workflow_document_types, link_setup_workflow_edit, link_setup_workflow_delete])
register_links([Workflow], [link_setup_workflow_states_create, link_setup_workflow_transitions_create], menu_name='sidebar')
register_links([Workflow], [link_setup_workflow_state_create, link_setup_workflow_transition_create], menu_name='sidebar')
register_links([WorkflowState], [link_setup_workflow_state_edit])
register_links([WorkflowTransition], [link_setup_workflow_transition_edit])

View File

@@ -8,13 +8,18 @@ link_setup_workflow_delete = {'text': _('Delete'), 'view': 'document_states:setu
link_setup_workflow_edit = {'text': _('Edit'), 'view': 'document_states:setup_workflow_edit', 'args': 'object.pk', 'famfam': 'table_edit'}
link_setup_workflow_states = {'text': _('States'), 'view': 'document_states:setup_workflow_states', 'args': 'object.pk', 'famfam': 'style'}
link_setup_workflow_states_create = {'text': _('Create state'), 'view': 'document_states:setup_workflow_states_create', 'args': 'object.pk', 'famfam': 'style_add'}
link_setup_workflow_state_create = {'text': _('Create state'), 'view': 'document_states:setup_workflow_state_create', 'args': 'object.pk', 'famfam': 'style_add'}
link_setup_workflow_state_edit = {'text': _('Edit'), 'view': 'document_states:setup_workflow_state_edit', 'args': 'object.pk', 'famfam': 'pencil'}
link_setup_workflow_transitions = {'text': _('Transitions'), 'view': 'document_states:setup_workflow_transitions', 'args': 'object.pk', 'famfam': 'lightning'}
link_setup_workflow_transitions_create = {'text': _('Create transition'), 'view': 'document_states:setup_workflow_transitions_create', 'args': 'object.pk', 'famfam': 'lightning_add'}
link_setup_workflow_transition_create = {'text': _('Create transition'), 'view': 'document_states:setup_workflow_transition_create', 'args': 'object.pk', 'famfam': 'lightning_add'}
link_setup_workflow_transition_edit = {'text': _('Edit'), 'view': 'document_states:setup_workflow_transition_edit', 'args': 'object.pk', 'famfam': 'pencil'}
link_setup_workflow_document_types = {'text': _('Document types'), 'view': 'document_states:setup_workflow_document_types', 'args': 'object.pk', 'famfam': 'layout'}
link_document_workflow_instance_list = {'text': _('Workflows'), 'view': 'document_states:document_workflow_instance_list', 'args': 'object.pk', 'famfam': 'table'}
link_workflow_instance_detail = {'text': _('Detail'), 'view': 'document_states:workflow_instance_detail', 'args': 'workflow_instance.pk', 'famfam': 'table'}
link_workflow_instance_transition = {'text': _('Transition'), 'view': 'document_states:workflow_instance_transition', 'args': 'workflow_instance.pk', 'famfam': 'table_lightning'}

View File

@@ -3,8 +3,9 @@ from django.conf.urls import patterns, url
from .views import (
SetupWorkflowCreateView, SetupWorkflowDeleteView, SetupWorkflowEditView,
SetupWorkflowListView, SetupWorkflowStateListView,
SetupWorkflowStateCreateView, SetupWorkflowTransitionListView,
SetupWorkflowTransitionCreateView, DocumentWorkflowInstanceListView,
SetupWorkflowStateCreateView, SetupWorkflowStateEditView,
SetupWorkflowTransitionListView, SetupWorkflowTransitionCreateView,
SetupWorkflowTransitionEditView, DocumentWorkflowInstanceListView,
WorkflowInstanceDetailView, WorkflowInstanceTransitionView
)
@@ -14,10 +15,13 @@ urlpatterns = patterns('',
url(r'^setup/(?P<pk>\d+)/edit/$', SetupWorkflowEditView.as_view(), name='setup_workflow_edit'),
url(r'^setup/(?P<pk>\d+)/delete/$', SetupWorkflowDeleteView.as_view(), name='setup_workflow_delete'),
url(r'^setup/(?P<pk>\d+)/states/$', SetupWorkflowStateListView.as_view(), name='setup_workflow_states'),
url(r'^setup/(?P<pk>\d+)/states/create/$', SetupWorkflowStateCreateView.as_view(), name='setup_workflow_states_create'),
url(r'^setup/(?P<pk>\d+)/states/create/$', SetupWorkflowStateCreateView.as_view(), name='setup_workflow_state_create'),
url(r'^setup/workflow/state/(?P<pk>\d+)/edit/$', SetupWorkflowStateEditView.as_view(), name='setup_workflow_state_edit'),
url(r'^setup/(?P<pk>\d+)/transitions/$', SetupWorkflowTransitionListView.as_view(), name='setup_workflow_transitions'),
url(r'^setup/(?P<pk>\d+)/transitions/create/$', SetupWorkflowTransitionCreateView.as_view(), name='setup_workflow_transitions_create'),
url(r'^setup/(?P<pk>\d+)/transitions/create/$', SetupWorkflowTransitionCreateView.as_view(), name='setup_workflow_transition_create'),
url(r'^setup/workflow/transitions/(?P<pk>\d+)/edit/$', SetupWorkflowTransitionEditView.as_view(), name='setup_workflow_transition_edit'),
url(r'^document/(?P<pk>\d+)/workflows/$', DocumentWorkflowInstanceListView.as_view(), name='document_workflow_instance_list'),
url(r'^document/workflows/(?P<pk>\d+)/$', WorkflowInstanceDetailView.as_view(), name='workflow_instance_detail'),

View File

@@ -26,7 +26,7 @@ from .forms import (
WorkflowInstanceDetailForm, WorkflowInstanceTransitionForm,
WorkflowStateForm, WorkflowTransitionForm
)
from .models import Workflow, WorkflowInstance
from .models import Workflow, WorkflowInstance, WorkflowState, WorkflowTransition
from .permissions import (
PERMISSION_WORKFLOW_CREATE, PERMISSION_WORKFLOW_DELETE,
PERMISSION_WORKFLOW_EDIT, PERMISSION_WORKFLOW_VIEW,
@@ -151,8 +151,8 @@ class WorkflowInstanceTransitionView(FormView):
'object': self.get_workflow_instance().document,
'workflow_instance': self.get_workflow_instance(),
'navigation_object_list': [
{'object': 'object', 'name': _('Index')},
{'object': 'workflow_instance', 'name': _('Node')}
{'object': 'object'},
{'object': 'workflow_instance'}
],
'title': _('Do transition for workflow: %s') % self.get_workflow_instance(),
'submit_label': _('Submit'),
@@ -186,13 +186,13 @@ class SetupWorkflowCreateView(SingleObjectCreateView):
class SetupWorkflowEditView(SingleObjectEditView):
form_class = WorkflowForm
model = Workflow
object_permission = PERMISSION_WORKFLOW_EDIT
view_permission = PERMISSION_WORKFLOW_EDIT
success_url = reverse_lazy('document_states:setup_workflow_list')
class SetupWorkflowDeleteView(SingleObjectDeleteView):
model = Workflow
object_permission = PERMISSION_WORKFLOW_DELETE
view_permission = PERMISSION_WORKFLOW_DELETE
success_url = reverse_lazy('document_states:setup_workflow_list')
@@ -263,8 +263,34 @@ class SetupWorkflowStateCreateView(SingleObjectCreateView):
return super(SetupWorkflowStateCreateView, self).form_valid(form)
class SetupWorkflowStateEditView(SingleObjectEditView):
form_class = WorkflowStateForm
model = WorkflowState
view_permission = PERMISSION_WORKFLOW_EDIT
def get_context_data(self, **kwargs):
context = super(SetupWorkflowStateEditView, self).get_context_data(**kwargs)
context.update(
{
'object': self.get_object().workflow,
'workflow_instance': self.get_object(),
'navigation_object_list': [
{'object': 'object'},
{'object': 'workflow_instance'}
],
}
)
return context
def get_success_url(self):
return reverse('document_states:setup_workflow_states', args=[self.get_object().workflow.pk])
# Transitions
class SetupWorkflowTransitionListView(SingleObjectListView):
def dispatch(self, request, *args, **kwargs):
try:
@@ -340,6 +366,36 @@ class SetupWorkflowTransitionCreateView(SingleObjectCreateView):
return HttpResponseRedirect(self.get_success_url())
class SetupWorkflowTransitionEditView(SingleObjectEditView):
form_class = WorkflowTransitionForm
model = WorkflowTransition
view_permission = PERMISSION_WORKFLOW_EDIT
def get_context_data(self, **kwargs):
context = super(SetupWorkflowTransitionEditView, self).get_context_data(**kwargs)
context.update(
{
'object': self.get_object().workflow,
'workflow_instance': self.get_object(),
'navigation_object_list': [
{'object': 'object'},
{'object': 'workflow_instance'}
],
}
)
return context
def get_form_kwargs(self):
kwargs = super(SetupWorkflowTransitionEditView, self).get_form_kwargs()
kwargs['workflow'] = self.get_object().workflow
return kwargs
def get_success_url(self):
return reverse('document_states:setup_workflow_transitions', args=[self.get_object().workflow.pk])
def setup_workflow_document_types(request, pk):
workflow = get_object_or_404(Workflow, pk=pk)