Esempio n. 1
0
def print_issue_list(org, name_filter=None):
    r = requests.get(repos_url % org)
    repos = r.json()
    if r.status_code > 299:
        raise Exception("Request failed with status code: %d. \n\n %r" % (
            r.status_code, r.headers))

    print ",".join(["repo_name", "issue", "labels", "hours", "milestone",]) 
    for repo in repos:
        if not name_filter or repo['name'] in name_filter:
            repo_name = repo['name']

            url = issues_url % repo['full_name']
            res = requests.get(url)
            issues = res.json()

            if 'link' in res.headers.keys():
                page = 1
                while "next" in res.headers['link']:
                    page += 1
                    paged_url = url + "&page=%d" % page
                    res = requests.get(paged_url)
                    issues.extend(res.json())

            milestones = []
            fields = ['title', 'description', ]
            for issue in issues:
                labels = ','.join([x['name'] for x in issue['labels']])
                m = issue['milestone']
                if m:
                    milestone = m['title']
                else:
                    milestone = ""
                hours = parse_hours_from_title(issue['title'])
                print ",".join([repo_name, issue['title'].replace(","," "), labels.replace(",","/"), str(hours), milestone,]) 
Esempio n. 2
0
def print_issue_list(org, name_filter=None):
    r = requests.get(repos_url % org)
    repos = r.json()
    if r.status_code > 299:
        raise Exception("Request failed with status code: %d. \n\n %r" %
                        (r.status_code, r.headers))

    print ",".join([
        "repo_name",
        "issue",
        "labels",
        "hours",
        "milestone",
    ])
    for repo in repos:
        if not name_filter or repo['name'] in name_filter:
            repo_name = repo['name']

            url = issues_url % repo['full_name']
            res = requests.get(url)
            issues = res.json()

            if 'link' in res.headers.keys():
                page = 1
                while "next" in res.headers['link']:
                    page += 1
                    paged_url = url + "&page=%d" % page
                    res = requests.get(paged_url)
                    issues.extend(res.json())

            milestones = []
            fields = [
                'title',
                'description',
            ]
            for issue in issues:
                labels = ','.join([x['name'] for x in issue['labels']])
                m = issue['milestone']
                if m:
                    milestone = m['title']
                else:
                    milestone = ""
                hours = parse_hours_from_title(issue['title'])
                print ",".join([
                    repo_name,
                    issue['title'].replace(",", " "),
                    labels.replace(",", "/"),
                    str(hours),
                    milestone,
                ])
Esempio n. 3
0
def get_projects_overview(org, name_filter=None):
    r = requests.get(repos_url % org)
    repos = r.json()
    if r.status_code > 299:
        raise Exception("Request failed with status code: %d. \n\n %r" %
                        (r.status_code, r.headers))

    projects = []
    for repo in repos:
        if not name_filter or repo['name'] in name_filter:
            project = {'name': repo['name']}
            sys.stderr.write("------ %s" % repo['name'])
            sys.stderr.write("\n")

            url = issues_url % repo['full_name']
            res = requests.get(url)
            issues = res.json()

            if 'link' in res.headers.keys():
                page = 1
                while "next" in res.headers['link']:
                    page += 1
                    paged_url = url + "&page=%d" % page
                    res = requests.get(paged_url)
                    issues.extend(res.json())

            milestones = []
            for issue in issues:
                m = issue['milestone']
                if m:
                    if m['title'] not in [x['name'] for x in milestones]:
                        milestone = {
                            'name': m['title'],
                            'due': m['due_on'],
                            'hours': {},
                            'tasks': {}
                        }
                        milestones.append(milestone)
                    else:
                        milestone = [
                            x for x in milestones if x['name'] == m['title']
                        ][0]
                else:
                    # Assign a fictional "Future Release" milestone
                    future_title = "Future Release"
                    if future_title not in [x['name'] for x in milestones]:
                        milestone = {
                            'name': future_title,
                            'due': 'Oct 31, 2020',
                            'hours': {},
                            'tasks': {}
                        }
                        milestones.append(milestone)
                    else:
                        milestone = [
                            x for x in milestones if x['name'] == future_title
                        ][0]

                assignee = issue['assignee']
                try:
                    assignee_login = assignee['login']
                except (KeyError, TypeError):
                    assignee_login = "******"

                hours = parse_hours_from_title(issue['title'])

                issue_desc = {
                    'title': issue['title'],
                    "url": issue['html_url'],
                    "number": issue['number']
                }

                if assignee_login in milestone['hours']:
                    milestone['tasks'][assignee_login].append(issue_desc)
                    milestone['hours'][assignee_login] += hours
                else:
                    milestone['tasks'][assignee_login] = [issue_desc]
                    milestone['hours'][assignee_login] = hours

            project['milestones'] = milestones
            projects.append(project)
    return projects
Esempio n. 4
0
def get_projects_overview(org, name_filter=None):
    r = requests.get(repos_url % org)
    repos = r.json()
    if r.status_code > 299:
        raise Exception("Request failed with status code: %d. \n\n %r" % (
            r.status_code, r.headers))

    projects = []
    for repo in repos:
        if not name_filter or repo['name'] in name_filter:
            project = {'name': repo['name']}
            sys.stderr.write("------ %s" % repo['name'])
            sys.stderr.write("\n")

            url = issues_url % repo['full_name']
            res = requests.get(url)
            issues = res.json()

            if 'link' in res.headers.keys():
                page = 1
                while "next" in res.headers['link']:
                    page += 1
                    paged_url = url + "&page=%d" % page
                    res = requests.get(paged_url)
                    issues.extend(res.json())

            milestones = []

            from dateutil.relativedelta import relativedelta
            the_distance_future = get_nice_date(str(datetime.today() + relativedelta(years=10)))
            future_title = "Future Release"

            for issue in issues:
                m = issue['milestone']
                if m and not m['due_on'] == None:
                    if m['title'] not in [x['name'] for x in milestones]:
                        milestone = {'name': m['title'],
                                     'due': get_nice_date(m['due_on']), 'hours': {}, 'tasks': {}}
                        milestones.append(milestone)
                    else:
                        milestone = [
                            x for x in milestones if x['name'] == m['title']][0]
                else:
                    continue
                    # Assign a fictional "Future Release" milestone
                    #if future_title not in [x['name'] for x in milestones]:
                    #    milestone = {'name': future_title,
                    #                 'due': the_distance_future, 'hours': {}, 'tasks': {}}
                    #    milestones.append(milestone)
                    #else:
                    #    milestone = [
                    #        x for x in milestones if x['name'] == future_title][0]

                assignee = issue['assignee']
                try:
                    assignee_login = assignee['login']
                except (KeyError, TypeError):
                    assignee_login = "******"

                hours = parse_hours_from_title(issue['title'])

                labels =  [(x['color'], x['name']) for x in issue['labels']]
                issue_desc = {
                    'title': issue['title'],
                    'hours': hours,
                    'labels': labels,
                    "url": issue['html_url'],
                    "number": issue['number']
                }

                if assignee_login in milestone['hours']:
                    milestone['tasks'][assignee_login].append(issue_desc)
                    milestone['hours'][assignee_login] += hours
                else:
                    milestone['tasks'][assignee_login] = [issue_desc]
                    milestone['hours'][assignee_login] = hours

            project['milestones'] = milestones
            projects.append(project)
    return projects
Esempio n. 5
0
def get_projects_overview(org, name_filter=None):
    r = requests.get(repos_url % org)
    repos = r.json()
    if r.status_code > 299:
        raise Exception("Request failed with status code: %d. \n\n %r" % (
            r.status_code, r.headers))

    projects = []
    for repo in repos:
        if not name_filter or repo['name'] in name_filter:
            project = {'name': repo['name']}
            sys.stderr.write("------ %s" % repo['name'])
            sys.stderr.write("\n")

            url = issues_url % repo['full_name']
            res = requests.get(url)
            issues = res.json()

            if 'link' in res.headers.keys():
                page = 1
                while "next" in res.headers['link']:
                    page += 1
                    paged_url = url + "&page=%d" % page
                    res = requests.get(paged_url)
                    issues.extend(res.json())

            milestones = []
            for issue in issues:
                m = issue['milestone']
                if m:
                    if m['title'] not in [x['name'] for x in milestones]:
                        milestone = {'name': m['title'],
                                     'due': m['due_on'], 'hours': {}, 'tasks': {}}
                        milestones.append(milestone)
                    else:
                        milestone = [
                            x for x in milestones if x['name'] == m['title']][0]
                else:
                    # Assign a fictional "Future Release" milestone 
                    future_title = "Future Release"
                    if future_title not in [x['name'] for x in milestones]:
                        milestone = {'name': future_title,
                                     'due': 'Oct 31, 2020', 'hours': {}, 'tasks': {}}
                        milestones.append(milestone)
                    else:
                        milestone = [
                            x for x in milestones if x['name'] == future_title][0]

                assignee = issue['assignee']
                try:
                    assignee_login = assignee['login']
                except (KeyError, TypeError):
                    assignee_login = "******"

                hours = parse_hours_from_title(issue['title'])

                issue_desc = {'title': issue['title'], "url":
                              issue['html_url'], "number": issue['number']}

                if assignee_login in milestone['hours']:
                    milestone['tasks'][assignee_login].append(issue_desc)
                    milestone['hours'][assignee_login] += hours
                else:
                    milestone['tasks'][assignee_login] = [issue_desc]
                    milestone['hours'][assignee_login] = hours

            project['milestones'] = milestones
            projects.append(project)
    return projects