1- from fastapi import APIRouter , HTTPException , status
1+ from fastapi import APIRouter , HTTPException , status , Depends
22from pydantic .error_wrappers import ErrorWrapper , ValidationError
33
44from dispatch .database .core import DbSession
55from dispatch .database .service import CommonParameters , search_filter_sort_paginate
6+ from dispatch .auth .permissions import SensitiveProjectActionPermission , PermissionsDependency
67from dispatch .exceptions import NotFoundError
78from dispatch .models import PrimaryKey
89from dispatch .plugin import service as plugin_service
@@ -27,7 +28,10 @@ def get_workflows(common: CommonParameters):
2728 return search_filter_sort_paginate (model = "Workflow" , ** common )
2829
2930
30- @router .get ("/{workflow_id}" , response_model = WorkflowRead )
31+ @router .get (
32+ "/{workflow_id}" ,
33+ response_model = WorkflowRead ,
34+ )
3135def get_workflow (db_session : DbSession , workflow_id : PrimaryKey ):
3236 """Get a workflow."""
3337 workflow = get (db_session = db_session , workflow_id = workflow_id )
@@ -39,7 +43,10 @@ def get_workflow(db_session: DbSession, workflow_id: PrimaryKey):
3943 return workflow
4044
4145
42- @router .get ("/instances/{workflow_instance_id}" , response_model = WorkflowInstanceRead )
46+ @router .get (
47+ "/instances/{workflow_instance_id}" ,
48+ response_model = WorkflowInstanceRead ,
49+ )
4350def get_workflow_instance (db_session : DbSession , workflow_instance_id : PrimaryKey ):
4451 """Get a workflow instance."""
4552 workflow_instance = get_instance (db_session = db_session , instance_id = workflow_instance_id )
@@ -51,7 +58,11 @@ def get_workflow_instance(db_session: DbSession, workflow_instance_id: PrimaryKe
5158 return workflow_instance
5259
5360
54- @router .post ("" , response_model = WorkflowRead )
61+ @router .post (
62+ "" ,
63+ response_model = WorkflowRead ,
64+ dependencies = [Depends (PermissionsDependency ([SensitiveProjectActionPermission ]))],
65+ )
5566def create_workflow (db_session : DbSession , workflow_in : WorkflowCreate ):
5667 """Create a new workflow."""
5768 plugin_instance = plugin_service .get_instance (
@@ -66,7 +77,11 @@ def create_workflow(db_session: DbSession, workflow_in: WorkflowCreate):
6677 return create (db_session = db_session , workflow_in = workflow_in )
6778
6879
69- @router .put ("/{workflow_id}" , response_model = WorkflowRead )
80+ @router .put (
81+ "/{workflow_id}" ,
82+ response_model = WorkflowRead ,
83+ dependencies = [Depends (PermissionsDependency ([SensitiveProjectActionPermission ]))],
84+ )
7085def update_workflow (db_session : DbSession , workflow_id : PrimaryKey , workflow_in : WorkflowUpdate ):
7186 """Update a workflow."""
7287 workflow = get (db_session = db_session , workflow_id = workflow_id )
@@ -78,7 +93,11 @@ def update_workflow(db_session: DbSession, workflow_id: PrimaryKey, workflow_in:
7893 return update (db_session = db_session , workflow = workflow , workflow_in = workflow_in )
7994
8095
81- @router .delete ("/{workflow_id}" , response_model = None )
96+ @router .delete (
97+ "/{workflow_id}" ,
98+ response_model = None ,
99+ dependencies = [Depends (PermissionsDependency ([SensitiveProjectActionPermission ]))],
100+ )
82101def delete_workflow (db_session : DbSession , workflow_id : PrimaryKey ):
83102 """Delete a workflow."""
84103 workflow = get (db_session = db_session , workflow_id = workflow_id )
@@ -90,7 +109,10 @@ def delete_workflow(db_session: DbSession, workflow_id: PrimaryKey):
90109 delete (db_session = db_session , workflow_id = workflow_id )
91110
92111
93- @router .post ("/{workflow_id}/run" , response_model = WorkflowInstanceRead )
112+ @router .post (
113+ "/{workflow_id}/run" ,
114+ response_model = WorkflowInstanceRead ,
115+ )
94116def run_workflow (
95117 db_session : DbSession ,
96118 workflow_id : PrimaryKey ,
0 commit comments