Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import jira.client
- from jira.client import JIRA
- from jira import JIRA
- import pandas as pd
- import numpy as np
- options = {'server':'your server URL here'}
- jira = JIRA(options, basic_auth=('your user name here','your password here'))
- #extracting number of issues loop because of Jira limitation.
- block_size=100
- block_num=0
- allissues = []
- while True:
- start_idx = block_num*block_size
- issues = jira.search_issues('project=your project name here', start_idx, block_size)
- if len(issues) == 0:
- break
- block_num += 1
- for issue in issues:
- allissues.append(issue)
- #Create a dataframe and assign issues one by one.
- issuesdf=pd.DataFrame()
- for issue in allissues:
- issue = jira.issue(issue.key, expand='changelog')
- changelog = issue.changelog
- for history in changelog.histories:
- for item in history.items:
- if item.field == 'status':
- if "Blocked" in item.toString or "Blocked" in item.fromString:
- d={
- 'Key' : issue.key,
- 'Assignee': issue.fields.assignee,
- 'Components': issue.fields.components,
- 'Summary': issue.fields.summary,
- 'Issuetype': issue.fields.issuetype.name,
- 'Priority': issue.fields.priority.name,
- 'Current Status': issue.fields.status.name,
- 'Date': history.created,
- 'Transition': item.fromString+' - '+item.toString,
- }
- issuesdf=issuesdf.append(d,ignore_index=True)
- issuesdf['Date']=pd.to_datetime(issuesdf['Date'])
- issuesdf['Date']=issuesdf['Date'].dt.normalize()
- blockeddf = issuesdf[issuesdf['Transition'].str.match('In Progress - Blocked')]
- blockeddf['Counter']=blockeddf.groupby((blockeddf['Key'] != blockeddf['Key'].shift(1)).cumsum()).cumcount()+1
- resolveddf = issuesdf[issuesdf['Transition'].str.match('Blocked - ')]
- resolveddf['Counter']=resolveddf.groupby((resolveddf['Key'] != resolveddf['Key'].shift(1)).cumsum()).cumcount()+1
- newdf = pd.merge(blockeddf,resolveddf,how='left', on=['Key','Counter'])
- newdf['Number of Days'] = newdf['Date_y'] - newdf['Date_x']
- newdf['Number of Days'] = newdf['Number of Days']/np.timedelta64(1,'D')
- newdf.to_csv(r'your csv path here')
- print(issuesdf)
- issuesdf.to_csv(r'your csv path here')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement