Start workflow app API refactor

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-03-15 19:29:39 -04:00
parent c152156a11
commit 97c9cfda6a
5 changed files with 261 additions and 149 deletions

View File

@@ -9,8 +9,7 @@ from rest_framework import generics
from mayan.apps.acls.models import AccessControlList
from mayan.apps.documents.models import Document, DocumentType
from mayan.apps.documents.permissions import permission_document_type_view
from mayan.apps.rest_api.filters import MayanObjectPermissionsFilter
from mayan.apps.rest_api.permissions import MayanPermission
from mayan.apps.rest_api.viewsets import MayanAPIModelViewSet
from .literals import WORKFLOW_IMAGE_TASK_TIMEOUT
from .models import Workflow
@@ -19,17 +18,35 @@ from .permissions import (
permission_workflow_edit, permission_workflow_view
)
from .serializers import (
NewWorkflowDocumentTypeSerializer, WorkflowDocumentTypeSerializer,
WorkflowInstanceLogEntrySerializer, WorkflowInstanceSerializer,
WorkflowSerializer, WorkflowStateSerializer, WorkflowTransitionSerializer,
WritableWorkflowInstanceLogEntrySerializer, WritableWorkflowSerializer,
WritableWorkflowTransitionSerializer
WorkflowSerializer
#NewWorkflowDocumentTypeSerializer, WorkflowDocumentTypeSerializer,
#WorkflowInstanceLogEntrySerializer, WorkflowInstanceSerializer,
#, WorkflowStateSerializer, WorkflowTransitionSerializer,
#WritableWorkflowInstanceLogEntrySerializer, WritableWorkflowSerializer,
#WritableWorkflowTransitionSerializer
)
from .settings import settings_workflow_image_cache_time
from .storages import storage_workflowimagecache
from .tasks import task_generate_workflow_image
class WorkflowAPIViewSet(MayanAPIModelViewSet):
lookup_url_kwarg = 'workflow_id'
object_permission_map = {
'destroy': permission_workflow_delete,
'list': permission_workflow_view,
'partial_update': permission_workflow_edit,
'retrieve': permission_workflow_view,
'update': permission_workflow_edit,
}
queryset = Workflow.objects.all()
serializer_class = WorkflowSerializer
view_permission_map = {
'create': permission_workflow_create
}
'''
class APIDocumentTypeWorkflowListView(generics.ListAPIView):
"""
get: Returns a list of all the document type workflows.
@@ -566,3 +583,4 @@ class APIWorkflowInstanceLogEntryListView(generics.ListCreateAPIView):
)
return workflow
'''

View File

@@ -17,6 +17,35 @@ from .models import (
)
class WorkflowSerializer(serializers.HyperlinkedModelSerializer):
#document_types_url = serializers.HyperlinkedIdentityField(
# view_name='rest_api:workflow-document-type-list'
#)
#image_url = serializers.SerializerMethodField()
#states = WorkflowStateSerializer(many=True, required=False)
#transitions = WorkflowTransitionSerializer(many=True, required=False)
class Meta:
#extra_kwargs = {
# 'url': {'view_name': 'rest_api:workflow-detail'},
#}
fields = (
#'document_types_url', 'image_url', 'id', 'internal_name', 'label',
'id', 'internal_name', 'label',
#'states', 'transitions', 'url'
#'states', 'transitions', 'url'
)
model = Workflow
#def get_image_url(self, instance):
# return reverse(
# viewname='rest_api:workflow-image', kwargs={
# 'workflow_pk': instance.pk
# }, request=self.context['request'], format=self.context['format']
# )
"""
class NewWorkflowDocumentTypeSerializer(serializers.Serializer):
document_type_pk = serializers.IntegerField(
help_text=_('Primary key of the document type to be added.')
@@ -170,30 +199,6 @@ class WritableWorkflowTransitionSerializer(serializers.ModelSerializer):
)
class WorkflowSerializer(serializers.HyperlinkedModelSerializer):
document_types_url = serializers.HyperlinkedIdentityField(
view_name='rest_api:workflow-document-type-list'
)
image_url = serializers.SerializerMethodField()
states = WorkflowStateSerializer(many=True, required=False)
transitions = WorkflowTransitionSerializer(many=True, required=False)
class Meta:
extra_kwargs = {
'url': {'view_name': 'rest_api:workflow-detail'},
}
fields = (
'document_types_url', 'image_url', 'id', 'internal_name', 'label',
'states', 'transitions', 'url'
)
model = Workflow
def get_image_url(self, instance):
return reverse(
viewname='rest_api:workflow-image', kwargs={
'workflow_pk': instance.pk
}, request=self.context['request'], format=self.context['format']
)
class WorkflowInstanceLogEntrySerializer(serializers.ModelSerializer):
@@ -360,3 +365,4 @@ class WritableWorkflowInstanceLogEntrySerializer(serializers.ModelSerializer):
raise ValidationError(exception)
return attrs
"""

View File

@@ -3,8 +3,9 @@ from __future__ import unicode_literals
TEST_INDEX_LABEL = 'test workflow index'
TEST_WORKFLOW_LABEL = 'test workflow label'
TEST_WORKFLOW_INTERNAL_NAME = 'test_workflow_name'
TEST_WORKFLOW_LABEL_EDITED = 'test workflow label edited'
TEST_WORKFLOW_INTERNAL_NAME = 'test_workflow_name'
TEST_WORKFLOW_INTERNAL_NAME_EDITED = 'test_workflow_name_edited'
TEST_WORKFLOW_INITIAL_STATE_LABEL = 'test initial state'
TEST_WORKFLOW_INITIAL_STATE_COMPLETION = 33
TEST_WORKFLOW_INSTANCE_LOG_ENTRY_COMMENT = 'test workflow instance log entry comment'

View File

@@ -1,5 +1,7 @@
from __future__ import absolute_import, unicode_literals
import copy
from rest_framework import status
from mayan.apps.documents.models import DocumentType
@@ -19,60 +21,189 @@ from ..permissions import (
from .literals import (
TEST_WORKFLOW_INITIAL_STATE_COMPLETION, TEST_WORKFLOW_INITIAL_STATE_LABEL,
TEST_WORKFLOW_INSTANCE_LOG_ENTRY_COMMENT, TEST_WORKFLOW_INTERNAL_NAME,
TEST_WORKFLOW_LABEL, TEST_WORKFLOW_LABEL_EDITED,
TEST_WORKFLOW_STATE_COMPLETION, TEST_WORKFLOW_STATE_LABEL,
TEST_WORKFLOW_STATE_LABEL_EDITED, TEST_WORKFLOW_TRANSITION_LABEL,
TEST_WORKFLOW_TRANSITION_LABEL_EDITED
TEST_WORKFLOW_INTERNAL_NAME_EDITED, TEST_WORKFLOW_LABEL,
TEST_WORKFLOW_LABEL_EDITED, TEST_WORKFLOW_STATE_COMPLETION,
TEST_WORKFLOW_STATE_LABEL, TEST_WORKFLOW_STATE_LABEL_EDITED,
TEST_WORKFLOW_TRANSITION_LABEL, TEST_WORKFLOW_TRANSITION_LABEL_EDITED
)
class WorkflowAPITestCase(BaseAPITestCase):
def setUp(self):
super(WorkflowAPITestCase, self).setUp()
self.login_user()
self.document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document = self.document_type.new_document(
file_object=file_object
)
class WorkflowAPIViewTestCase(BaseAPITestCase):
#def setUp(self):
# super(WorkflowAPIViewTestCase, self).setUp()
def tearDown(self):
if hasattr(self, 'document_type'):
self.document_type.delete()
super(WorkflowAPITestCase, self).tearDown()
def _create_workflow(self):
return Workflow.objects.create(
label=TEST_WORKFLOW_LABEL,
internal_name=TEST_WORKFLOW_INTERNAL_NAME
)
def _request_workflow_create_view(self):
def _request_workflow_create_api_view(self):
return self.post(
viewname='rest_api:workflow-list', data={
'internal_name': TEST_WORKFLOW_INTERNAL_NAME,
'label': TEST_WORKFLOW_LABEL
}
)
def test_workflow_create_view_no_permission(self):
response = self._request_workflow_create_view()
def test_workflow_create_api_view_no_permission(self):
response = self._request_workflow_create_api_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(Workflow.objects.count(), 0)
def test_workflow_create_view_with_permission(self):
def test_workflow_create_api_view_with_permission(self):
self.grant_permission(permission=permission_workflow_create)
response = self._request_workflow_create_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Workflow.objects.count(), 1)
response = self._request_workflow_create_api_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(
response.data['label'], TEST_WORKFLOW_LABEL
)
self.assertEqual(Workflow.objects.count(), 1)
def _create_test_workflow(self):
self.test_workflow = Workflow.objects.create(
label=TEST_WORKFLOW_LABEL,
internal_name=TEST_WORKFLOW_INTERNAL_NAME
)
def _request_workflow_delete_api_view(self):
return self.delete(
viewname='rest_api:workflow-detail', kwargs={
'workflow_id': self.test_workflow.pk,
}
)
def test_workflow_delete_api_view_no_permission(self):
self._create_test_workflow()
response = self._request_workflow_delete_api_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(Workflow.objects.count(), 1)
def test_workflow_delete_api_view_with_access(self):
self.expected_content_type = None
self._create_test_workflow()
self.grant_access(
obj=self.test_workflow, permission=permission_workflow_delete
)
response = self._request_workflow_delete_api_view()
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(Workflow.objects.count(), 0)
def _request_workflow_detail_api_view(self):
return self.get(
api_viewname='rest_api:workflow-detail', kwargs={
'workflow_id': self.test_workflow.pk,
}
)
def test_workflow_detail_api_view_no_permission(self):
self._create_test_workflow()
response = self._request_workflow_detail_api_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertFalse('label' in response.json())
def test_workflow_detail_api_view_with_access(self):
self._create_test_workflow()
self.grant_access(
obj=self.test_workflow, permission=permission_workflow_view
)
response = self._request_workflow_detail_api_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.json()['label'], self.test_workflow.label)
def _request_workflow_edit_patch_api_view(self):
return self.patch(
viewname='rest_api:workflow-detail', kwargs={
'workflow_id': self.test_workflow.pk,
}, data={
'label': TEST_WORKFLOW_LABEL_EDITED,
'internal_name': TEST_WORKFLOW_INTERNAL_NAME_EDITED
}
)
def test_workflow_edit_patch_api_view_no_permission(self):
self._create_test_workflow()
test_workflow = copy.copy(self.test_workflow)
response = self._request_workflow_edit_patch_api_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.test_workflow.refresh_from_db()
self.assertEqual(self.test_workflow.label, test_workflow.label)
self.assertEqual(
self.test_workflow.internal_name, test_workflow.internal_name
)
def test_workflow_edit_patch_api_view_with_access(self):
self._create_test_workflow()
test_workflow = copy.copy(self.test_workflow)
self.grant_access(
obj=self.test_workflow, permission=permission_workflow_edit
)
response = self._request_workflow_edit_patch_api_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.test_workflow.refresh_from_db()
self.assertNotEqual(self.test_workflow.label, test_workflow.label)
self.assertNotEqual(
self.test_workflow.internal_name, test_workflow.internal_name
)
def _request_workflow_edit_put_api_view(self):
return self.put(
viewname='rest_api:workflow-detail', kwargs={
'workflow_id': self.test_workflow.pk,
}, data={
'label': TEST_WORKFLOW_LABEL_EDITED,
'internal_name': TEST_WORKFLOW_INTERNAL_NAME_EDITED
}
)
def test_workflow_edit_put_api_view_no_permission(self):
self._create_test_workflow()
test_workflow = copy.copy(self.test_workflow)
response = self._request_workflow_edit_put_api_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.test_workflow.refresh_from_db()
self.assertEqual(self.test_workflow.label, test_workflow.label)
self.assertEqual(
self.test_workflow.internal_name, test_workflow.internal_name
)
def test_workflow_edit_put_api_view_with_access(self):
self._create_test_workflow()
test_workflow = copy.copy(self.test_workflow)
self.grant_access(
obj=self.test_workflow, permission=permission_workflow_edit
)
response = self._request_workflow_edit_put_api_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.test_workflow.refresh_from_db()
self.assertNotEqual(self.test_workflow.label, test_workflow.label)
self.assertNotEqual(
self.test_workflow.internal_name, test_workflow.internal_name
)
"""
def _request_workflow_create_view_with_document_type(self):
return self.post(
viewname='rest_api:workflow-list', data={
@@ -97,43 +228,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
self.assertEqual(response.data['id'], workflow.pk)
def _request_workflow_delete_view(self):
return self.delete(
viewname='rest_api:workflow-detail', args=(self.workflow.pk,)
)
def test_workflow_delete_view_no_permission(self):
self.workflow = self._create_workflow()
response = self._request_workflow_delete_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(Workflow.objects.count(), 1)
def test_workflow_delete_view_with_permission(self):
self.workflow = self._create_workflow()
self.grant_access(
permission=permission_workflow_delete, obj=self.workflow
)
response = self._request_workflow_delete_view()
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(Workflow.objects.count(), 0)
def _request_workflow_detail_view(self):
return self.get(
viewname='rest_api:workflow-detail', args=(self.workflow.pk,)
)
def test_workflow_detail_view_no_access(self):
self.workflow = self._create_workflow()
response = self._request_workflow_detail_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertFalse('label' in response.data)
def test_workflow_detail_view_with_access(self):
self.workflow = self._create_workflow()
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
response = self._request_workflow_detail_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['label'], self.workflow.label)
def _request_workflow_document_type_list_create_view(self):
return self.post(
@@ -144,13 +239,13 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
def test_workflow_document_type_create_view_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
response = self._request_workflow_document_type_list_create_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(self.workflow.document_types.count(), 0)
def test_workflow_document_type_create_view_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.grant_access(permission=permission_workflow_edit, obj=self.workflow)
response = self._request_workflow_document_type_list_create_view()
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
@@ -165,7 +260,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
def test_workflow_document_type_delete_view_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
response = self._request_workflow_document_type_delete_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
@@ -174,7 +269,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
self.assertEqual(self.workflow.document_types.count(), 1)
def test_workflow_document_type_delete_view_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_workflow_edit, obj=self.workflow)
response = self._request_workflow_document_type_delete_view()
@@ -190,14 +285,14 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
def test_workflow_document_type_detail_view_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
response = self._request_workflow_document_type_detail_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertFalse('label' in response.data)
def test_workflow_document_type_detail_view_with_workflow_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
response = self._request_workflow_document_type_detail_view()
@@ -205,7 +300,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
self.assertFalse('label' in response.data)
def test_workflow_document_type_detail_view_with_document_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_document_type_view, obj=self.document_type)
response = self._request_workflow_document_type_detail_view()
@@ -213,7 +308,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
self.assertFalse('label' in response.data)
def test_workflow_document_type_detail_view_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_document_type_view, obj=self.document_type)
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
@@ -229,13 +324,13 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
def test_workflow_document_type_list_view_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
response = self._request_workflow_document_type_list_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_workflow_document_type_list_view_with_workflow_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
response = self._request_workflow_document_type_list_view()
@@ -243,14 +338,14 @@ class WorkflowAPITestCase(BaseAPITestCase):
self.assertEqual(response.data['count'], 0)
def test_workflow_document_type_list_view_with_document_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_document_type_view, obj=self.document_type)
response = self._request_workflow_document_type_list_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_workflow_document_type_list_view_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_document_type_view, obj=self.document_type)
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
@@ -262,38 +357,18 @@ class WorkflowAPITestCase(BaseAPITestCase):
return self.get(viewname='rest_api:workflow-list')
def test_workflow_list_view_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
response = self._request_workflow_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['count'], 0)
def test_workflow_list_view_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
response = self._request_workflow_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['results'][0]['label'], self.workflow.label)
def _request_workflow_edit_view_via_patch(self):
return self.patch(
viewname='rest_api:workflow-detail', args=(self.workflow.pk,),
data={'label': TEST_WORKFLOW_LABEL_EDITED}
)
def test_workflow_patch_view_no_access(self):
self.workflow = self._create_workflow()
response = self._request_workflow_edit_view_via_patch()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.workflow.refresh_from_db()
self.assertEqual(self.workflow.label, TEST_WORKFLOW_LABEL)
def test_workflow_patch_view_with_access(self):
self.workflow = self._create_workflow()
self.grant_access(permission=permission_workflow_edit, obj=self.workflow)
response = self._request_workflow_edit_view_via_patch()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.workflow.refresh_from_db()
self.assertEqual(self.workflow.label, TEST_WORKFLOW_LABEL_EDITED)
def _request_workflow_edit_view_via_put(self):
return self.put(
@@ -302,14 +377,14 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
def test_workflow_put_view_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
response = self._request_workflow_edit_view_via_put()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.workflow.refresh_from_db()
self.assertEqual(self.workflow.label, TEST_WORKFLOW_LABEL)
def test_workflow_put_view_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.grant_access(permission=permission_workflow_edit, obj=self.workflow)
response = self._request_workflow_edit_view_via_put()
self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -323,14 +398,14 @@ class WorkflowAPITestCase(BaseAPITestCase):
)
def test_document_type_workflow_list_no_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
response = self._request_document_type_workflow_list_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertFalse('results' in response.data)
def test_document_type_workflow_list_with_workflow_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
response = self._request_document_type_workflow_list_view()
@@ -338,7 +413,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
self.assertFalse('results' in response.data)
def test_document_type_workflow_list_with_document_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(
permission=permission_document_type_view, obj=self.document_type
@@ -348,7 +423,7 @@ class WorkflowAPITestCase(BaseAPITestCase):
self.assertEqual(response.data['count'], 0)
def test_document_type_workflow_list_with_access(self):
self.workflow = self._create_workflow()
self._create_test_workflow()
self.workflow.document_types.add(self.document_type)
self.grant_access(permission=permission_workflow_view, obj=self.workflow)
self.grant_access(
@@ -965,3 +1040,4 @@ class DocumentWorkflowsAPITestCase(BaseAPITestCase):
response.data['results'][0]['transition']['label'],
TEST_WORKFLOW_TRANSITION_LABEL
)
"""

View File

@@ -2,14 +2,7 @@ from __future__ import unicode_literals
from django.conf.urls import url
from .api_views import (
APIDocumentTypeWorkflowListView, APIWorkflowDocumentTypeList,
APIWorkflowDocumentTypeView, APIWorkflowImageView,
APIWorkflowInstanceListView, APIWorkflowInstanceLogEntryListView,
APIWorkflowInstanceView, APIWorkflowListView, APIWorkflowStateListView,
APIWorkflowStateView, APIWorkflowTransitionListView,
APIWorkflowTransitionView, APIWorkflowView
)
from .api_views import WorkflowAPIViewSet
from .views import (
DocumentWorkflowInstanceListView, ToolLaunchAllWorkflows,
WorkflowCreateView, WorkflowDeleteView, WorkflowDocumentTypesView,
@@ -181,6 +174,23 @@ urlpatterns = [
)
]
api_router_entries = (
{
'prefix': r'workflows', 'viewset': WorkflowAPIViewSet,
'basename': 'workflow'
},
#{
# 'prefix': r'metadata_types/(?P<metadata_type_id>[^/.]+)/document_type_relations',
# 'viewset': MetadataTypeDocumentTypeRelationAPIViewSet,
# 'basename': 'metadata_type-document_type_relation'
#},
#{
# 'prefix': r'documents/(?P<document_id>[^/.]+)/metadata',
# 'viewset': DocumentMetadataAPIViewSet, 'basename': 'document-metadata'
#}
)
'''
api_urls = [
url(
regex=r'^workflows/$', name='workflow-list',
@@ -244,3 +254,4 @@ api_urls = [
view=APIDocumentTypeWorkflowListView.as_view()
)
]
'''