From 3901560a2c94c9248aedacd3f5b532ab9972a183 Mon Sep 17 00:00:00 2001 From: Misode Date: Wed, 19 Feb 2025 21:57:49 +0100 Subject: [PATCH 1/2] Fix /jira command after migration --- commanderbot/ext/jira/jira_client.py | 19 ++++++++++++------- commanderbot/ext/jira/jira_cog.py | 2 -- commanderbot/ext/jira/jira_issue.py | 3 --- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/commanderbot/ext/jira/jira_client.py b/commanderbot/ext/jira/jira_client.py index 001e2a0..11529b5 100644 --- a/commanderbot/ext/jira/jira_client.py +++ b/commanderbot/ext/jira/jira_client.py @@ -1,6 +1,6 @@ from dataclasses import dataclass from datetime import datetime -from typing import Optional +from typing import Any, Optional import aiohttp @@ -27,13 +27,20 @@ def __init__(self, url: Optional[str]): async def _request_issue_data(self, base_url: str, issue_id: str) -> dict: try: - issue_url: str = f"{base_url}/rest/api/latest/issue/{issue_id}" + url: str = f"{base_url}/api/jql-search-post" headers: dict[str, str] = {"User-Agent": constants.USER_AGENT} + request_data: dict[str, Any] = { + "advanced": True, + "project": issue_id.split("-")[0], + "search": f"key = {issue_id}", + "maxResults": 1, + } async with aiohttp.ClientSession() as session: - async with session.get( - issue_url, headers=headers, raise_for_status=True + async with session.post( + url, headers=headers, json=request_data, raise_for_status=True ) as response: - return await response.json() + response_data = await response.json() + return response_data["issues"][0] except aiohttp.InvalidURL: raise InvalidURL(issue_id) @@ -77,9 +84,7 @@ async def get_issue(self, query: JiraQuery) -> JiraIssue: return JiraIssue( issue_id=issue_id, url=f"{base_url}/browse/{issue_id}", - icon_url=f"{base_url}/jira-favicon-hires.png", summary=fields["summary"], - reporter=fields["reporter"]["displayName"], assignee=assignee, created=datetime.strptime(fields["created"], "%Y-%m-%dT%H:%M:%S.%f%z"), updated=datetime.strptime(fields["updated"], "%Y-%m-%dT%H:%M:%S.%f%z"), diff --git a/commanderbot/ext/jira/jira_cog.py b/commanderbot/ext/jira/jira_cog.py index fca75b3..d04ac1e 100644 --- a/commanderbot/ext/jira/jira_cog.py +++ b/commanderbot/ext/jira/jira_cog.py @@ -87,8 +87,6 @@ async def cmd_jira( color=issue.status_color.value, ) - issue_embed.set_thumbnail(url=issue.icon_url) - for k, v in issue.fields.items(): issue_embed.add_field(name=k, value=v) diff --git a/commanderbot/ext/jira/jira_issue.py b/commanderbot/ext/jira/jira_issue.py index e1b5d36..aeae97a 100644 --- a/commanderbot/ext/jira/jira_issue.py +++ b/commanderbot/ext/jira/jira_issue.py @@ -37,9 +37,7 @@ def from_str(cls, color: str): class JiraIssue: issue_id: str url: str - icon_url: str summary: str - reporter: str assignee: str created: datetime updated: datetime @@ -53,7 +51,6 @@ class JiraIssue: @property def fields(self) -> dict: return { - "Reported By": self.reporter, "Assigned To": self.assignee, "Created": format_dt(self.created, style="R"), "Updated": format_dt(self.updated, style="R"), From c4adaddcab1aec522327c3a8c374a4d469dbc1f9 Mon Sep 17 00:00:00 2001 From: Misode Date: Wed, 19 Feb 2025 22:08:10 +0100 Subject: [PATCH 2/2] Set icon url based on project --- commanderbot/ext/jira/jira_client.py | 1 + commanderbot/ext/jira/jira_cog.py | 2 ++ commanderbot/ext/jira/jira_issue.py | 1 + 3 files changed, 4 insertions(+) diff --git a/commanderbot/ext/jira/jira_client.py b/commanderbot/ext/jira/jira_client.py index 11529b5..ab74692 100644 --- a/commanderbot/ext/jira/jira_client.py +++ b/commanderbot/ext/jira/jira_client.py @@ -84,6 +84,7 @@ async def get_issue(self, query: JiraQuery) -> JiraIssue: return JiraIssue( issue_id=issue_id, url=f"{base_url}/browse/{issue_id}", + icon_url=f"{base_url}/{issue_id.split("-")[0].lower()}_icon.png", summary=fields["summary"], assignee=assignee, created=datetime.strptime(fields["created"], "%Y-%m-%dT%H:%M:%S.%f%z"), diff --git a/commanderbot/ext/jira/jira_cog.py b/commanderbot/ext/jira/jira_cog.py index d04ac1e..fca75b3 100644 --- a/commanderbot/ext/jira/jira_cog.py +++ b/commanderbot/ext/jira/jira_cog.py @@ -87,6 +87,8 @@ async def cmd_jira( color=issue.status_color.value, ) + issue_embed.set_thumbnail(url=issue.icon_url) + for k, v in issue.fields.items(): issue_embed.add_field(name=k, value=v) diff --git a/commanderbot/ext/jira/jira_issue.py b/commanderbot/ext/jira/jira_issue.py index aeae97a..8994f18 100644 --- a/commanderbot/ext/jira/jira_issue.py +++ b/commanderbot/ext/jira/jira_issue.py @@ -37,6 +37,7 @@ def from_str(cls, color: str): class JiraIssue: issue_id: str url: str + icon_url: str summary: str assignee: str created: datetime