jira = JIRA(jira_url, basic_auth=(username, password)) query = 'project = CL AND status != Done and status != Rejected' num = 0 while True: query_result = jira.search_issues(query,maxResults=500,startAt=num) num += 500 if num > query_result.total: break for issue in query_result: issue_timespent = 0 issue_count = 0 for link_id in issue.fields.issuelinks: inwardIssue = jira.issue_link(link_id).inwardIssue if inwardIssue.key.startswith('OP-'): issue_count += 1 time = jira.issue(inwardIssue.key).fields.timespent if time is not None: issue_timespent += time total_time = issue_timespent / 60 # $65 per hour for Ops total_money = round(total_time / 60 * 65, 2) if issue_timespent != 0: print("%s: %s minutes, %s linked tickets, %s dollars, %s" % ( issue.key, total_time, issue_count, total_money, issue.fields.summary))
query = 'project = Ops and createdDate >=-30d ORDER BY created DESC' start_date = date.today() - timedelta(days=30) print("Report for %s to %s" % (start_date, date.today())) print("Query is", query) issues = {} num = 0 while True: query_result = jira.search_issues(query,maxResults=500,startAt=num) num += 500 for issue in query_result: for link_id in issue.fields.issuelinks: outwardIssue = jira.issue_link(link_id).outwardIssue if outwardIssue.key.startswith('CL-'): time = jira.issue(issue.key).fields.timespent if outwardIssue.key not in issues: issue2 = jira.issue(outwardIssue) summary = issue2.fields.summary priority = issue2.fields.priority issuetype = issue2.fields.issuetype status = issue2.fields.status issues[outwardIssue.key] = { 'issuecount': 0, 'timespent': 0, 'summary': str(summary), 'issuetype': str(issuetype), 'priority': str(priority),