Project Workflow module
Client presentation methods for project workflow.
Source code in kili/presentation/client/project_workflow.py
class ProjectWorkflowClientMethods(BaseClientMethods):
"""Client presentation methods for project workflow."""
@typechecked
def update_project_workflow(
self,
project_id: str,
enforce_step_separation: Optional[bool] = None,
create_steps: Optional[list[WorkflowStepCreate]] = None,
update_steps: Optional[list[WorkflowStepUpdate]] = None,
delete_steps: Optional[list[str]] = None,
) -> dict[str, Any]:
"""Update properties of a project workflow.
Args:
project_id: Id of the project.
enforce_step_separation: Prevents the same user from being assigned to
multiple steps in the workflow for a same asset,
ensuring independent review and labeling processes
create_steps: List of steps to create in the project workflow.
update_steps: List of steps to update in the project workflow.
delete_steps: List of step IDs or names to delete from the project workflow.
Returns:
A dict with the changed properties which indicates if the mutation was successful,
else an error message.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).update_project_workflow(
project_id=ProjectId(project_id),
enforce_step_separation=enforce_step_separation,
create_steps=create_steps,
update_steps=update_steps,
delete_steps=delete_steps,
)
@typechecked
def get_steps(
self,
project_id: str,
fields: ListOrTuple[str] = (
"steps.type",
"steps.name",
"steps.id",
"steps.assignees.email",
"steps.assignees.id",
),
) -> list[dict[str, Any]]:
"""Get steps in a project workflow.
Args:
project_id: Id of the project.
fields: All the fields to request among the possible fields for the project.
See the documentation for all possible fields.
Returns:
A dict with the steps of the project workflow.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).get_steps(
project_id=ProjectId(project_id), fields=fields
)
@typechecked
def add_reviewers_to_step(
self, project_id: str, step_name: str, emails: list[str]
) -> list[str]:
"""Add reviewers to a specific step.
Args:
project_id: Id of the project.
step_name: Name of the step.
emails: List of emails to add.
Returns:
A list with the added emails.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).add_reviewers_to_step(
project_id=project_id, step_name=step_name, emails=emails
)
@typechecked
def remove_reviewers_from_step(
self, project_id: str, step_name: str, emails: list[str]
) -> list[str]:
"""Remove reviewers from a specific step.
Args:
project_id: Id of the project.
step_name: Name of the step.
emails: List of emails to remove.
Returns:
A list with the removed emails.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).remove_reviewers_from_step(
project_id=project_id, step_name=step_name, emails=emails
)
add_reviewers_to_step(self, project_id, step_name, emails)
Add reviewers to a specific step.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
project_id |
str |
Id of the project. |
required |
step_name |
str |
Name of the step. |
required |
emails |
list |
List of emails to add. |
required |
Returns:
| Type | Description |
|---|---|
list |
A list with the added emails. |
Source code in kili/presentation/client/project_workflow.py
def add_reviewers_to_step(
self, project_id: str, step_name: str, emails: list[str]
) -> list[str]:
"""Add reviewers to a specific step.
Args:
project_id: Id of the project.
step_name: Name of the step.
emails: List of emails to add.
Returns:
A list with the added emails.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).add_reviewers_to_step(
project_id=project_id, step_name=step_name, emails=emails
)
get_steps(self, project_id, fields=('steps.type', 'steps.name', 'steps.id', 'steps.assignees.email', 'steps.assignees.id'))
Get steps in a project workflow.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
project_id |
str |
Id of the project. |
required |
fields |
Union[list[str], tuple[str, ...]] |
All the fields to request among the possible fields for the project. See the documentation for all possible fields. |
('steps.type', 'steps.name', 'steps.id', 'steps.assignees.email', 'steps.assignees.id') |
Returns:
| Type | Description |
|---|---|
list |
A dict with the steps of the project workflow. |
Source code in kili/presentation/client/project_workflow.py
def get_steps(
self,
project_id: str,
fields: ListOrTuple[str] = (
"steps.type",
"steps.name",
"steps.id",
"steps.assignees.email",
"steps.assignees.id",
),
) -> list[dict[str, Any]]:
"""Get steps in a project workflow.
Args:
project_id: Id of the project.
fields: All the fields to request among the possible fields for the project.
See the documentation for all possible fields.
Returns:
A dict with the steps of the project workflow.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).get_steps(
project_id=ProjectId(project_id), fields=fields
)
remove_reviewers_from_step(self, project_id, step_name, emails)
Remove reviewers from a specific step.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
project_id |
str |
Id of the project. |
required |
step_name |
str |
Name of the step. |
required |
emails |
list |
List of emails to remove. |
required |
Returns:
| Type | Description |
|---|---|
list |
A list with the removed emails. |
Source code in kili/presentation/client/project_workflow.py
def remove_reviewers_from_step(
self, project_id: str, step_name: str, emails: list[str]
) -> list[str]:
"""Remove reviewers from a specific step.
Args:
project_id: Id of the project.
step_name: Name of the step.
emails: List of emails to remove.
Returns:
A list with the removed emails.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).remove_reviewers_from_step(
project_id=project_id, step_name=step_name, emails=emails
)
update_project_workflow(self, project_id, enforce_step_separation=None, create_steps=None, update_steps=None, delete_steps=None)
Update properties of a project workflow.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
project_id |
str |
Id of the project. |
required |
enforce_step_separation |
Optional[bool] |
Prevents the same user from being assigned to multiple steps in the workflow for a same asset, ensuring independent review and labeling processes |
None |
create_steps |
Optional[list[kili.domain.project.WorkflowStepCreate]] |
List of steps to create in the project workflow. |
None |
update_steps |
Optional[list[kili.domain.project.WorkflowStepUpdate]] |
List of steps to update in the project workflow. |
None |
delete_steps |
Optional[list[str]] |
List of step IDs or names to delete from the project workflow. |
None |
Returns:
| Type | Description |
|---|---|
dict |
A dict with the changed properties which indicates if the mutation was successful, else an error message. |
Source code in kili/presentation/client/project_workflow.py
def update_project_workflow(
self,
project_id: str,
enforce_step_separation: Optional[bool] = None,
create_steps: Optional[list[WorkflowStepCreate]] = None,
update_steps: Optional[list[WorkflowStepUpdate]] = None,
delete_steps: Optional[list[str]] = None,
) -> dict[str, Any]:
"""Update properties of a project workflow.
Args:
project_id: Id of the project.
enforce_step_separation: Prevents the same user from being assigned to
multiple steps in the workflow for a same asset,
ensuring independent review and labeling processes
create_steps: List of steps to create in the project workflow.
update_steps: List of steps to update in the project workflow.
delete_steps: List of step IDs or names to delete from the project workflow.
Returns:
A dict with the changed properties which indicates if the mutation was successful,
else an error message.
"""
return ProjectWorkflowUseCases(self.kili_api_gateway).update_project_workflow(
project_id=ProjectId(project_id),
enforce_step_separation=enforce_step_separation,
create_steps=create_steps,
update_steps=update_steps,
delete_steps=delete_steps,
)