Skip to content

Commit

Permalink
[WIP] [JIRA] new method get_issue_status_changelog + docs + example +…
Browse files Browse the repository at this point in the history
…small improvement get_issue (atlassian-api#1357)

* fixing minor issue in scrap_regex_from_issue method
* new Confluence method scrap_regex_from_page+ docs + examples
* added method get_attachments_ids_from_page to jira.py
  • Loading branch information
gkowalc authored Mar 29, 2024
1 parent d4ef596 commit 413524b
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
31 changes: 19 additions & 12 deletions atlassian/jira.py
Original file line number Diff line number Diff line change
Expand Up @@ -1082,13 +1082,7 @@ def issue(self, key, fields="*all", expand=None):
params["expand"] = expand
return self.get(url, params=params)

def get_issue(
self,
issue_id_or_key,
fields=None,
properties=None,
update_history=True,
):
def get_issue(self, issue_id_or_key, fields=None, properties=None, update_history=True, expand=None):
"""
Returns a full representation of the issue for the given issue key
By default, all fields are returned in this get-issue resource
Expand All @@ -1097,6 +1091,7 @@ def get_issue(
:param fields: str
:param properties: str
:param update_history: bool
:param expand: str
:return: issue
"""
base_url = self.resource_url("issue")
Expand All @@ -1109,11 +1104,9 @@ def get_issue(
params["fields"] = fields
if properties is not None:
params["properties"] = properties
if update_history is True:
params["updateHistory"] = "true"
if update_history is False:
params["updateHistory"] = "false"

if expand:
params["expand"] = expand
params["updateHistory"] = str(update_history).lower()
return self.get(url, params=params)

def epic_issues(self, epic, fields="*all", expand=None):
Expand Down Expand Up @@ -1867,6 +1860,20 @@ def set_issue_status(self, issue_key, status_name, fields=None, update=None):
data["update"] = update
return self.post(url, data=data)

def get_issue_status_changelog(self, issue_id):
# Get the issue details with changelog
response_get_issue = self.get_issue(issue_id, expand="changelog")
status_change_history = []
for history in response_get_issue["changelog"]["histories"]:
for item in history["items"]:
# Check if the item is a status change
if item["field"] == "status":
status_change_history.append(
{"from": item["fromString"], "to": item["toString"], "date": history["created"]}
)

return status_change_history

def set_issue_status_by_transition_id(self, issue_key, transition_id):
"""
Setting status by transition_id
Expand Down
3 changes: 3 additions & 0 deletions docs/jira.rst
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,9 @@ Manage issues
# Get issue transitions
jira.get_issue_transitions(issue_key)
# Get issue status change log
jira.get_issue_status_changelog(issue_key)
# Get status ID from name
jira.get_status_id_from_name(status_name)
Expand Down
9 changes: 9 additions & 0 deletions examples/jira/jira_get_issue_status_changelog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from atlassian import Jira

jira_cloud = Jira(url="<url>", username="username", password="password")
jira_dc = Jira(url="url", token="<token>>")

# example use
jira_cloud.get_issue_status_changelog("TEST-1")
# example output:
# [{'from': 'Closed', 'to': 'In Progress', 'date': '2024-03-17T17:22:29.524-0500'}, {'from': 'In Progress', 'to': 'Closed', 'date': '2024-03-17T14:33:07.317-0500'}, {'from': 'In Progress', 'to': 'In Progress', 'date': '2024-03-16T09:25:52.033-0500'}, {'from': 'To Do', 'to': 'In Progress', 'date': '2024-03-14T19:25:02.511-0500'}]

0 comments on commit 413524b

Please sign in to comment.