fix error in gitignore
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
from rest_framework import decorators, response, status, viewsets
|
||||
|
||||
from apps.core.errors import ApiError, error_response
|
||||
from apps.rbac.permissions import ActionPermission
|
||||
from apps.workflows.engine import WorkflowEngine
|
||||
from apps.workflows.models import Workflow, WorkflowStep, WorkflowTransition, WorkflowVersion
|
||||
from apps.workflows.serializers import (
|
||||
WorkflowSerializer,
|
||||
WorkflowStepSerializer,
|
||||
WorkflowTransitionSerializer,
|
||||
WorkflowVersionSerializer,
|
||||
)
|
||||
|
||||
|
||||
class WorkflowViewSet(viewsets.ModelViewSet):
|
||||
queryset = Workflow.objects.all()
|
||||
serializer_class = WorkflowSerializer
|
||||
permission_classes = [ActionPermission]
|
||||
code_map = {
|
||||
"list": "workflow.view",
|
||||
"retrieve": "workflow.view",
|
||||
"create": "workflow.create",
|
||||
"update": "workflow.update",
|
||||
"partial_update": "workflow.update",
|
||||
"destroy": "workflow.update",
|
||||
"publish": "workflow.publish",
|
||||
}
|
||||
|
||||
@decorators.action(detail=True, methods=["post"])
|
||||
def publish(self, request, pk=None):
|
||||
workflow = self.get_object()
|
||||
version = workflow.versions.filter(status="draft").order_by("-version").first()
|
||||
if version is None:
|
||||
return response.Response(
|
||||
error_response("WORKFLOW_INVALID", "No draft version to publish"),
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
try:
|
||||
WorkflowEngine().publish(workflow, version)
|
||||
except ApiError as exc:
|
||||
return response.Response(error_response(exc.code, exc.message, exc.details), status=exc.status)
|
||||
return response.Response(WorkflowSerializer(workflow).data)
|
||||
|
||||
|
||||
class WorkflowVersionViewSet(viewsets.ModelViewSet):
|
||||
queryset = WorkflowVersion.objects.all()
|
||||
serializer_class = WorkflowVersionSerializer
|
||||
permission_classes = [ActionPermission]
|
||||
filterset_fields = ["workflow"]
|
||||
code_map = {"create": "workflow.create", "update": "workflow.update", "partial_update": "workflow.update"}
|
||||
|
||||
|
||||
class WorkflowStepViewSet(viewsets.ModelViewSet):
|
||||
queryset = WorkflowStep.objects.all()
|
||||
serializer_class = WorkflowStepSerializer
|
||||
permission_classes = [ActionPermission]
|
||||
filterset_fields = ["version", "key"]
|
||||
code_map = {"create": "workflow.create", "update": "workflow.update", "partial_update": "workflow.update"}
|
||||
|
||||
|
||||
class WorkflowTransitionViewSet(viewsets.ModelViewSet):
|
||||
queryset = WorkflowTransition.objects.all()
|
||||
serializer_class = WorkflowTransitionSerializer
|
||||
permission_classes = [ActionPermission]
|
||||
filterset_fields = ["version"]
|
||||
code_map = {"create": "workflow.create", "update": "workflow.update", "partial_update": "workflow.update"}
|
||||
Reference in New Issue
Block a user