Trying to match the total number of issues with the front end through the api
Here is the code that we have tried to and we are getting close. Without the api key and user id it won't be exact numbers but if someone could look and see if they find any issues in our code. `from atlassian import Jira from collections import defaultdict
def get_key_name(row): return row['fields']['summary'] def issue_type(row): return i['fields']['issuetype']['name']
jira = Jira( url="https://zeroeyes.atlassian.net", username= uid, password=jira_api_key, cloud=True ) jql = 'project=RDEV AND (sprint in openSprints())' jira_board = jira.get_agile_board(28) start = 0 offset = 50 final_issues = set() task_types = defaultdict(int) while True: issues = jira.get_issues_for_board(28, jql = jql, start = start, limit = offset, expand=None, fields = None) if len(issues["issues"]) == 0: break print(f'Received {len(issues["issues"])} issues') for i in issues['issues']: if 'parent' in i['fields']: parent_summary = i['fields']['parent']['key'] # parent_summary = get_key_name(i['fields']['parent']) if parent_summary not in final_issues: task_types[issue_type(i['fields']['parent'])] += 1 final_issues.add(parent_summary) # task_summary = get_key_name(i) task_summary = i['key'] if task_summary not in final_issues: task_types[issue_type(i)] += 1 final_issues.add(task_summary) # # i['fields'] = {k: v for k,v in i['fields'].items() if 'customfield' not in k} # else: # final_issues.add(i['fields']['summary']) if 'subtasks' in i['fields'] and len(i['fields']['subtasks']) > 0: for subtask in i['fields']['subtasks']: # summary = get_key_name(subtask) summary = subtask['key'] if summary not in final_issues: final_issues.add(summary) task_types[issue_type(subtask)] += 1 # summaries = [get_key_name(i) for i in i['fields']['subtasks']] # [final_issues.add(i) for i in summaries] if 'epic' in i['fields'] and i['fields']['epic'] is not None and len(i['fields']['epic']) > 0: epic = i['fields']['epic'] summary = epic['key'] if summary not in final_issues: final_issues.add(summary) task_types['Epic'] += 1 start += offset print(len(final_issues)) print(json.dumps(task_types, indent = 4))`
Please use a verbatim python block for your code.
@Spacetown
from atlassian import Jira
from collections import defaultdict
def get_key_name(row):
return row['fields']['summary']
def issue_type(row):
return i['fields']['issuetype']['name']
jira = Jira(
url="https://zeroeyes.atlassian.net/",
username= uid,
password=jira_api_key,
cloud=True
)
jql = 'project=RDEV AND (sprint in openSprints())'
jira_board = jira.get_agile_board(28)
start = 0
offset = 50
final_issues = set()
task_types = defaultdict(int)
while True:
issues = jira.get_issues_for_board(28, jql = jql, start = start, limit = offset, expand=None, fields = None)
if len(issues["issues"]) == 0:
break
print(f'Received {len(issues["issues"])} issues')
for i in issues['issues']:
if 'parent' in i['fields']:
parent_summary = i['fields']['parent']['key']
# parent_summary = get_key_name(i['fields']['parent'])
if parent_summary not in final_issues:
task_types[issue_type(i['fields']['parent'])] += 1
final_issues.add(parent_summary)
# task_summary = get_key_name(i)
task_summary = i['key']
if task_summary not in final_issues:
task_types[issue_type(i)] += 1
final_issues.add(task_summary)
# # i['fields'] = {k: v for k,v in i['fields'].items() if 'customfield' not in k}
# else:
# final_issues.add(i['fields']['summary'])
if 'subtasks' in i['fields'] and len(i['fields']['subtasks']) > 0:
for subtask in i['fields']['subtasks']:
# summary = get_key_name(subtask)
summary = subtask['key']
if summary not in final_issues:
final_issues.add(summary)
task_types[issue_type(subtask)] += 1
# summaries = [get_key_name(i) for i in i['fields']['subtasks']]
# [final_issues.add(i) for i in summaries]
if 'epic' in i['fields'] and i['fields']['epic'] is not None and len(i['fields']['epic']) > 0:
epic = i['fields']['epic']
summary = epic['key']
if summary not in final_issues:
final_issues.add(summary)
task_types['Epic'] += 1
start += offset
print(len(final_issues))
print(json.dumps(task_types, indent = 4))
The complete indention is missing. Impossible to give help here.
jira = Jira(
url="https://zeroeyes.atlassian.net",
username= uid,
password=jira_api_key,
cloud=True
)
jql = 'project=RDEV AND (sprint in openSprints())'
jira_board = jira.get_agile_board(28)
start = 0
offset = 50
final_issues = set()
task_types = defaultdict(int)
while True:
issues = jira.get_issues_for_board(28, jql = jql, start = start, limit = offset, expand=None, fields = None)
if len(issues["issues"]) == 0:
break
print(f'Received {len(issues["issues"])} issues')
for i in issues['issues']:
if 'parent' in i['fields']:
parent_summary = i['fields']['parent']['key']
# parent_summary = get_key_name(i['fields']['parent'])
if parent_summary not in final_issues:
task_types[issue_type(i['fields']['parent'])] += 1
final_issues.add(parent_summary)
# task_summary = get_key_name(i)
task_summary = i['key']
if task_summary not in final_issues:
task_types[issue_type(i)] += 1
final_issues.add(task_summary)
# # i['fields'] = {k: v for k,v in i['fields'].items() if 'customfield' not in k}
# else:
# final_issues.add(i['fields']['summary'])
if 'subtasks' in i['fields'] and len(i['fields']['subtasks']) > 0:
for subtask in i['fields']['subtasks']:
# summary = get_key_name(subtask)
summary = subtask['key']
if summary not in final_issues:
final_issues.add(summary)
task_types[issue_type(subtask)] += 1
# summaries = [get_key_name(i) for i in i['fields']['subtasks']]
# [final_issues.add(i) for i in summaries]
if 'epic' in i['fields'] and i['fields']['epic'] is not None and len(i['fields']['epic']) > 0:
epic = i['fields']['epic']
summary = epic['key']
if summary not in final_issues:
final_issues.add(summary)
task_types['Epic'] += 1
start += offset
print(len(final_issues))
print(json.dumps(task_types, indent = 4))
@Spacetown
Sorry, where do you have an issue? The following block is in principal ok, I don't know what you want to achieve with the logic but the total number can be retrieved by:
total_number = 0
while True:
issues = jira.get_issues_for_board(28, jql = jql, start = start, limit = offset, expand=None, fields = None)
if len(issues["issues"]) == 0:
break
print(f'Received {len(issues["issues"])} issues')
total_number += len(issues["issues"])
print(f"total_number = {total_number}")
BTW: That's a verbatim python block.