Skip to content

Commit

Permalink
Merge pull request #12 from ricardobranco777/multi_jira
Browse files Browse the repository at this point in the history
Fetch multiple Jira tickets with one call
  • Loading branch information
ricardobranco777 committed Jun 27, 2024
2 parents 2d47370 + dfcbab5 commit 0267e5b
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions services/jira.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ def close(self) -> None:
pass

def _get_issues(self, filters: str) -> list[dict]:
filters = f"{filters} AND resolution IS EMPTY"
data = self.client.jql(filters)
issues = data["issues"]
while len(issues) < data["total"]:
Expand All @@ -44,7 +43,7 @@ def _get_issues(self, filters: str) -> list[dict]:
return issues

def get_user_issues(self) -> list[Issue]:
filters = "watcher = currentUser()"
filters = "watcher = currentUser() AND resolution IS EMPTY"
try:
issues = self._get_issues(filters)
except (ApiError, RequestException) as exc:
Expand All @@ -68,6 +67,24 @@ def get_issue(self, issue_id: str = "", **kwargs) -> Issue | None:
return None
return self._to_issue(info)

def get_issues(self, issues: list[dict]) -> list[Issue | None]:
filters = f"key in ({','.join(issue['issue_id'] for issue in issues)})"
try:
found = [self._to_issue(info) for info in self._get_issues(filters=filters)]
except (ApiError, RequestException) as exc:
logging.error("Jira: %s: get_issues(): %s", self.url, exc)
return []
found_ids = {str(issue.raw["key"]) for issue in found}
not_found = [
self._not_found(
tag=f"{self.tag}#{issue['issue_id']}",
url=f"{self.url}/browse/{issue['issue_id']}",
)
for issue in issues
if issue["issue_id"] not in found_ids
]
return found + not_found # type: ignore

def _to_issue(self, info: Any) -> Issue:
return Issue(
tag=f"{self.tag}#{info['key']}",
Expand Down

0 comments on commit 0267e5b

Please sign in to comment.