release_date = datetime_m.datetime.strptime(sys.argv[2], '%Y-%m-%d') else: versions = client.getVersions(auth, project_name) release_date = None for v in versions: if v.name == version: release_date = jira.to_datetime(*v.releaseDate) break if not release_date: print "Can not find version", version exit(1) print "Release date:", release_date issues = client.getIssuesFromJqlSearch(auth, 'project = %s and fixVersion = %s' % (project_name, version), jira.int_arg(1000)) print "Worklogs done after sprint is finished:" stats = {} for issue in issues: worklogs = client.getWorklogs(auth, issue.key) for l in worklogs: if l.author not in stats: stats[l.author] = 0 wl_time = jira.to_datetime(*l.created) if wl_time > release_date: print "Issue: ", issue print "Worklog: ", l if wl_time <= release_date or len(sys.argv) < 3: stats[l.author] += l.timeSpentInSeconds
class IssueStat(object): def __init__(self, issue): self.issue = issue self.time_spent = 0 def log_work(self, worklog): self.time_spent += worklog.timeSpentInSeconds def issue_num(self): return int(self.issue.key.split("-")[1]) issues_hierarchy = build_tasks_hierarchy() issues = client.getIssuesFromJqlSearch( auth, "project = %s and fixVersion = %s" % (project_name, version), jira.int_arg(1000) ) stats = {} for issue in issues: top_level_issue = get_top_level_issue(issue) if not top_level_issue.key in stats: s = IssueStat(top_level_issue) stats[top_level_issue.key] = s else: s = stats[top_level_issue.key] worklogs = client.getWorklogs(auth, issue.key) for l in worklogs: s.log_work(l)