Add workflow state add and edit views

This commit is contained in:
Roberto Rosario
2012-03-16 10:30:04 -04:00
parent a3822a1836
commit e2e9c074b7
4 changed files with 84 additions and 15 deletions

View File

@@ -10,28 +10,32 @@ from .permissions import (PERMISSION_WORKFLOW_SETUP_VIEW,
PERMISSION_WORKFLOW_SETUP_DELETE, PERMISSION_STATE_SETUP_VIEW, PERMISSION_WORKFLOW_SETUP_DELETE, PERMISSION_STATE_SETUP_VIEW,
PERMISSION_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT, PERMISSION_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT,
PERMISSION_STATE_SETUP_DELETE) PERMISSION_STATE_SETUP_DELETE)
from .models import Workflow, State, Transition from .models import Workflow, State, Transition, WorkflowState
setup_workflow_link = {'text': _(u'workflows'), 'view': 'setup_workflow_list', 'icon': 'chart_organisation.png', 'permissions': [PERMISSION_WORKFLOW_SETUP_VIEW]} setup_workflow_link = {'text': _(u'workflows'), 'view': 'setup_workflow_list', 'icon': 'chart_organisation.png', 'permissions': [PERMISSION_WORKFLOW_SETUP_VIEW]}
setup_workflow_list_link = {'text': _(u'workflow list'), 'view': 'setup_workflow_list', 'famfam': 'chart_organisation', 'permissions': [PERMISSION_WORKFLOW_SETUP_VIEW]} setup_workflow_list_link = {'text': _(u'workflow list'), 'view': 'setup_workflow_list', 'famfam': 'chart_organisation', 'permissions': [PERMISSION_WORKFLOW_SETUP_VIEW]}
setup_workflow_create_link = {'text': _(u'create new'), 'view': 'setup_workflow_create', 'famfam': 'chart_organisation_add', 'permissions': [PERMISSION_WORKFLOW_SETUP_CREATE]} setup_workflow_create_link = {'text': _(u'create new workflow'), 'view': 'setup_workflow_create', 'famfam': 'chart_organisation_add', 'permissions': [PERMISSION_WORKFLOW_SETUP_CREATE]}
setup_workflow_edit_link = {'text': _(u'edit'), 'view': 'setup_workflow_edit', 'args': 'object.pk', 'famfam': 'chart_organisation', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]} setup_workflow_edit_link = {'text': _(u'edit'), 'view': 'setup_workflow_edit', 'args': 'workflow.pk', 'famfam': 'chart_organisation', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]}
setup_workflow_delete_link = {'text': _(u'delete'), 'view': 'setup_workflow_delete', 'args': 'object.pk', 'famfam': 'chart_organisation_delete', 'permissions': [PERMISSION_WORKFLOW_SETUP_DELETE]} setup_workflow_delete_link = {'text': _(u'delete'), 'view': 'setup_workflow_delete', 'args': 'workflow.pk', 'famfam': 'chart_organisation_delete', 'permissions': [PERMISSION_WORKFLOW_SETUP_DELETE]}
setup_workflow_states_list_link = {'text': _(u'states'), 'view': 'setup_workflow_states_list', 'args': 'object.pk', 'famfam': 'transmit_go', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]} setup_workflow_states_list_link = {'text': _(u'states'), 'view': 'setup_workflow_states_list', 'args': 'workflow.pk', 'famfam': 'transmit_go', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]}
setup_workflow_states_add_link = {'text': _(u'add state'), 'view': 'setup_workflow_state_add', 'args': 'workflow.pk', 'famfam': 'transmit_add', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]}
setup_workflow_states_edit_link = {'text': _(u'edit state'), 'view': 'setup_workflow_state_edit', 'args': 'workflow_state.pk', 'famfam': 'transmit_edit', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]}
setup_state_list_link = {'text': _(u'state list'), 'view': 'setup_state_list', 'famfam': 'transmit', 'permissions': [PERMISSION_STATE_SETUP_VIEW]} setup_state_list_link = {'text': _(u'state list'), 'view': 'setup_state_list', 'famfam': 'transmit', 'permissions': [PERMISSION_STATE_SETUP_VIEW]}
setup_state_create_link = {'text': _(u'create new'), 'view': 'setup_state_create', 'famfam': 'transmit_add', 'permissions': [PERMISSION_STATE_SETUP_CREATE]} setup_state_create_link = {'text': _(u'create new state'), 'view': 'setup_state_create', 'famfam': 'transmit_add', 'permissions': [PERMISSION_STATE_SETUP_CREATE]}
setup_state_edit_link = {'text': _(u'edit'), 'view': 'setup_state_edit', 'args': 'object.pk', 'famfam': 'transmit_edit', 'permissions': [PERMISSION_STATE_SETUP_EDIT]} setup_state_edit_link = {'text': _(u'edit'), 'view': 'setup_state_edit', 'args': 'object.pk', 'famfam': 'transmit_edit', 'permissions': [PERMISSION_STATE_SETUP_EDIT]}
setup_state_delete_link = {'text': _(u'delete'), 'view': 'setup_state_delete', 'args': 'object.pk', 'famfam': 'transmit_delete', 'permissions': [PERMISSION_STATE_SETUP_DELETE]} setup_state_delete_link = {'text': _(u'delete'), 'view': 'setup_state_delete', 'args': 'object.pk', 'famfam': 'transmit_delete', 'permissions': [PERMISSION_STATE_SETUP_DELETE]}
register_links(Workflow, [setup_workflow_states_list_link, setup_workflow_edit_link, setup_workflow_delete_link]) register_links(Workflow, [setup_workflow_states_list_link, setup_workflow_edit_link, setup_workflow_delete_link])
register_links([Workflow, State, 'setup_workflow_list', 'setup_workflow_create', 'setup_state_list'], [setup_workflow_list_link], menu_name=u'form_header') register_links([Workflow, State, 'setup_workflow_list', 'setup_workflow_create', 'setup_state_list'], [setup_workflow_list_link], menu_name=u'form_header')
register_links([Workflow, 'setup_workflow_list', 'setup_workflow_create'], [setup_workflow_create_link], menu_name=u'secondary_menu') register_links([Workflow, 'setup_workflow_list', 'setup_workflow_create'], [setup_workflow_create_link], menu_name=u'secondary_menu')
register_links(['setup_workflow_states_list', 'setup_workflow_states_add'], [setup_workflow_states_add_link], menu_name=u'sidebar')
register_links(State, [setup_state_edit_link, setup_state_delete_link]) register_links(State, [setup_state_edit_link, setup_state_delete_link])
register_links([State, Workflow, 'setup_state_list', 'setup_workflow_list', 'setup_workflow_create'], [setup_state_list_link], menu_name=u'form_header') register_links([State, Workflow, 'setup_state_list', 'setup_workflow_list', 'setup_workflow_create'], [setup_state_list_link], menu_name=u'form_header')
register_links([State, 'setup_state_list', 'setup_state_create'], [setup_state_create_link], menu_name=u'secondary_menu') register_links([State, 'setup_state_list', 'setup_state_create'], [setup_state_create_link], menu_name=u'secondary_menu')
register_links([WorkflowState], [setup_workflow_states_edit_link])
register_setup(setup_workflow_link) register_setup(setup_workflow_link)

View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from .models import Workflow, State, Transition from .models import Workflow, State, Transition, WorkflowState
class WorkflowSetupForm(forms.ModelForm): class WorkflowSetupForm(forms.ModelForm):
@@ -14,3 +14,8 @@ class WorkflowSetupForm(forms.ModelForm):
class StateSetupForm(forms.ModelForm): class StateSetupForm(forms.ModelForm):
class Meta: class Meta:
model = State model = State
class WorkflowStateSetupForm(forms.ModelForm):
class Meta:
model = WorkflowState

View File

@@ -6,6 +6,8 @@ urlpatterns = patterns('workflows.views',
url(r'^setup/workflow/(?P<workflow_pk>\d+)/edit/$', 'setup_workflow_edit', (), 'setup_workflow_edit'), url(r'^setup/workflow/(?P<workflow_pk>\d+)/edit/$', 'setup_workflow_edit', (), 'setup_workflow_edit'),
url(r'^setup/workflow/(?P<workflow_pk>\d+)/delete/$', 'setup_workflow_delete', (), 'setup_workflow_delete'), url(r'^setup/workflow/(?P<workflow_pk>\d+)/delete/$', 'setup_workflow_delete', (), 'setup_workflow_delete'),
url(r'^setup/workflow/(?P<workflow_pk>\d+)/state/list/$', 'setup_workflow_states_list', (), 'setup_workflow_states_list'), url(r'^setup/workflow/(?P<workflow_pk>\d+)/state/list/$', 'setup_workflow_states_list', (), 'setup_workflow_states_list'),
url(r'^setup/workflow/(?P<workflow_pk>\d+)/state/create/$', 'setup_workflow_state_add', (), 'setup_workflow_state_add'),
url(r'^setup/workflow/state/(?P<workflow_state_pk>\d+)/edit/$', 'setup_workflow_state_edit', (), 'setup_workflow_state_edit'),
url(r'^setup/state/list/$', 'setup_state_list', (), 'setup_state_list'), url(r'^setup/state/list/$', 'setup_state_list', (), 'setup_state_list'),
url(r'^setup/state/create/$', 'setup_state_create', (), 'setup_state_create'), url(r'^setup/state/create/$', 'setup_state_create', (), 'setup_state_create'),

View File

@@ -18,8 +18,8 @@ from common.utils import encapsulate
#from common.widgets import two_state_template #from common.widgets import two_state_template
#from acls.models import AccessEntry #from acls.models import AccessEntry
from .models import Workflow, State, Transition from .models import Workflow, State, Transition, WorkflowState
from .forms import WorkflowSetupForm, StateSetupForm from .forms import WorkflowSetupForm, StateSetupForm, WorkflowStateSetupForm
from .permissions import (PERMISSION_WORKFLOW_SETUP_VIEW, from .permissions import (PERMISSION_WORKFLOW_SETUP_VIEW,
PERMISSION_WORKFLOW_SETUP_CREATE, PERMISSION_WORKFLOW_SETUP_EDIT, PERMISSION_WORKFLOW_SETUP_CREATE, PERMISSION_WORKFLOW_SETUP_EDIT,
PERMISSION_WORKFLOW_SETUP_DELETE, PERMISSION_STATE_SETUP_VIEW, PERMISSION_WORKFLOW_SETUP_DELETE, PERMISSION_STATE_SETUP_VIEW,
@@ -41,6 +41,7 @@ def setup_workflow_list(request):
'extra_columns': [ 'extra_columns': [
{'name': _(u'Initial state'), 'attribute': encapsulate(lambda workflow: workflow.initial_state or _(u'None'))}, {'name': _(u'Initial state'), 'attribute': encapsulate(lambda workflow: workflow.initial_state or _(u'None'))},
], ],
'list_object_variable_name': 'workflow',
} }
return render_to_response('generic_list.html', context, return render_to_response('generic_list.html', context,
@@ -83,8 +84,10 @@ def setup_workflow_edit(request, workflow_pk):
return render_to_response('generic_form.html', { return render_to_response('generic_form.html', {
'title': _(u'edit workflow: %s') % workflow, 'title': _(u'edit workflow: %s') % workflow,
'form': form, 'form': form,
'object': workflow, 'workflow': workflow,
'object_name': _(u'workflow'), 'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
],
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
@@ -122,14 +125,16 @@ def setup_workflow_delete(request, workflow_pk=None, workflow_pk_list=None):
return HttpResponseRedirect(next) return HttpResponseRedirect(next)
context = { context = {
'object_name': _(u'workflow'),
'delete_view': True, 'delete_view': True,
'previous': previous, 'previous': previous,
'next': next, 'next': next,
'form_icon': u'chart_organisation_delete.png', 'form_icon': u'chart_organisation_delete.png',
'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
],
} }
if len(workflows) == 1: if len(workflows) == 1:
context['object'] = workflows[0] context['workflow'] = workflows[0]
context['title'] = _(u'Are you sure you wish to delete the workflow: %s?') % ', '.join([unicode(d) for d in workflows]) context['title'] = _(u'Are you sure you wish to delete the workflow: %s?') % ', '.join([unicode(d) for d in workflows])
context['message'] = _('Will be removed from all documents.') context['message'] = _('Will be removed from all documents.')
elif len(workflows) > 1: elif len(workflows) > 1:
@@ -146,15 +151,68 @@ def setup_workflow_states_list(request, workflow_pk):
context = { context = {
'object_list': workflow.workflowstate_set.all(), 'object_list': workflow.workflowstate_set.all(),
'title': _(u'workflows'), 'title': _(u'states for workflow: %s') % workflow,
'hide_link': True, 'hide_link': True,
'object': workflow, 'workflow': workflow,
'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
],
'list_object_variable_name': 'workflow_state',
} }
return render_to_response('generic_list.html', context, return render_to_response('generic_list.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def setup_workflow_state_add(request, workflow_pk):
Permission.objects.check_permissions(request.user, [PERMISSION_WORKFLOW_SETUP_EDIT])
redirect_url = reverse('setup_workflow_states_list', args=[workflow_pk])
workflow = get_object_or_404(Workflow, pk=workflow_pk)
if request.method == 'POST':
form = WorkflowStateSetupForm(request.POST)
if form.is_valid():
state = form.save()
messages.success(request, _(u'worflow state created succesfully.'))
return HttpResponseRedirect(redirect_url)
else:
form = WorkflowStateSetupForm()
return render_to_response('generic_form.html', {
'title': _(u'add worflow state'),
'form': form,
'workflow': workflow,
'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
],
}, context_instance=RequestContext(request))
def setup_workflow_state_edit(request, workflow_state_pk):
Permission.objects.check_permissions(request.user, [PERMISSION_WORKFLOW_SETUP_EDIT])
workflow_state = get_object_or_404(WorkflowState, pk=workflow_state_pk)
redirect_url = reverse('setup_workflow_states_list', args=[workflow_state.workflow.pk])
if request.method == 'POST':
form = WorkflowStateSetupForm(instance=workflow_state, data=request.POST)
if form.is_valid():
state = form.save()
messages.success(request, _(u'worflow state edited succesfully.'))
return HttpResponseRedirect(redirect_url)
else:
form = WorkflowStateSetupForm(instance=workflow_state)
return render_to_response('generic_form.html', {
'title': _(u'edit worflow state'),
'form': form,
'workflow': workflow_state.workflow,
'workflow_state': workflow_state,
'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
{'object': 'workflow_state', 'name': _(u'workflow state')}
],
}, context_instance=RequestContext(request))
# States # States
def setup_state_list(request): def setup_state_list(request):
Permission.objects.check_permissions(request.user, [PERMISSION_STATE_SETUP_VIEW]) Permission.objects.check_permissions(request.user, [PERMISSION_STATE_SETUP_VIEW])