Add workflow state and transition edit views
This commit is contained in:
@@ -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])
|
||||
|
||||
@@ -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'}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user