Skip to content

Commit

Permalink
feat: use the SDK to create tag to organization
Browse files Browse the repository at this point in the history
  • Loading branch information
baptiste-olivier committed Nov 5, 2024
1 parent ed4d29b commit 9564431
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/kili/adapters/kili_api_gateway/tag/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Mixin extending Kili API Gateway class with Tags related operations."""

from typing import Dict, List
from typing import Dict, List, Optional

from kili.adapters.kili_api_gateway.base import BaseOperationMixin
from kili.adapters.kili_api_gateway.helpers.queries import fragment_builder
Expand All @@ -10,6 +10,7 @@

from .operations import (
GQL_CHECK_TAG,
GQL_CREATE_TAG,
GQL_DELETE_TAG,
GQL_UNCHECK_TAG,
GQL_UPDATE_TAG,
Expand Down Expand Up @@ -67,3 +68,9 @@ def delete_tag(self, tag_id: TagId) -> bool:
variables = {"tagId": tag_id}
result = self.graphql_client.execute(GQL_DELETE_TAG, variables)
return result["data"]

def create_tag(self, label: str, color: Optional[str] = None) -> Dict:
"""Send a GraphQL request calling createTag resolver."""
variables = {"label": label, "color": color}
result = self.graphql_client.execute(GQL_CREATE_TAG, variables)
return result["data"]
10 changes: 10 additions & 0 deletions src/kili/adapters/kili_api_gateway/tag/operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@
}
"""

GQL_CREATE_TAG = """
mutation createTag($data: TagData!) {
createTag(data: $data) {
id
color
label
}
}
"""


def get_list_tags_by_org_query(fragment: str) -> str:
"""Return the GraphQL query to list tags by organization."""
Expand Down
16 changes: 16 additions & 0 deletions src/kili/presentation/client/tag.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,19 @@ def delete_tag(self, tag_name: Optional[str] = None, tag_id: Optional[str] = Non
raise ValueError("Either `tag_name` or `tag_id` must be provided.")
tag_id = tag_use_cases.get_tag_ids_from_labels(labels=(tag_name,))[0]
return tag_use_cases.delete_tag(tag_id=TagId(tag_id))

def create_tag(self, name: str, color: Optional[str]) -> Dict[Literal["id"], str]:
"""Create a tag.
This operation is organization-wide.
The tag will be proposed for projects of the organization.
Args:
name: Name of the tag to create.
color: Color of the tag to create. If not providen a default color will be used.
Returns:
The id of the created tag.
"""
tag_use_cases = TagUseCases(self.kili_api_gateway)
return tag_use_cases.create_tag(name, color)
4 changes: 4 additions & 0 deletions src/kili/use_cases/tag/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,7 @@ def delete_tag(self, tag_id: TagId) -> bool:
Whether the tag was successfully removed.
"""
return self._kili_api_gateway.delete_tag(tag_id=tag_id)

def create_tag(self, name: str, color: Optional[str]) -> Dict:
"""Create a tag."""
return self._kili_api_gateway.create_tag(label=name, color=color)

0 comments on commit 9564431

Please sign in to comment.