def _row_tuple(self, pull_idx): pull = self._pull_request(pull_idx) jira_id = self._jira_id(pull_idx) jira_issue = self._jira_issue(jira_id) return (jira_id, mstr(pull), jira_issue.get_trimmed_summary(), daydiff(Report.now, jira_issue.get_created()), daydiff(Report.now, pull.created_at()), daydiff(Report.now, jira_issue.get_updated()), daydiff(Report.now, pull.updated_at()), jira_issue.get_status(), pull.user())
def main(): parser = OptionParser(usage="usage: %prog [options]") parser.add_option("-g", "--github-user", dest="gituser", type="string", help="github user, if not supplied no auth is used", metavar="USER") (options, args) = parser.parse_args() jrepo = JiraRepo("https://issues.apache.org/jira/rest/api/2") github = GitHub(options) openPullRequests = github.openPulls("apache","storm") stormJiraNumber = re.compile("STORM-[0-9]+") openJiras = jrepo.openJiras("STORM") jira2Pulls = {} pullWithoutJira = [] pullWithBadJira = [] for pull in openPullRequests: found = stormJiraNumber.search(pull.title()) if found: jiraNum = found.group(0) if not (jiraNum in openJiras): pullWithBadJira.append(pull) else: if jira2Pulls.get(jiraNum) == None: jira2Pulls[jiraNum] = [] jira2Pulls[jiraNum].append(pull) else: pullWithoutJira.append(pull); now = datetime.utcnow() print "Pull requests that need a JIRA:" print "Pull URL\tPull Title\tPull Age\tPull Update Age" for pull in pullWithoutJira: print ("%s\t%s\t%s\t%s"%(pull.html_url(), pull.title(), daydiff(now, pull.created_at()), daydiff(now, pull.updated_at()))).encode("UTF-8") print "\nPull with bad or closed JIRA:" print "Pull URL\tPull Title\tPull Age\tPull Update Age" for pull in pullWithBadJira: print ("%s\t%s\t%s\t%s"%(pull.html_url(), pull.title(), daydiff(now, pull.created_at()), daydiff(now, pull.updated_at()))).encode("UTF-8") print "\nOpen JIRA to Pull Requests and Possible Votes, vote detection is very approximate:" print "JIRA\tPull Requests\tJira Summary\tJIRA Age\tPull Age\tJIRA Update Age\tPull Update Age" print "\tComment Vote\tComment Author\tPull URL\tComment Age" for key, value in jira2Pulls.items(): print ("%s\t%s\t%s\t%s\t%s\t%s\t%s"%(key, mstr(value), openJiras[key].getSummary(), daydiff(now, openJiras[key].getCreated()), daydiff(now, value[0].created_at()), daydiff(now, openJiras[key].getUpdated()), daydiff(now, value[0].updated_at()))).encode("UTF-8") for comment in openJiras[key].getComments(): #print comment.raw() if comment.hasVote(): print (("\t%s\t%s\t%s\t%s")%(comment.getVote(), comment.getAuthor(), comment.getPull(), daydiff(now, comment.getCreated()))).encode("UTF-8")
def main(): parser = OptionParser(usage="usage: %prog [options]") parser.add_option("-g", "--github-user", dest="gituser", type="string", help="github user, if not supplied no auth is used", metavar="USER") (options, args) = parser.parse_args() jrepo = JiraRepo("https://issues.apache.org/jira/rest/api/2") github = GitHub(options) openPullRequests = github.openPulls("apache","incubator-storm") stormJiraNumber = re.compile("STORM-[0-9]+") openJiras = jrepo.openJiras("STORM") jira2Pulls = {} pullWithoutJira = [] pullWithBadJira = [] for pull in openPullRequests: found = stormJiraNumber.search(pull.title()) if found: jiraNum = found.group(0) if not (jiraNum in openJiras): pullWithBadJira.append(pull) else: if jira2Pulls.get(jiraNum) == None: jira2Pulls[jiraNum] = [] jira2Pulls[jiraNum].append(pull) else: pullWithoutJira.append(pull); now = datetime.utcnow() print "Pull requests that need a JIRA:" print "Pull URL\tPull Title\tPull Age\tPull Update Age" for pull in pullWithoutJira: print ("%s\t%s\t%s\t%s"%(pull.html_url(), pull.title(), daydiff(now, pull.created_at()), daydiff(now, pull.updated_at()))).encode("UTF-8") print "\nPull with bad or closed JIRA:" print "Pull URL\tPull Title\tPull Age\tPull Update Age" for pull in pullWithBadJira: print ("%s\t%s\t%s\t%s"%(pull.html_url(), pull.title(), daydiff(now, pull.created_at()), daydiff(now, pull.updated_at()))).encode("UTF-8") print "\nOpen JIRA to Pull Requests and Possible Votes, vote detection is very approximate:" print "JIRA\tPull Requests\tJira Summary\tJIRA Age\tPull Age\tJIRA Update Age\tPull Update Age" print "\tComment Vote\tComment Author\tPull URL\tComment Age" for key, value in jira2Pulls.items(): print ("%s\t%s\t%s\t%s\t%s\t%s\t%s"%(key, mstr(value), openJiras[key].getSummary(), daydiff(now, openJiras[key].getCreated()), daydiff(now, value[0].created_at()), daydiff(now, openJiras[key].getUpdated()), daydiff(now, value[0].updated_at()))).encode("UTF-8") for comment in openJiras[key].getComments(): #print comment.raw() if comment.hasVote(): print (("\t%s\t%s\t%s\t%s")%(comment.getVote(), comment.getAuthor(), comment.getPull(), daydiff(now, comment.getCreated()))).encode("UTF-8")