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_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT,
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_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_edit_link = {'text': _(u'edit'), 'view': 'setup_workflow_edit', 'args': 'object.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_states_list_link = {'text': _(u'states'), 'view': 'setup_workflow_states_list', 'args': 'object.pk', 'famfam': 'transmit_go', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]}
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': 'workflow.pk', 'famfam': 'chart_organisation', 'permissions': [PERMISSION_WORKFLOW_SETUP_EDIT]}
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': '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_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_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, 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(['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, 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([WorkflowState], [setup_workflow_states_edit_link])
register_setup(setup_workflow_link)

View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import
from django import forms
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):
@@ -14,3 +14,8 @@ class WorkflowSetupForm(forms.ModelForm):
class StateSetupForm(forms.ModelForm):
class Meta:
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+)/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/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/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 acls.models import AccessEntry
from .models import Workflow, State, Transition
from .forms import WorkflowSetupForm, StateSetupForm
from .models import Workflow, State, Transition, WorkflowState
from .forms import WorkflowSetupForm, StateSetupForm, WorkflowStateSetupForm
from .permissions import (PERMISSION_WORKFLOW_SETUP_VIEW,
PERMISSION_WORKFLOW_SETUP_CREATE, PERMISSION_WORKFLOW_SETUP_EDIT,
PERMISSION_WORKFLOW_SETUP_DELETE, PERMISSION_STATE_SETUP_VIEW,
@@ -41,6 +41,7 @@ def setup_workflow_list(request):
'extra_columns': [
{'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,
@@ -83,8 +84,10 @@ def setup_workflow_edit(request, workflow_pk):
return render_to_response('generic_form.html', {
'title': _(u'edit workflow: %s') % workflow,
'form': form,
'object': workflow,
'object_name': _(u'workflow'),
'workflow': workflow,
'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
],
},
context_instance=RequestContext(request))
@@ -122,14 +125,16 @@ def setup_workflow_delete(request, workflow_pk=None, workflow_pk_list=None):
return HttpResponseRedirect(next)
context = {
'object_name': _(u'workflow'),
'delete_view': True,
'previous': previous,
'next': next,
'form_icon': u'chart_organisation_delete.png',
'navigation_object_list': [
{'object': 'workflow', 'name': _(u'workflow')},
],
}
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['message'] = _('Will be removed from all documents.')
elif len(workflows) > 1:
@@ -146,15 +151,68 @@ def setup_workflow_states_list(request, workflow_pk):
context = {
'object_list': workflow.workflowstate_set.all(),
'title': _(u'workflows'),
'title': _(u'states for workflow: %s') % workflow,
'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,
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
def setup_state_list(request):
Permission.objects.check_permissions(request.user, [PERMISSION_STATE_SETUP_VIEW])