Skip to content

Commit e669d66

Browse files
Merge pull request #1933 from kili-technology/lab-3807-optimise-create-issues
fix(LAB-3807): remove retrieval of asset ids when creating issues
2 parents 61cdc43 + f808449 commit e669d66

6 files changed

Lines changed: 19 additions & 15 deletions

File tree

src/kili/adapters/kili_api_gateway/issue/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from kili.core.constants import MUTATION_BATCH_SIZE
1717
from kili.core.utils.pagination import batcher
1818
from kili.domain.issue import IssueFilters, IssueId, IssueStatus, IssueType
19+
from kili.domain.project import ProjectId
1920
from kili.domain.types import ListOrTuple
2021
from kili.utils import tqdm
2122

@@ -27,13 +28,16 @@ class IssueOperationMixin(BaseOperationMixin):
2728
"""GraphQL Mixin extending GraphQL Gateway class with Issue related operations."""
2829

2930
def create_issues(
30-
self, type_: IssueType, issues: List[IssueToCreateKiliAPIGatewayInput], description: str
31+
self,
32+
project_id: ProjectId,
33+
type_: IssueType,
34+
issues: List[IssueToCreateKiliAPIGatewayInput],
35+
description: str,
3136
) -> List[IssueId]:
3237
"""Send a GraphQL request calling createIssues resolver."""
3338
created_issue_entities: List[IssueId] = []
3439
with tqdm.tqdm(total=len(issues), desc=description) as pbar:
3540
for issues_batch in batcher(issues, batch_size=MUTATION_BATCH_SIZE):
36-
batch_targeted_asset_ids = [issue.asset_id for issue in issues_batch]
3741
payload = {
3842
"issues": [
3943
{
@@ -46,7 +50,7 @@ def create_issues(
4650
}
4751
for issue in issues_batch
4852
],
49-
"where": {"idIn": batch_targeted_asset_ids},
53+
"where": {"project": {"id": project_id}},
5054
}
5155
result = self.graphql_client.execute(GQL_CREATE_ISSUES, payload)
5256
batch_created_issues = result["data"]

src/kili/adapters/kili_api_gateway/issue/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ class IssueToCreateKiliAPIGatewayInput:
1010

1111
label_id: Optional[str]
1212
object_mid: Optional[str]
13-
asset_id: str
13+
asset_id: Optional[str]
1414
text: Optional[str]

src/kili/use_cases/issue/__init__.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from kili.domain.issue import IssueFilters, IssueId, IssueStatus
88
from kili.domain.project import ProjectId
99
from kili.domain.types import ListOrTuple
10-
from kili.entrypoints.mutations.issue.helpers import get_labels_asset_ids_map
1110
from kili.use_cases.base import BaseUseCases
1211
from kili.use_cases.issue.types import IssueToCreateUseCaseInput
1312

@@ -19,21 +18,20 @@ def create_issues(
1918
self, project_id: ProjectId, issues: List[IssueToCreateUseCaseInput]
2019
) -> List[IssueId]:
2120
"""Create issues with issue type."""
22-
label_id_array = [issue.label_id for issue in issues]
23-
label_asset_ids_map = get_labels_asset_ids_map(
24-
self._kili_api_gateway, project_id, label_id_array
25-
) # TODO: should be done in the backend
2621
gateway_issues = [
2722
IssueToCreateKiliAPIGatewayInput(
23+
asset_id=None,
2824
label_id=issue.label_id,
2925
object_mid=issue.object_mid,
30-
asset_id=label_asset_ids_map[issue.label_id],
3126
text=issue.text,
3227
)
3328
for issue in issues
3429
]
3530
return self._kili_api_gateway.create_issues(
36-
type_="ISSUE", issues=gateway_issues, description="Creating issues"
31+
project_id=project_id,
32+
type_="ISSUE",
33+
issues=gateway_issues,
34+
description="Creating issues",
3735
)
3836

3937
def count_issues(self, filters: IssueFilters) -> int:

src/kili/use_cases/question/question_use_case.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ def create_questions(
5555
return [
5656
QuestionId(str(id_))
5757
for id_ in self._kili_api_gateway.create_issues(
58-
type_="QUESTION", issues=gateway_issues, description="Creating questions"
58+
project_id=project_id,
59+
type_="QUESTION",
60+
issues=gateway_issues,
61+
description="Creating questions",
5962
)
6063
]

tests/integration/use_cases/test_issue.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@
1414

1515

1616
def test_create_one_issue(kili_api_gateway: KiliAPIGateway, mocker: pytest_mock.MockerFixture):
17-
mocker.patch(
18-
"kili.use_cases.issue.get_labels_asset_ids_map", return_value={"label_id": "asset_id"}
19-
)
2017
kili_api_gateway.create_issues.return_value = [IssueId("created_issue_id")]
2118

2219
# given one issue to create

tests/integration/use_cases/test_question.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def test_given_text_and_asset_ids_when_calling_create_questions_it_creates_quest
3838
# Then
3939
assert len(question_ids) == 2
4040
kili_api_gateway.create_issues.assert_called_once_with(
41+
project_id=project_id,
4142
type_="QUESTION",
4243
issues=[
4344
IssueToCreateKiliAPIGatewayInput(
@@ -94,6 +95,7 @@ def test_given_text_and_external_ids_when_calling_create_questions_it_creates_qu
9495
# Then
9596
assert len(question_ids) == 2
9697
kili_api_gateway.create_issues.assert_called_once_with(
98+
project_id=project_id,
9799
type_="QUESTION",
98100
issues=[
99101
IssueToCreateKiliAPIGatewayInput(

0 commit comments

Comments
 (0)