In [42]:
import requests
import sys
from itertools import groupby

JIRA_URL = "https://jira.chemaxon.com/rest/api/2"

In [35]:
jql = """project = IJC
            AND type in (Bug, Improvement)
            AND updated > 2014-08-11
            AND status IN ("Testing Complete", "Testing Required", Closed)
            ORDER BY updated DESC"""

params = { "jql": jql, "fields": "priority,issuetype", "expand": "changelog" }
resp = requests.get(JIRA_URL + "/search", auth=('fsedlak', '???'), params=params)

In [36]:
if resp.status_code != 200:
    print >> sys.stderr, "Failed request (%s): %s" % (resp, resp.text)

In [15]:
issues = resp.json()["issues"]

In [59]:
TESTING_REQUIRED = 10002
TESTING_COMPLETE = 10001
CLOSED = 6

def put_to_testing_required(item):
    return (item["field"] == u'status' and int(item["to"]) == TESTING_REQUIRED)

def put_backwards(item):
    return (item["field"] == 'status' and int(item["to"]) not in (TESTING_REQUIRED, TESTING_COMPLETE, CLOSED))

def issue_put_to_test_by(issue):
    updates = issue["changelog"]["histories"]
    
    advanced = None
    for update in updates:
        for item in update["items"]:
            if put_to_testing_required(item):
                advanced = {k : update[k] for k in ("author", "created")}
                
                if issue["key"] == "IJC-7132":
                    print "advanced %s" % issue["key"]
            elif put_backwards(item):
                if issue["key"] == "IJC-7132":
                    print "backed %s: %s" % (issue["key"], item["to"])
                advanced = None

    return (issue["key"], advanced)

advancers = filter(lambda item: item[1] is not None, map(issue_put_to_test_by, issues))


backed IJC-7132: 3
advanced IJC-7132

In [71]:
#print advancers

def author_name(item):
    return item[1]["author"]["name"]

users = {author_name(i): i[1]["author"] for i in advancers}

In [74]:
d = {}
for user, updates in groupby(sorted(advancers, key=author_name), key=author_name):
    d[user] = [(u[0], u[1]["created"]) for u in updates]

In [74]:


In [ ]: