def make_issue(data, token=False): if not data['onto-repo'] in db.get_repo_info(): return "Can't create issue for unknown repo" + r.content, 500 if 'category-name' in data: data['categories'] = list( zip(data['category-name'], data['category-desc'])) if not token: token = ah.installationToken(db.get_installation(data['onto-repo'])) print(token) url = 'https://api.github.com/repos/{repo}/issues'.format( repo=data['onto-repo']) title = "" if data["subtype"] == "new": title = "Create: " + data['trait-name'] elif data["subtype"] == "update": title = "Update: " + data["update-search-selected"] elif data["subtype"] == "synonym": title = "Synonym for: " + data["synonym-search-selected"] issue = {'title': title, 'body': render_template('issue.md.j2', data=data)} print(url, issue) s = requests.session() s.headers.update({'Authorization': 'token {token}'.format(token=token)}) r = s.post(url, json=issue) if r.status_code == 201: print('Success') assign_and_label_issue(json.loads(r.content), data) return r.content, 201 else: print('Could not create Issue') print('Response:', r.content) return 'Could not create Issue\nResponse:' + str(r.content), 500
def dowload_obo(repo, zipball_url): print("Downloading release for {repo}:".format(repo=repo), zipball_url) token = ah.installationToken(db.get_installation(repo)) obopath = Path(db.get_repo_info(repo=repo)['master_obo_path']) download = zipball_url s = requests.session() s.headers.update({'Authorization': 'token {token}'.format(token=token)}) r = s.get(download) with zipfile.ZipFile(io.BytesIO(r.content)) as zp: obos = [ f for f in zp.namelist() if obopath == Path(f).relative_to(f.split(os.path.sep)[0]) ] obos.sort() if (len(obos) > 0): master_obo = obos[0] with io.TextIOWrapper(zp.open(master_obo), encoding="utf-8") as to_parse: db.parse_and_update(repo, to_parse)
def assign_and_label_issue(issue_obj, data): token = ah.installationToken(db.get_installation(data['onto-repo'])) url = issue_obj["url"] assignees = db.get_repo_info(repo=data['onto-repo'])["curators"] labels = [] if data["subtype"] == "new": labels.append("Creation Request") elif data["subtype"] == "update": labels.append("Update Request") elif data["subtype"] == "synonym": labels.append("Synonym Request") s = requests.session() s.headers.update({'Authorization': 'token {token}'.format(token=token)}) r = s.patch(url, json={"labels": labels, "assignees": assignees}) if r.status_code == 200: print('Success') else: print('Could not label Issue') print('Response:', r.content) return 'Could not create Label\nResponse:' + r.content, 500
def deploy(): install_id = request.args.get('installation_id') return render_template('deploy.html.j2', repos=db.get_repo_info(install_id=install_id))
def variables(): repo = request.args.get('repo') if not db.get_repo_info(repo=repo): return "Can't get variables for unknown repo " + repo, 500 variable_list = db.get_variables(repo) return jsonify(variable_list)
def root(): return render_template('form.html.j2', repos=db.get_repo_info())