Add transition delete view and transition setup permissions
This commit is contained in:
@@ -9,7 +9,9 @@ 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,
|
||||||
PERMISSION_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT,
|
PERMISSION_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT,
|
||||||
PERMISSION_STATE_SETUP_DELETE)
|
PERMISSION_STATE_SETUP_DELETE, PERMISSION_TRANSITION_SETUP_VIEW,
|
||||||
|
PERMISSION_TRANSITION_SETUP_CREATE, PERMISSION_TRANSITION_SETUP_EDIT,
|
||||||
|
PERMISSION_TRANSITION_SETUP_DELETE)
|
||||||
from .models import Workflow, State, Transition, WorkflowState
|
from .models import Workflow, State, Transition, WorkflowState
|
||||||
|
|
||||||
|
|
||||||
@@ -27,10 +29,10 @@ setup_state_create_link = Link(text=_(u'create new state'), view='setup_state_cr
|
|||||||
setup_state_edit_link = Link(text=_(u'edit'), view='setup_state_edit', args='object.pk', sprite='transmit_edit', permissions=[PERMISSION_STATE_SETUP_EDIT])
|
setup_state_edit_link = Link(text=_(u'edit'), view='setup_state_edit', args='object.pk', sprite='transmit_edit', permissions=[PERMISSION_STATE_SETUP_EDIT])
|
||||||
setup_state_delete_link = Link(text=_(u'delete'), view='setup_state_delete', args='object.pk', sprite='transmit_delete', permissions=[PERMISSION_STATE_SETUP_DELETE])
|
setup_state_delete_link = Link(text=_(u'delete'), view='setup_state_delete', args='object.pk', sprite='transmit_delete', permissions=[PERMISSION_STATE_SETUP_DELETE])
|
||||||
|
|
||||||
setup_transition_list_link = Link(text=_(u'transition list'), view='setup_transition_list', sprite='chart_line', permissions=[PERMISSION_WORKFLOW_SETUP_VIEW])
|
setup_transition_list_link = Link(text=_(u'transition list'), view='setup_transition_list', sprite='chart_line', permissions=[PERMISSION_TRANSITION_SETUP_VIEW])
|
||||||
setup_transition_create_link = Link(text=_(u'create new transition'), view='setup_transition_create', sprite='chart_line_add', permissions=[PERMISSION_WORKFLOW_SETUP_CREATE])
|
setup_transition_create_link = Link(text=_(u'create new transition'), view='setup_transition_create', sprite='chart_line_add', permissions=[PERMISSION_TRANSITION_SETUP_CREATE])
|
||||||
setup_transition_edit_link = Link(text=_(u'edit'), view='setup_transition_edit', args='transition.pk', sprite='chart_line', permissions=[PERMISSION_WORKFLOW_SETUP_EDIT])
|
setup_transition_edit_link = Link(text=_(u'edit'), view='setup_transition_edit', args='transition.pk', sprite='chart_line', permissions=[PERMISSION_TRANSITION_SETUP_EDIT])
|
||||||
setup_transition_delete_link = Link(text=_(u'delete'), view='setup_transition_delete', args='transition.pk', sprite='chart_line_delete', permissions=[PERMISSION_WORKFLOW_SETUP_DELETE])
|
setup_transition_delete_link = Link(text=_(u'delete'), view='setup_transition_delete', args='transition.pk', sprite='chart_line_delete', permissions=[PERMISSION_TRANSITION_SETUP_DELETE])
|
||||||
|
|
||||||
bind_links(
|
bind_links(
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -16,3 +16,8 @@ PERMISSION_STATE_SETUP_CREATE = Permission.objects.register(namespace, 'state_se
|
|||||||
PERMISSION_STATE_SETUP_EDIT = Permission.objects.register(namespace, 'state_setup_edit', _(u'Edit existing state templates'))
|
PERMISSION_STATE_SETUP_EDIT = Permission.objects.register(namespace, 'state_setup_edit', _(u'Edit existing state templates'))
|
||||||
PERMISSION_STATE_SETUP_DELETE = Permission.objects.register(namespace, 'state_setup_delete', _(u'Delete existing state templates'))
|
PERMISSION_STATE_SETUP_DELETE = Permission.objects.register(namespace, 'state_setup_delete', _(u'Delete existing state templates'))
|
||||||
|
|
||||||
|
PERMISSION_TRANSITION_SETUP_VIEW = Permission.objects.register(namespace, 'transition_setup_view', _(u'View existing transition templates'))
|
||||||
|
PERMISSION_TRANSITION_SETUP_CREATE = Permission.objects.register(namespace, 'transition_setup_create', _(u'Create new transition templates'))
|
||||||
|
PERMISSION_TRANSITION_SETUP_EDIT = Permission.objects.register(namespace, 'transition_setup_edit', _(u'Edit existing transition templates'))
|
||||||
|
PERMISSION_TRANSITION_SETUP_DELETE = Permission.objects.register(namespace, 'transition_setup_delete', _(u'Delete existing transition templates'))
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ urlpatterns = patterns('workflows.views',
|
|||||||
url(r'^setup/transition/list/$', 'setup_transition_list', (), 'setup_transition_list'),
|
url(r'^setup/transition/list/$', 'setup_transition_list', (), 'setup_transition_list'),
|
||||||
url(r'^setup/transition/create/$', 'setup_transition_create', (), 'setup_transition_create'),
|
url(r'^setup/transition/create/$', 'setup_transition_create', (), 'setup_transition_create'),
|
||||||
url(r'^setup/transition/(?P<transition_pk>\d+)/edit/$', 'setup_transition_edit', (), 'setup_transition_edit'),
|
url(r'^setup/transition/(?P<transition_pk>\d+)/edit/$', 'setup_transition_edit', (), 'setup_transition_edit'),
|
||||||
#url(r'^setup/transition/(?P<transition_pk>\d+)/delete/$', 'setup_transition_delete', (), 'setup_transition_delete'),
|
url(r'^setup/transition/(?P<transition_pk>\d+)/delete/$', 'setup_transition_delete', (), 'setup_transition_delete'),
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ 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,
|
||||||
PERMISSION_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT,
|
PERMISSION_STATE_SETUP_CREATE, PERMISSION_STATE_SETUP_EDIT,
|
||||||
PERMISSION_STATE_SETUP_DELETE)
|
PERMISSION_STATE_SETUP_DELETE, PERMISSION_TRANSITION_SETUP_VIEW,
|
||||||
|
PERMISSION_TRANSITION_SETUP_CREATE, PERMISSION_TRANSITION_SETUP_EDIT,
|
||||||
|
PERMISSION_TRANSITION_SETUP_DELETE)
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -294,11 +296,6 @@ def setup_state_list(request):
|
|||||||
'object_list': State.objects.all(),
|
'object_list': State.objects.all(),
|
||||||
'title': _(u'states'),
|
'title': _(u'states'),
|
||||||
'hide_link': True,
|
'hide_link': True,
|
||||||
#'list_object_variable_name': 'source',
|
|
||||||
#'source_type': source_type,
|
|
||||||
#'extra_columns': [
|
|
||||||
# {'name': _(u'Initial state'), 'attribute': encapsulate(lambda workflow: workflow.initial_state or _(u'None'))},
|
|
||||||
#],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return render_to_response('generic_list.html', context,
|
return render_to_response('generic_list.html', context,
|
||||||
@@ -400,7 +397,7 @@ def setup_state_delete(request, state_pk=None, state_pk_list=None):
|
|||||||
|
|
||||||
# Transitions
|
# Transitions
|
||||||
def setup_transition_list(request):
|
def setup_transition_list(request):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_WORKFLOW_SETUP_VIEW])
|
Permission.objects.check_permissions(request.user, [PERMISSION_TRANSITION_SETUP_VIEW])
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'object_list': Transition.objects.all(),
|
'object_list': Transition.objects.all(),
|
||||||
@@ -417,7 +414,7 @@ def setup_transition_list(request):
|
|||||||
|
|
||||||
|
|
||||||
def setup_transition_create(request):
|
def setup_transition_create(request):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_WORKFLOW_SETUP_CREATE])
|
Permission.objects.check_permissions(request.user, [PERMISSION_TRANSITION_SETUP_CREATE])
|
||||||
redirect_url = reverse('setup_transition_list')
|
redirect_url = reverse('setup_transition_list')
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -437,7 +434,7 @@ def setup_transition_create(request):
|
|||||||
|
|
||||||
|
|
||||||
def setup_transition_edit(request, transition_pk):
|
def setup_transition_edit(request, transition_pk):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_WORKFLOW_SETUP_EDIT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_TRANSITION_SETUP_EDIT])
|
||||||
transition = get_object_or_404(Transition, pk=transition_pk)
|
transition = get_object_or_404(Transition, pk=transition_pk)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -458,3 +455,57 @@ def setup_transition_edit(request, transition_pk):
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
|
def setup_transition_delete(request, transition_pk=None, transition_pk_list=None):
|
||||||
|
post_action_redirect = None
|
||||||
|
|
||||||
|
if transition_pk:
|
||||||
|
transitions = [get_object_or_404(Transition, pk=transition_pk)]
|
||||||
|
post_action_redirect = reverse('setup_transition_list')
|
||||||
|
elif transition_pk_list:
|
||||||
|
transitions = [get_object_or_404(Transition, pk=transition_pk) for transition_pk in transition_pk_list.split(',')]
|
||||||
|
else:
|
||||||
|
messages.error(request, _(u'Must provide at least one transition.'))
|
||||||
|
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||||
|
|
||||||
|
try:
|
||||||
|
Permission.objects.check_permissions(request.user, [PERMISSION_TRANSITION_SETUP_DELETE])
|
||||||
|
except PermissionDenied:
|
||||||
|
transitions = AccessEntry.objects.filter_objects_by_access(PERMISSION_TRANSITION_SETUP_DELETE, request.user, transitions)
|
||||||
|
|
||||||
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
|
||||||
|
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
for transition in transitions:
|
||||||
|
try:
|
||||||
|
transition.delete()
|
||||||
|
messages.success(request, _(u'Transitions "%s" deleted successfully.') % transition)
|
||||||
|
except Exception, e:
|
||||||
|
messages.error(request, _(u'Error deleting transition "%(transition)s": %(error)s') % {
|
||||||
|
'transition': transition, 'error': e
|
||||||
|
})
|
||||||
|
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
context = {
|
||||||
|
'object_name': _(u'transition'),
|
||||||
|
'delete_view': True,
|
||||||
|
'previous': previous,
|
||||||
|
'next': next,
|
||||||
|
'form_icon': u'transmit_delete.png',
|
||||||
|
'navigation_object_list': [
|
||||||
|
{'object': 'transition', 'name': _(u'transition')},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
if len(transitions) == 1:
|
||||||
|
context['transition'] = transitions[0]
|
||||||
|
context['title'] = _(u'Are you sure you wish to delete the transition: %s?') % ', '.join([unicode(d) for d in transitions])
|
||||||
|
context['message'] = _('Will be removed from all documents.')
|
||||||
|
elif len(transitions) > 1:
|
||||||
|
context['title'] = _(u'Are you sure you wish to delete the transitions: %s?') % ', '.join([unicode(d) for d in transitions])
|
||||||
|
context['message'] = _('Will be removed from all documents.')
|
||||||
|
|
||||||
|
return render_to_response('generic_confirm.html', context,
|
||||||
|
context_instance=RequestContext(request))
|
||||||
|
|||||||
Reference in New Issue
Block a user