Skip to content
This repository was archived by the owner on Sep 3, 2025. It is now read-only.

Commit ff0ac89

Browse files
authored
Adds additional permissions and switches to minimal (#5639)
1 parent 67842a5 commit ff0ac89

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

src/dispatch/workflow/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
Pagination,
2222
)
2323
from dispatch.participant.models import ParticipantRead
24-
from dispatch.plugin.models import PluginInstance, PluginInstanceRead
24+
from dispatch.plugin.models import PluginInstance, PluginInstanceReadMinimal
2525
from dispatch.project.models import ProjectRead
2626

2727
from .enums import WorkflowInstanceStatus
@@ -121,7 +121,7 @@ class WorkflowSignal(DispatchBase):
121121
class WorkflowBase(DispatchBase):
122122
name: NameStr
123123
resource_id: str
124-
plugin_instance: PluginInstanceRead
124+
plugin_instance: PluginInstanceReadMinimal
125125
parameters: Optional[List[dict]] = []
126126
enabled: Optional[bool]
127127
description: Optional[str] = Field(None, nullable=True)

src/dispatch/workflow/views.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
from fastapi import APIRouter, HTTPException, status
1+
from fastapi import APIRouter, HTTPException, status, Depends
22
from pydantic.error_wrappers import ErrorWrapper, ValidationError
33

44
from dispatch.database.core import DbSession
55
from dispatch.database.service import CommonParameters, search_filter_sort_paginate
6+
from dispatch.auth.permissions import SensitiveProjectActionPermission, PermissionsDependency
67
from dispatch.exceptions import NotFoundError
78
from dispatch.models import PrimaryKey
89
from 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+
)
3135
def 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+
)
4350
def 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+
)
5566
def 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+
)
7085
def 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+
)
82101
def 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+
)
94116
def run_workflow(
95117
db_session: DbSession,
96118
workflow_id: PrimaryKey,

0 commit comments

Comments
 (0)