Update document state app

Sort arguments. Add keyword arguments. Update URL parameters to
the '_id' form.

Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-01-21 20:06:34 -04:00
parent 83a9b5a60a
commit 55356c4781
13 changed files with 350 additions and 298 deletions

View File

@@ -41,7 +41,7 @@ class APIDocumentTypeWorkflowListView(generics.ListAPIView):
serializer_class = WorkflowSerializer
def get_document_type(self):
document_type = get_object_or_404(klass=DocumentType, pk=self.kwargs['pk'])
document_type = get_object_or_404(klass=DocumentType, pk=self.kwargs['document_type_pk'])
AccessControlList.objects.check_access(
permissions=permission_document_type_view, user=self.request.user,
@@ -106,7 +106,7 @@ class APIWorkflowDocumentTypeList(generics.ListCreateAPIView):
else:
permission_required = permission_workflow_edit
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
@@ -159,7 +159,7 @@ class APIWorkflowDocumentTypeView(generics.RetrieveDestroyAPIView):
else:
permission_required = permission_workflow_edit
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
@@ -297,7 +297,7 @@ class APIWorkflowStateListView(generics.ListCreateAPIView):
else:
permission_required = permission_workflow_edit
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
@@ -340,7 +340,7 @@ class APIWorkflowStateView(generics.RetrieveUpdateDestroyAPIView):
else:
permission_required = permission_workflow_edit
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
@@ -393,7 +393,7 @@ class APIWorkflowTransitionListView(generics.ListCreateAPIView):
else:
permission_required = permission_workflow_edit
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
@@ -447,7 +447,7 @@ class APIWorkflowTransitionView(generics.RetrieveUpdateDestroyAPIView):
else:
permission_required = permission_workflow_edit
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_pk'])
AccessControlList.objects.check_access(
permissions=permission_required, user=self.request.user,
@@ -471,7 +471,7 @@ class APIWorkflowInstanceListView(generics.ListAPIView):
}
def get_document(self):
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
document = get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=self.request.user,
@@ -496,7 +496,7 @@ class APIWorkflowInstanceView(generics.RetrieveAPIView):
serializer_class = WorkflowInstanceSerializer
def get_document(self):
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
document = get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
AccessControlList.objects.check_access(
permissions=permission_workflow_view, user=self.request.user,
@@ -515,7 +515,7 @@ class APIWorkflowInstanceLogEntryListView(generics.ListCreateAPIView):
post: Transition a document workflow by creating a new document workflow log entry.
"""
def get_document(self):
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
document = get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
if self.request.method == 'GET':
"""

View File

@@ -73,16 +73,24 @@ class DocumentStatesApp(MayanAppConfig):
app_label='common', model_name='ErrorLogEntry'
)
Workflow = self.get_model('Workflow')
WorkflowInstance = self.get_model('WorkflowInstance')
WorkflowInstanceLogEntry = self.get_model('WorkflowInstanceLogEntry')
WorkflowRuntimeProxy = self.get_model('WorkflowRuntimeProxy')
WorkflowState = self.get_model('WorkflowState')
WorkflowStateAction = self.get_model('WorkflowStateAction')
WorkflowStateRuntimeProxy = self.get_model('WorkflowStateRuntimeProxy')
WorkflowTransition = self.get_model('WorkflowTransition')
Workflow = self.get_model(model_name='Workflow')
WorkflowInstance = self.get_model(model_name='WorkflowInstance')
WorkflowInstanceLogEntry = self.get_model(
model_name='WorkflowInstanceLogEntry'
)
WorkflowRuntimeProxy = self.get_model(
model_name='WorkflowRuntimeProxy'
)
WorkflowState = self.get_model(model_name='WorkflowState')
WorkflowStateAction = self.get_model(
model_name='WorkflowStateAction'
)
WorkflowStateRuntimeProxy = self.get_model(
model_name='WorkflowStateRuntimeProxy'
)
WorkflowTransition = self.get_model(model_name='WorkflowTransition')
WorkflowTransitionTriggerEvent = self.get_model(
'WorkflowTransitionTriggerEvent'
model_name='WorkflowTransitionTriggerEvent'
)
Document.add_to_class(

View File

@@ -5,5 +5,5 @@ from django.utils.translation import ugettext_lazy as _
from mayan.apps.common.classes import ErrorLogNamespace
error_log_state_actions = ErrorLogNamespace(
name='workflow_state_actions', label=_('Workflow state actions')
label=_('Workflow state actions'), name='workflow_state_actions'
)

View File

@@ -50,7 +50,7 @@ class WorkflowStateActionDynamicForm(DynamicModelForm):
WorkflowStateActionDynamicForm, self
).__init__(*args, **kwargs)
if self.instance.action_data:
for key, value in json.loads(self.instance.action_data).items():
for key, value in json.loads(s=self.instance.action_data).items():
self.fields[key].initial = value
return result

View File

@@ -87,7 +87,10 @@ class Workflow(models.Model):
def get_api_image_url(self, *args, **kwargs):
final_url = furl()
final_url.args = kwargs
final_url.path = reverse('rest_api:workflow-image', args=(self.pk,))
final_url.path = reverse(
viewname='rest_api:workflow-image',
kwargs={'workflow_id': self.pk}
)
final_url.args['_hash'] = self.get_hash()
return final_url.tostr()
@@ -321,7 +324,7 @@ class WorkflowStateAction(models.Model):
get_class_label.short_description = _('Action type')
def loads(self):
return json.loads(self.action_data)
return json.loads(s=self.action_data)
@python_2_unicode_compatible
@@ -403,7 +406,8 @@ class WorkflowInstance(models.Model):
def get_absolute_url(self):
return reverse(
'document_states:workflow_instance_detail', args=(str(self.pk),)
viewname='document_states:workflow_instance_detail',
kwargs={'workflow_instance_id': self.pk}
)
def get_context(self):

View File

@@ -7,23 +7,23 @@ from mayan.apps.permissions import PermissionNamespace
namespace = PermissionNamespace(label=_('Document workflows'), name='document_states')
permission_workflow_create = namespace.add_permission(
name='workflow_create', label=_('Create workflows')
label=_('Create workflows'), name='workflow_create'
)
permission_workflow_delete = namespace.add_permission(
name='workflow_delte', label=_('Delete workflows')
label=_('Delete workflows'), name='workflow_delte'
)
permission_workflow_edit = namespace.add_permission(
name='workflow_edit', label=_('Edit workflows')
label=_('Edit workflows'), name='workflow_edit'
)
permission_workflow_view = namespace.add_permission(
name='workflow_view', label=_('View workflows')
label=_('View workflows'), name='workflow_view'
)
# Translators: This text refers to the permission to grant user the ability to
# 'transition workflows' from one state to another, to move the workflow
# forwards
permission_workflow_transition = namespace.add_permission(
name='workflow_transition', label=_('Transition workflows')
label=_('Transition workflows'), name='workflow_transition'
)
permission_workflow_tools = namespace.add_permission(
name='workflow_tools', label=_('Execute workflow tools')
label=_('Execute workflow tools'), name='workflow_tools'
)

View File

@@ -5,17 +5,17 @@ from django.utils.translation import ugettext_lazy as _
from mayan.apps.task_manager.classes import CeleryQueue
queue_document_states = CeleryQueue(
name='document_states', label=_('Document states')
label=_('Document states'), name='document_states'
)
queue_document_states_fast = CeleryQueue(
name='document_states_fast', label=_('Document states fast')
label=_('Document states fast'), name='document_states_fast'
)
queue_document_states.add_task_type(
name='mayan.apps.document_states.tasks.task_launch_all_workflows',
label=_('Launch all workflows')
label=_('Launch all workflows'),
name='mayan.apps.document_states.tasks.task_launch_all_workflows'
)
queue_document_states_fast.add_task_type(
name='mayan.apps.document_states.tasks.task_generate_document_state_image',
label=_('Generate workflow previews')
label=_('Generate workflow previews'),
name='mayan.apps.document_states.tasks.task_generate_document_state_image'
)

View File

@@ -48,9 +48,9 @@ class WorkflowDocumentTypeSerializer(DocumentTypeSerializer):
def get_workflow_document_type_url(self, instance):
return reverse(
'rest_api:workflow-document-type-detail', args=(
self.context['workflow'].pk, instance.pk
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflow-document-type-detail', kwargs={
'workflow_pk': self.context['workflow'].pk, 'document_type_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
@@ -70,16 +70,16 @@ class WorkflowStateSerializer(serializers.HyperlinkedModelSerializer):
def get_url(self, instance):
return reverse(
'rest_api:workflowstate-detail', args=(
instance.workflow.pk, instance.pk
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowstate-detail', kwargs={
'workflow_pk': instance.workflow.pk, 'workflow_state_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
def get_workflow_url(self, instance):
return reverse(
'rest_api:workflow-detail', args=(
instance.workflow.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflow-detail', kwargs={
'workflow_pk': instance.workflow.pk,
}, request=self.context['request'], format=self.context['format']
)
@@ -98,16 +98,16 @@ class WorkflowTransitionSerializer(serializers.HyperlinkedModelSerializer):
def get_url(self, instance):
return reverse(
'rest_api:workflowtransition-detail', args=(
instance.workflow.pk, instance.pk
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowtransition-detail', kwargs={
'workflow_pk': instance.workflow.pk, 'transition_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
def get_workflow_url(self, instance):
return reverse(
'rest_api:workflow-detail', args=(
instance.workflow.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflow-detail', kwargs={
'workflow_pk': instance.workflow.pk,
}, request=self.context['request'], format=self.context['format']
)
@@ -145,16 +145,16 @@ class WritableWorkflowTransitionSerializer(serializers.ModelSerializer):
def get_url(self, instance):
return reverse(
'rest_api:workflowtransition-detail', args=(
instance.workflow.pk, instance.pk
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowtransition-detail', kwargs={
'workflow_pk': instance.workflow.pk, 'transition_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
def get_workflow_url(self, instance):
return reverse(
'rest_api:workflow-detail', args=(
instance.workflow.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflow-detail', kwargs={
'workflow_pk': instance.workflow.pk,
}, request=self.context['request'], format=self.context['format']
)
def update(self, instance, validated_data):
@@ -190,9 +190,9 @@ class WorkflowSerializer(serializers.HyperlinkedModelSerializer):
def get_image_url(self, instance):
return reverse(
'rest_api:workflow-image', args=(
instance.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflow-image', kwargs={
'workflow_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
@@ -210,10 +210,10 @@ class WorkflowInstanceLogEntrySerializer(serializers.ModelSerializer):
def get_document_workflow_url(self, instance):
return reverse(
'rest_api:workflowinstance-detail', args=(
instance.workflow_instance.document.pk,
instance.workflow_instance.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowinstance-detail', kwargs={
'document_pk': instance.workflow_instance.document.pk,
'transition_pk': instance.workflow_instance.pk
}, request=self.context['request'], format=self.context['format']
)
@@ -248,16 +248,16 @@ class WorkflowInstanceSerializer(serializers.ModelSerializer):
def get_document_workflow_url(self, instance):
return reverse(
'rest_api:workflowinstance-detail', args=(
instance.document.pk, instance.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowinstance-detail', kwargs={
'document_pk': instance.document.pk, 'transition_pk': instance.pk,
}, request=self.context['request'], format=self.context['format']
)
def get_log_entries_url(self, instance):
return reverse(
'rest_api:workflowinstancelogentry-list', args=(
instance.document.pk, instance.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowinstancelogentry-list', kwargs={
'document_pk': instance.document.pk, 'workflow_pk': instance.pk,
}, request=self.context['request'], format=self.context['format']
)
@@ -339,10 +339,10 @@ class WritableWorkflowInstanceLogEntrySerializer(serializers.ModelSerializer):
def get_document_workflow_url(self, instance):
return reverse(
'rest_api:workflowinstance-detail', args=(
instance.workflow_instance.document.pk,
instance.workflow_instance.pk,
), request=self.context['request'], format=self.context['format']
viewname='rest_api:workflowinstance-detail', kwargs={
'document_pk': instance.workflow_instance.document.pk,
'workflow_pk': instance.workflow_instance.pk,
}, request=self.context['request'], format=self.context['format']
)
def validate(self, attrs):

View File

@@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _
from mayan.apps.smart_settings import Namespace
namespace = Namespace(name='document_states', label=_('Workflows'))
namespace = Namespace(label=_('Workflows'), name='document_states')
settings_workflow_image_cache_time = namespace.add_setting(
global_name='WORKFLOWS_IMAGE_CACHE_TIME', default='31556926',

View File

@@ -49,9 +49,8 @@ class DocumentStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_delete_view(self):
return self.post(
viewname='document_states:setup_workflow_delete', args=(
self.workflow.pk,
),
viewname='document_states:setup_workflow_delete',
kwargs={'workflow_id': self.workflow.pk}
)
def test_workflow_delete_view_no_access(self):
@@ -69,9 +68,9 @@ class DocumentStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_edit_view(self):
return self.post(
viewname='document_states:setup_workflow_edit', args=(
self.workflow.pk,
), data={
viewname='document_states:setup_workflow_edit',
kwargs={'workflow_id': self.workflow.pk},
data={
'label': TEST_WORKFLOW_LABEL_EDITED,
'internal_name': self.workflow.internal_name
}
@@ -80,7 +79,7 @@ class DocumentStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def test_workflow_edit_view_no_access(self):
self._create_workflow()
response = self._request_workflow_edit_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.workflow.refresh_from_db()
self.assertEqual(self.workflow.label, TEST_WORKFLOW_LABEL)
@@ -112,15 +111,14 @@ class DocumentStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_preview_view(self):
return self.get(
viewname='document_states:workflow_preview', args=(
self.workflow.pk,
),
viewname='document_states:workflow_preview',
kwargs={'workflow_id': self.workflow.pk}
)
def test_workflow_preview_view_no_access(self):
self._create_workflow()
response = self._request_workflow_preview_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.assertTrue(self.workflow in Workflow.objects.all())
def test_workflow_preview_view_with_access(self):
@@ -138,7 +136,8 @@ class DocumentStateStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_state_create_view(self):
return self.post(
viewname='document_states:setup_workflow_state_create',
args=(self.workflow.pk,), data={
kwargs={'workflow_id': self.workflow.pk},
data={
'label': TEST_WORKFLOW_STATE_LABEL,
'completion': TEST_WORKFLOW_STATE_COMPLETION,
}
@@ -152,7 +151,9 @@ class DocumentStateStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def test_create_workflow_state_with_access(self):
self._create_workflow()
self.grant_access(permission=permission_workflow_edit, obj=self.workflow)
self.grant_access(
permission=permission_workflow_edit, obj=self.workflow
)
response = self._request_workflow_state_create_view()
self.assertEquals(response.status_code, 302)
self.assertEquals(WorkflowState.objects.count(), 1)
@@ -167,14 +168,14 @@ class DocumentStateStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_state_delete_view(self):
return self.post(
viewname='document_states:setup_workflow_state_delete',
args=(self.workflow_state.pk,)
kwargs={'workflow_state_id': self.workflow_state.pk}
)
def test_delete_workflow_state_no_access(self):
self._create_workflow()
self._create_workflow_states()
response = self._request_workflow_state_delete_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.assertEquals(WorkflowState.objects.count(), 2)
def test_delete_workflow_state_with_access(self):
@@ -188,7 +189,8 @@ class DocumentStateStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_state_edit_view(self):
return self.post(
viewname='document_states:setup_workflow_state_edit',
args=(self.workflow_state.pk,), data={
kwargs={'workflow_state_id': self.workflow_state.pk},
data={
'label': TEST_WORKFLOW_STATE_LABEL_EDITED
}
)
@@ -197,7 +199,7 @@ class DocumentStateStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
self._create_workflow()
self._create_workflow_states()
response = self._request_workflow_state_edit_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.assertEquals(self.workflow_state.label, TEST_WORKFLOW_STATE_LABEL)
def test_edit_workflow_state_with_access(self):
@@ -212,14 +214,14 @@ class DocumentStateStateViewTestCase(WorkflowTestMixin, GenericViewTestCase):
def _request_workflow_state_list_view(self):
return self.get(
viewname='document_states:setup_workflow_state_list',
args=(self.workflow.pk,)
kwargs={'workflow_id': self.workflow.pk}
)
def test_workflow_state_list_no_access(self):
self._create_workflow()
self._create_workflow_states()
response = self._request_workflow_state_list_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
def test_workflow_state_list_with_access(self):
self._create_workflow()
@@ -260,7 +262,7 @@ class DocumentStateToolViewTestCase(GenericDocumentViewTestCase):
def _request_workflow_launch_view(self):
return self.post(
'document_states:tool_launch_all_workflows',
viewname='document_states:tool_launch_all_workflows',
)
def test_tool_launch_all_workflows_view_no_permission(self):
@@ -295,7 +297,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
def _request_workflow_transition_create_view(self):
return self.post(
viewname='document_states:setup_workflow_transition_create',
args=(self.workflow.pk,), data={
kwargs={'workflow_id': self.workflow.pk}, data={
'label': TEST_WORKFLOW_TRANSITION_LABEL,
'origin_state': self.workflow_initial_state.pk,
'destination_state': self.workflow_state.pk,
@@ -306,7 +308,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
self._create_workflow()
self._create_workflow_states()
response = self._request_workflow_transition_create_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.assertEquals(WorkflowTransition.objects.count(), 0)
def test_create_workflow_transition_with_access(self):
@@ -332,7 +334,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
def _request_workflow_transition_delete_view(self):
return self.post(
viewname='document_states:setup_workflow_transition_delete',
args=(self.workflow_transition.pk,)
kwargs={'workflow_transition_id': self.workflow_transition.pk}
)
def test_delete_workflow_transition_no_access(self):
@@ -340,7 +342,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
self._create_workflow_states()
self._create_workflow_transition()
response = self._request_workflow_transition_delete_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.assertTrue(self.workflow_transition in WorkflowTransition.objects.all())
def test_delete_workflow_transition_with_access(self):
@@ -355,7 +357,8 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
def _request_workflow_transition_edit_view(self):
return self.post(
viewname='document_states:setup_workflow_transition_edit',
args=(self.workflow_transition.pk,), data={
kwargs={'workflow_transition_id': self.workflow_transition.pk},
data={
'label': TEST_WORKFLOW_TRANSITION_LABEL_EDITED,
'origin_state': self.workflow_initial_state.pk,
'destination_state': self.workflow_state.pk,
@@ -367,7 +370,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
self._create_workflow_states()
self._create_workflow_transition()
response = self._request_workflow_transition_edit_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
self.workflow_transition.refresh_from_db()
self.assertEqual(
self.workflow_transition.label, TEST_WORKFLOW_TRANSITION_LABEL
@@ -388,7 +391,7 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
def _request_workflow_transition_list_view(self):
return self.get(
viewname='document_states:setup_workflow_transition_list',
args=(self.workflow.pk,)
kwargs={'workflow_id': self.workflow.pk}
)
def test_workflow_transition_list_no_access(self):
@@ -411,7 +414,8 @@ class DocumentStateTransitionViewTestCase(WorkflowTestMixin, GenericDocumentView
def _request_workflow_transition(self):
return self.post(
viewname='document_states:workflow_instance_transition',
args=(self.workflow_instance.pk,), data={
kwargs={'workflow_instance_id': self.workflow_instance.pk},
data={
'transition': self.workflow_transition.pk,
}
)
@@ -481,7 +485,7 @@ class DocumentStateTransitionEventViewTestCase(WorkflowTestMixin, GenericDocumen
def _request_workflow_transition_event_list_view(self):
return self.get(
viewname='document_states:setup_workflow_transition_events',
args=(self.workflow_transition.pk,)
kwargs={'workflow_transition_id': self.workflow_transition.pk}
)
def test_workflow_transition_event_list_no_access(self):
@@ -489,7 +493,7 @@ class DocumentStateTransitionEventViewTestCase(WorkflowTestMixin, GenericDocumen
self._create_workflow_states()
self._create_workflow_transition()
response = self._request_workflow_transition_event_list_view()
self.assertEquals(response.status_code, 403)
self.assertEquals(response.status_code, 404)
def test_workflow_transition_event_list_with_access(self):
self._create_workflow()

View File

@@ -29,207 +29,209 @@ from .views import (
urlpatterns = [
url(
r'^document/(?P<pk>\d+)/workflows/$',
DocumentWorkflowInstanceListView.as_view(),
name='document_workflow_instance_list'
regex=r'^workflows/$', name='setup_workflow_list',
view=SetupWorkflowListView.as_view()
),
url(
r'^document/workflows/(?P<pk>\d+)/$',
WorkflowInstanceDetailView.as_view(), name='workflow_instance_detail'
regex=r'^workflows/create/$', name='setup_workflow_create',
view=SetupWorkflowCreateView.as_view()
),
url(
r'^document/workflows/(?P<pk>\d+)/transition/$',
WorkflowInstanceTransitionView.as_view(),
name='workflow_instance_transition'
regex=r'^workflows/(?P<workflow_id>\d+)/delete/$',
name='setup_workflow_delete', view=SetupWorkflowDeleteView.as_view()
),
url(
r'^setup/all/$', SetupWorkflowListView.as_view(),
name='setup_workflow_list'
regex=r'^workflows/(?P<workflow_id>\d+)/edit/$',
name='setup_workflow_edit', view=SetupWorkflowEditView.as_view()
),
url(
r'^setup/create/$', SetupWorkflowCreateView.as_view(),
name='setup_workflow_create'
regex=r'^workflows/(?P<workflow_id>\d+)/preview/$',
name='workflow_preview', view=WorkflowPreviewView.as_view()
),
url(
r'^setup/workflow/(?P<pk>\d+)/edit/$', SetupWorkflowEditView.as_view(),
name='setup_workflow_edit'
regex=r'^workflows/(?P<workflow_id>\d+)/document_types/$',
name='setup_workflow_document_types',
view=SetupWorkflowDocumentTypesView.as_view()
),
url(
r'^setup/workflow/(?P<pk>\d+)/delete/$', SetupWorkflowDeleteView.as_view(),
name='setup_workflow_delete'
regex=r'^workflows/(?P<workflow_id>\d+)/states/$',
name='setup_workflow_state_list',
view=SetupWorkflowStateListView.as_view()
),
url(
r'^setup/workflow/(?P<pk>\d+)/documents/$',
WorkflowDocumentListView.as_view(),
name='setup_workflow_document_list'
regex=r'^workflows/(?P<workflow_id>\d+)/states/create/$',
name='setup_workflow_state_create',
view=SetupWorkflowStateCreateView.as_view()
),
url(
r'^setup/workflow/(?P<pk>\d+)/document_types/$',
SetupWorkflowDocumentTypesView.as_view(),
name='setup_workflow_document_types'
regex=r'^workflows/states/(?P<workflow_state_id>\d+)/delete/$',
name='setup_workflow_state_delete',
view=SetupWorkflowStateDeleteView.as_view()
),
url(
r'^setup/workflow/(?P<pk>\d+)/states/$', SetupWorkflowStateListView.as_view(),
name='setup_workflow_state_list'
),
url(
r'^setup/workflow/(?P<pk>\d+)/states/create/$',
SetupWorkflowStateCreateView.as_view(),
name='setup_workflow_state_create'
),
url(
r'^setup/workflow/(?P<pk>\d+)/transitions/$',
SetupWorkflowTransitionListView.as_view(),
name='setup_workflow_transition_list'
),
url(
r'^setup/workflow/(?P<pk>\d+)/transitions/create/$',
SetupWorkflowTransitionCreateView.as_view(),
name='setup_workflow_transition_create'
),
url(
r'^setup/workflow/(?P<pk>\d+)/transitions/events/$',
SetupWorkflowTransitionTriggerEventListView.as_view(),
name='setup_workflow_transition_events'
),
url(
r'^setup/workflow/state/(?P<pk>\d+)/delete/$',
SetupWorkflowStateDeleteView.as_view(),
name='setup_workflow_state_delete'
),
url(
r'^setup/workflow/state/(?P<pk>\d+)/edit/$',
SetupWorkflowStateEditView.as_view(),
name='setup_workflow_state_edit'
),
url(
r'^setup/workflow/state/(?P<pk>\d+)/actions/$',
SetupWorkflowStateActionListView.as_view(),
name='setup_workflow_state_action_list'
),
url(
r'^setup/workflow/state/(?P<pk>\d+)/actions/$',
SetupWorkflowStateActionListView.as_view(),
name='setup_workflow_state_action_list'
),
url(
r'^setup/workflow/state/(?P<pk>\d+)/actions/selection/$',
SetupWorkflowStateActionSelectionView.as_view(),
name='setup_workflow_state_action_selection'
),
url(
r'^setup/workflow/state/(?P<pk>\d+)/actions/(?P<class_path>[a-zA-Z0-9_.]+)/create/$',
SetupWorkflowStateActionCreateView.as_view(),
name='setup_workflow_state_action_create'
regex=r'^workflows/states/(?P<workflow_state_id>\d+)/edit/$',
name='setup_workflow_state_edit',
view=SetupWorkflowStateEditView.as_view()
),
url(
r'^setup/workflow/state/actions/(?P<pk>\d+)/delete/$',
SetupWorkflowStateActionDeleteView.as_view(),
regex=r'^workflows/states/(?P<workflow_state_id>\d+)/actions/$',
name='setup_workflow_state_action_list',
view=SetupWorkflowStateActionListView.as_view()
),
url(
regex=r'^workflows/states/(?P<workflow_state_id>\d+)/actions/selection/$',
name='setup_workflow_state_action_selection',
view=SetupWorkflowStateActionSelectionView.as_view(),
),
url(
regex=r'^workflows/states/(?P<workflow_state_id>\d+)/actions/(?P<class_path>[a-zA-Z0-9_.]+)/create/$',
name='setup_workflow_state_action_create',
view=SetupWorkflowStateActionCreateView.as_view()
),
url(
regex=r'^workflows/states/actions/(?P<workflow_state_action_id>\d+)/delete/$',
view=SetupWorkflowStateActionDeleteView.as_view(),
name='setup_workflow_state_action_delete'
),
url(
r'^setup/workflow/state/actions/(?P<pk>\d+)/edit/$',
SetupWorkflowStateActionEditView.as_view(),
name='setup_workflow_state_action_edit'
),
url(
r'^setup/workflow/transitions/(?P<pk>\d+)/delete/$',
SetupWorkflowTransitionDeleteView.as_view(),
name='setup_workflow_transition_delete'
),
url(
r'^setup/workflow/transitions/(?P<pk>\d+)/edit/$',
SetupWorkflowTransitionEditView.as_view(),
name='setup_workflow_transition_edit'
),
url(
r'^tools/workflow/all/launch/$',
ToolLaunchAllWorkflows.as_view(),
name='tool_launch_all_workflows'
),
url(
r'all/$',
WorkflowListView.as_view(),
name='workflow_list'
),
url(
r'^(?P<pk>\d+)/documents/$',
WorkflowDocumentListView.as_view(),
name='workflow_document_list'
regex=r'^workflows/states/actions/(?P<workflow_state_action_id>\d+)/edit/$',
name='setup_workflow_state_action_edit',
view=SetupWorkflowStateActionEditView.as_view()
),
url(
r'^(?P<pk>\d+)/states/$',
WorkflowStateListView.as_view(),
name='workflow_state_list'
regex=r'^workflows/(?P<workflow_id>\d+)/transitions/$',
name='setup_workflow_transition_list',
view=SetupWorkflowTransitionListView.as_view()
),
url(
r'^(?P<pk>\d+)/preview/$',
WorkflowPreviewView.as_view(),
name='workflow_preview'
regex=r'^workflows/(?P<workflow_id>\d+)/transitions/create/$',
name='setup_workflow_transition_create',
view=SetupWorkflowTransitionCreateView.as_view()
),
url(
r'^state/(?P<pk>\d+)/documents/$',
WorkflowStateDocumentListView.as_view(),
name='workflow_state_document_list'
regex=r'^workflows/transitions/(?P<workflow_transitions_id>\d+)/delete/$',
name='setup_workflow_transition_delete',
view=SetupWorkflowTransitionDeleteView.as_view()
),
url(
regex=r'^workflows/transitions/(?P<workflow_transitions_id>\d+)/edit/$',
name='setup_workflow_transition_edit',
view=SetupWorkflowTransitionEditView.as_view()
),
url(
regex=r'^workflows/(?P<workflow_id>\d+)/transitions/events/$',
name='setup_workflow_transition_events',
view=SetupWorkflowTransitionTriggerEventListView.as_view()
),
url(
regex=r'^workflow_instances/$', name='workflow_list',
view=WorkflowListView.as_view()
),
url(
regex=r'^workflow_instances/(?P<workflow_id>\d+)/documents/$',
name='setup_workflow_document_list',
view=WorkflowDocumentListView.as_view()
),
url(
regex=r'^workflow_instances/(?P<workflow_id>\d+)/documents/$',
name='workflow_document_list',
view=WorkflowDocumentListView.as_view()
),
url(
regex=r'^workflow_instances/(?P<workflow_id>\d+)/states/$',
name='workflow_state_list', view=WorkflowStateListView.as_view()
),
url(
regex=r'^workflow_instances/states/(?P<workflow_state_id>\d+)/documents/$',
name='workflow_state_document_list',
view=WorkflowStateDocumentListView.as_view()
),
url(
regex=r'^documents/(?P<document_id>\d+)/workflows/$',
name='document_workflow_instance_list',
view=DocumentWorkflowInstanceListView.as_view()
),
url(
regex=r'^documents/workflows/(?P<workflow_instance_id>\d+)/$',
name='workflow_instance_detail',
view=WorkflowInstanceDetailView.as_view()
),
url(
regex=r'^documents/workflows/(?P<workflow_instance_id>\d+)/transition/$',
name='workflow_instance_transition',
view=WorkflowInstanceTransitionView.as_view()
),
url(
regex=r'^tools/workflows/all/launch/$',
name='tool_launch_all_workflows',
view=ToolLaunchAllWorkflows.as_view()
)
]
api_urls = [
url(r'^workflows/$', APIWorkflowListView.as_view(), name='workflow-list'),
url(
r'^workflows/(?P<pk>[0-9]+)/$', APIWorkflowView.as_view(),
name='workflow-detail'
regex=r'^workflows/$', name='workflow-list',
view=APIWorkflowListView.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/image/$',
APIWorkflowImageView.as_view(), name='workflow-image'
regex=r'^workflows/(?P<workflow_id>\d+)/$',
name='workflow-detail', view=APIWorkflowView.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/document_types/$',
APIWorkflowDocumentTypeList.as_view(),
name='workflow-document-type-list'
regex=r'^workflows/(?P<workflow_id>\d+)/image/$',
name='workflow-image', view=APIWorkflowImageView.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/document_types/(?P<document_type_pk>[0-9]+)/$',
APIWorkflowDocumentTypeView.as_view(),
name='workflow-document-type-detail'
regex=r'^workflows/(?P<workflow_id>\d+)/document_types/$',
name='workflow-document-type-list',
view=APIWorkflowDocumentTypeList.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/states/$',
APIWorkflowStateListView.as_view(), name='workflowstate-list'
regex=r'^workflows/(?P<workflow_id>\d+)/document_types/(?P<document_type_id>\d+)/$',
name='workflow-document-type-detail',
view=APIWorkflowDocumentTypeView.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/states/(?P<state_pk>[0-9]+)/$',
APIWorkflowStateView.as_view(), name='workflowstate-detail'
regex=r'^workflows/(?P<workflow_id>\d+)/states/$',
name='workflowstate-list',
view=APIWorkflowStateListView.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/transitions/$',
APIWorkflowTransitionListView.as_view(), name='workflowtransition-list'
regex=r'^workflows/(?P<workflow_id>\d+)/states/(?P<state_id>\d+)/$',
name='workflowstate-detail', view=APIWorkflowStateView.as_view()
),
url(
r'^workflows/(?P<pk>[0-9]+)/transitions/(?P<transition_pk>[0-9]+)/$',
APIWorkflowTransitionView.as_view(), name='workflowtransition-detail'
regex=r'^workflows/(?P<workflow_id>\d+)/transitions/$',
name='workflowtransition-list',
view=APIWorkflowTransitionListView.as_view()
),
url(
r'^documents/(?P<pk>[0-9]+)/workflows/$',
APIWorkflowInstanceListView.as_view(), name='workflowinstance-list'
regex=r'^workflows/(?P<workflow_id>\d+)/transitions/(?P<transition_id>\d+)/$',
name='workflowtransition-detail',
view=APIWorkflowTransitionView.as_view()
),
url(
r'^documents/(?P<pk>[0-9]+)/workflows/(?P<workflow_pk>[0-9]+)/$',
APIWorkflowInstanceView.as_view(), name='workflowinstance-detail'
regex=r'^documents/(?P<document_id>\d+)/workflows/$',
name='workflowinstance-list',
view=APIWorkflowInstanceListView.as_view()
),
url(
r'^documents/(?P<pk>[0-9]+)/workflows/(?P<workflow_pk>[0-9]+)/log_entries/$',
APIWorkflowInstanceLogEntryListView.as_view(),
name='workflowinstancelogentry-list'
regex=r'^documents/(?P<document_id>\d+)/workflows/(?P<workflow_id>\d+)/$',
name='workflowinstance-detail',
view=APIWorkflowInstanceView.as_view()
),
url(
r'^document_types/(?P<pk>[0-9]+)/workflows/$',
APIDocumentTypeWorkflowListView.as_view(),
name='documenttype-workflow-list'
regex=r'^documents/(?P<document_id>\d+)/workflows/(?P<workflow_id>\d+)/log_entries/$',
name='workflowinstancelogentry-list',
view=APIWorkflowInstanceLogEntryListView.as_view()
),
url(
regex=r'^document_types/(?P<document_type_id>\d+)/workflows/$',
name='documenttype-workflow-list',
view=APIDocumentTypeWorkflowListView.as_view()
)
]

View File

@@ -58,7 +58,9 @@ class DocumentWorkflowInstanceListView(SingleObjectListView):
).dispatch(request, *args, **kwargs)
def get_document(self):
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
return get_object_or_404(
klass=Document, pk=self.kwargs['document_id']
)
def get_extra_context(self):
return {
@@ -114,7 +116,9 @@ class WorkflowInstanceDetailView(SingleObjectListView):
return self.get_workflow_instance().log_entries.order_by('-datetime')
def get_workflow_instance(self):
return get_object_or_404(klass=WorkflowInstance, pk=self.kwargs['pk'])
return get_object_or_404(
klass=WorkflowInstance, pk=self.kwargs['workflow_instance_id']
)
class WorkflowInstanceTransitionView(FormView):
@@ -127,11 +131,12 @@ class WorkflowInstanceTransitionView(FormView):
transition=form.cleaned_data['transition'], user=self.request.user
)
messages.success(
self.request, _(
message=_(
'Document "%s" transitioned successfully'
) % self.get_workflow_instance().document
) % self.get_workflow_instance().document,
request=self.request
)
return HttpResponseRedirect(self.get_success_url())
return HttpResponseRedirect(redirect_to=self.get_success_url())
def get_extra_context(self):
return {
@@ -154,7 +159,9 @@ class WorkflowInstanceTransitionView(FormView):
return self.get_workflow_instance().get_absolute_url()
def get_workflow_instance(self):
return get_object_or_404(klass=WorkflowInstance, pk=self.kwargs['pk'])
return get_object_or_404(
klass=WorkflowInstance, pk=self.kwargs['workflow_instance_id']
)
# Setup
@@ -185,7 +192,7 @@ class SetupWorkflowListView(SingleObjectListView):
class SetupWorkflowCreateView(SingleObjectCreateView):
form_class = WorkflowForm
model = Workflow
post_action_redirect = reverse_lazy('document_states:setup_workflow_list')
post_action_redirect = reverse_lazy(viewname='document_states:setup_workflow_list')
view_permission = permission_workflow_create
@@ -193,13 +200,15 @@ class SetupWorkflowEditView(SingleObjectEditView):
form_class = WorkflowForm
model = Workflow
object_permission = permission_workflow_edit
post_action_redirect = reverse_lazy('document_states:setup_workflow_list')
pk_url_kwarg = 'workflow_id'
post_action_redirect = reverse_lazy(viewname='document_states:setup_workflow_list')
class SetupWorkflowDeleteView(SingleObjectDeleteView):
model = Workflow
object_permission = permission_workflow_delete
post_action_redirect = reverse_lazy('document_states:setup_workflow_list')
pk_url_kwarg = 'workflow_id'
post_action_redirect = reverse_lazy(viewname='document_states:setup_workflow_list')
class SetupWorkflowDocumentTypesView(AssignRemoveView):
@@ -227,7 +236,9 @@ class SetupWorkflowDocumentTypesView(AssignRemoveView):
}
def get_object(self):
return get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
return get_object_or_404(
klass=Workflow, pk=self.kwargs['workflow_id']
)
def left_list(self):
return AssignRemoveView.generate_choices(
@@ -288,18 +299,21 @@ class SetupWorkflowStateActionCreateView(SingleObjectDynamicFormCreateView):
}
def get_object(self):
return get_object_or_404(klass=WorkflowState, pk=self.kwargs['pk'])
return get_object_or_404(
klass=WorkflowState, pk=self.kwargs['workflow_state_id']
)
def get_post_action_redirect(self):
return reverse(
'document_states:setup_workflow_state_action_list',
args=(self.get_object().pk,)
viewname='document_states:setup_workflow_state_action_list',
kwargs={'workflow_state_id': self.get_object().pk}
)
class SetupWorkflowStateActionDeleteView(SingleObjectDeleteView):
model = WorkflowStateAction
object_permission = permission_workflow_edit
pk_url_kwarg = 'workflow_state_action_id'
def get_extra_context(self):
return {
@@ -314,8 +328,8 @@ class SetupWorkflowStateActionDeleteView(SingleObjectDeleteView):
def get_post_action_redirect(self):
return reverse(
'document_states:setup_workflow_state_action_list',
args=(self.get_object().state.pk,)
viewname='document_states:setup_workflow_state_action_list',
kwargs={'workflow_state_id': self.get_object().state.pk}
)
@@ -323,6 +337,7 @@ class SetupWorkflowStateActionEditView(SingleObjectDynamicFormEditView):
form_class = WorkflowStateActionDynamicForm
model = WorkflowStateAction
object_permission = permission_workflow_edit
pk_url_kwarg = 'workflow_state_action_id'
def get_extra_context(self):
return {
@@ -348,8 +363,8 @@ class SetupWorkflowStateActionEditView(SingleObjectDynamicFormEditView):
def get_post_action_redirect(self):
return reverse(
'document_states:setup_workflow_state_action_list',
args=(self.get_object().state.pk,)
viewname='document_states:setup_workflow_state_action_list',
kwargs={'workflow_state_id': self.get_object().state.pk}
)
@@ -389,7 +404,9 @@ class SetupWorkflowStateActionListView(SingleObjectListView):
return self.get_workflow_state().actions.all()
def get_workflow_state(self):
return get_object_or_404(klass=WorkflowState, pk=self.kwargs['pk'])
return get_object_or_404(
klass=WorkflowState, pk=self.kwargs['workflow_state_id']
)
class SetupWorkflowStateActionSelectionView(FormView):
@@ -399,9 +416,12 @@ class SetupWorkflowStateActionSelectionView(FormView):
def form_valid(self, form):
klass = form.cleaned_data['klass']
return HttpResponseRedirect(
reverse(
'document_states:setup_workflow_state_action_create',
args=(self.get_object().pk, klass,),
redirect_to=reverse(
viewname='document_states:setup_workflow_state_action_create',
kwargs={
'workflow_state_id': self.get_object().pk,
'class_path': klass
}
)
)
@@ -416,7 +436,9 @@ class SetupWorkflowStateActionSelectionView(FormView):
}
def get_object(self):
return get_object_or_404(klass=WorkflowState, pk=self.kwargs['pk'])
return get_object_or_404(
klass=WorkflowState, pk=self.kwargs['workflow_state_id']
)
# Workflow states
@@ -441,11 +463,12 @@ class SetupWorkflowStateCreateView(SingleObjectCreateView):
def get_success_url(self):
return reverse(
'document_states:setup_workflow_state_list', args=(self.kwargs['pk'],)
viewname='document_states:setup_workflow_state_list',
kwargs={'workflow_id': self.kwargs['workflow_id']}
)
def get_workflow(self):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_id'])
AccessControlList.objects.check_access(
permissions=(permission_workflow_edit,), obj=workflow,
user=self.request.user
@@ -456,6 +479,7 @@ class SetupWorkflowStateCreateView(SingleObjectCreateView):
class SetupWorkflowStateDeleteView(SingleObjectDeleteView):
model = WorkflowState
object_permission = permission_workflow_edit
pk_url_kwarg = 'workflow_state_id'
def get_extra_context(self):
return {
@@ -469,12 +493,12 @@ class SetupWorkflowStateDeleteView(SingleObjectDeleteView):
def get_success_url(self):
return reverse(
'document_states:setup_workflow_state_list',
args=(self.get_object().workflow.pk,)
viewname='document_states:setup_workflow_state_list',
kwargs={'workflow_id': self.get_object().workflow.pk}
)
def get_workflow(self):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_id'])
AccessControlList.objects.check_access(
permissions=(permission_workflow_edit,), obj=workflow,
user=self.request.user
@@ -486,6 +510,7 @@ class SetupWorkflowStateEditView(SingleObjectEditView):
form_class = WorkflowStateForm
model = WorkflowState
object_permission = permission_workflow_edit
pk_url_kwarg = 'workflow_state_id'
def get_extra_context(self):
return {
@@ -496,8 +521,8 @@ class SetupWorkflowStateEditView(SingleObjectEditView):
def get_success_url(self):
return reverse(
'document_states:setup_workflow_state_list',
args=(self.get_object().workflow.pk,)
viewname='document_states:setup_workflow_state_list',
kwargs={'workflow_id': self.get_object().workflow.pk}
)
@@ -537,7 +562,7 @@ class SetupWorkflowStateListView(SingleObjectListView):
return self.get_workflow().states.all()
def get_workflow(self):
return get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
return get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_id'])
# Transitions
@@ -569,12 +594,12 @@ class SetupWorkflowTransitionCreateView(SingleObjectCreateView):
def get_success_url(self):
return reverse(
'document_states:setup_workflow_transition_list',
args=(self.kwargs['pk'],)
viewname='document_states:setup_workflow_transition_list',
kwargs={'workflow_id': self.kwargs['workflow_id']}
)
def get_workflow(self):
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
workflow = get_object_or_404(klass=Workflow, pk=self.kwargs['workflow_id'])
AccessControlList.objects.check_access(
permissions=(permission_workflow_edit,), obj=workflow,
user=self.request.user
@@ -585,6 +610,7 @@ class SetupWorkflowTransitionCreateView(SingleObjectCreateView):
class SetupWorkflowTransitionDeleteView(SingleObjectDeleteView):
model = WorkflowTransition
object_permission = permission_workflow_edit
pk_url_kwarg = 'workflow_transition_id'
def get_extra_context(self):
return {
@@ -595,8 +621,8 @@ class SetupWorkflowTransitionDeleteView(SingleObjectDeleteView):
def get_success_url(self):
return reverse(
'document_states:setup_workflow_transition_list',
args=(self.get_object().workflow.pk,)
viewname='document_states:setup_workflow_transition_list',
kwargs={'workflow_id': self.get_object().workflow.pk}
)
@@ -604,6 +630,7 @@ class SetupWorkflowTransitionEditView(SingleObjectEditView):
form_class = WorkflowTransitionForm
model = WorkflowTransition
object_permission = permission_workflow_edit
pk_url_kwarg = 'workflow_transition_id'
def get_extra_context(self):
return {
@@ -621,8 +648,8 @@ class SetupWorkflowTransitionEditView(SingleObjectEditView):
def get_success_url(self):
return reverse(
'document_states:setup_workflow_transition_list',
args=(self.get_object().workflow.pk,)
viewname='document_states:setup_workflow_transition_list',
kwargs={'workflow_id': self.get_object().workflow.pk}
)
@@ -655,7 +682,9 @@ class SetupWorkflowTransitionListView(SingleObjectListView):
return self.get_workflow().transitions.all()
def get_workflow(self):
return get_object_or_404(klass=Workflow, pk=self.kwargs['pk'])
return get_object_or_404(
klass=Workflow, pk=self.kwargs['workflow_id']
)
# Other
@@ -750,7 +779,8 @@ class WorkflowStateDocumentListView(DocumentListView):
def get_workflow_state(self):
workflow_state = get_object_or_404(
klass=WorkflowStateRuntimeProxy, pk=self.kwargs['pk']
klass=WorkflowStateRuntimeProxy,
pk=self.kwargs['workflow_state_id']
)
AccessControlList.objects.check_access(
@@ -821,16 +851,16 @@ class SetupWorkflowTransitionTriggerEventListView(FormView):
instance.save()
except Exception as exception:
messages.error(
self.request,
_(
message=_(
'Error updating workflow transition trigger events; %s'
) % exception
) % exception, request=self.request
)
else:
messages.success(
self.request, _(
message=_(
'Workflow transition trigger events updated successfully'
)
), request=self.request
)
return super(
@@ -838,7 +868,9 @@ class SetupWorkflowTransitionTriggerEventListView(FormView):
).form_valid(form=form)
def get_object(self):
return get_object_or_404(klass=WorkflowTransition, pk=self.kwargs['pk'])
return get_object_or_404(
klass=WorkflowTransition, pk=self.kwargs['worflow_transition_id']
)
def get_extra_context(self):
return {
@@ -874,8 +906,8 @@ class SetupWorkflowTransitionTriggerEventListView(FormView):
def get_post_action_redirect(self):
return reverse(
'document_states:setup_workflow_transition_list',
args=(self.get_object().workflow.pk,)
viewname='document_states:setup_workflow_transition_list',
kwargs={'workflow_id': self.get_object().workflow.pk}
)
@@ -892,7 +924,8 @@ class ToolLaunchAllWorkflows(ConfirmView):
def view_action(self):
task_launch_all_workflows.apply_async()
messages.success(
self.request, _('Workflow launch queued successfully.')
message=_('Workflow launch queued successfully.'),
request=self.request
)
@@ -900,6 +933,7 @@ class WorkflowPreviewView(SingleObjectDetailView):
form_class = WorkflowPreviewForm
model = Workflow
object_permission = permission_workflow_view
pk_url_kwarg = 'workflow_id'
def get_extra_context(self):
return {

View File

@@ -158,7 +158,7 @@ class HTTPPostAction(WorkflowAction):
logger.debug('payload template result: %s', result)
try:
payload = json.loads(result, strict=False)
payload = json.loads(s=result, strict=False)
except Exception as exception:
raise WorkflowStateActionError(
_('Payload JSON error: %s') % exception