# find comments with estimations out of pre-planning # zisco 2021-09-30 19:50 from types import ClassMethodDescriptorType from jira import JIRA, Issue, Comment, exceptions from datetime import date import re import csv import xlsxwriter import logging logging.basicConfig(filename='sprint efforts.log', filemode='a', format='%(asctime)s - %(levelname)s: %(message)s', level=logging.INFO, encoding='utf-8') host = "https://jira.wien.gv.at/" pat = "OTAyMTM3MjY0MjE0Ovz6bu0ti1TlEdSegmmiWiJ2wGeD" #sprint = 2 row = 0; col = 0 workbook = xlsxwriter.Workbook(f'efforts as of preplanning {date.today()}.xlsx') worksheet = workbook.add_worksheet('efforts') cell_format = workbook.add_format() cell_format.set_bold() worksheet.write(row, col, 'Story' , cell_format) worksheet.write(row, col + 1, 'Sub-Task' , cell_format) worksheet.write(row, col + 2, 'Summary' , cell_format) worksheet.write(row, col + 3, 'timeoriginalestimate', cell_format) worksheet.write(row, col + 4, 'SP' , cell_format) worksheet.write(row, col + 5, 'PT' , cell_format) row += 1 headers = JIRA.DEFAULT_OPTIONS["headers"].copy() headers["Authorization"] = f"Bearer {pat}" jira_server = JIRA(server=host, options={"headers": headers}) # use filter or single issue issues_Jql = jira_server.search_issues('filter=25827') #, expand='changelog') #issues_Jql = jira_server.search_issues('key in (wrgwr-2838, wrgwr-2839)', expand='changelog') #issues_Jql = jira_server.search_issues('key in (DKARB-140)') #, expand='changelog') #issues_Jql = jira_server.search_issues('labels in (Refinement11012022) AND type not in (Bug) AND status not in (Done) and ("Story Points" is EMPTY or "Story Points" = 0)') #, expand='changelog') logging.info(f'Sum effort stored in issue-comments of pre-planning of {date.today()}') xsp = lambda s: s or 0 issue: Issue for issue in issues_Jql: single_issue = jira_server.issue(issue.key) logging.info(f'OriginalTimeEstimate: {single_issue.fields.timeoriginalestimate}') for subtask in issue.fields.subtasks: ssubtask = jira_server.issue(subtask.key) # this is essential to access 'timeoriginalestimate' worksheet.write(row, col, issue.key) worksheet.write(row, col + 1, ssubtask.key) worksheet.write(row, col + 2, ssubtask.fields.summary) worksheet.write(row, col + 3, ssubtask.fields.timeoriginalestimate) worksheet.write(row, col + 4, f'=D{row + 1}/28800') worksheet.write(row, col + 5, f'=E{row + 1}/0.5') row += 1 worksheet.autofit() workbook.close()