def repo_detail(pk): repo = Repo.query.filter_by(id=pk).first() if not repo: return '404' if request.method == 'POST': run_at = (datetime.datetime.now() + datetime.timedelta(seconds=1)) kwargs = {'repo': repo, 'github_token': session.get('github_token')} with app.test_request_context(): scheduler.add_date_job(process_requirements, run_at, kwargs=kwargs) flash('Sent to hell', 'info') return redirect(url_for('repo_detail', pk=repo.id)) context = { 'repo': repo, 'packages': repo.packages.all(), } return render_template('repo_detail.html', **context)
def repo_detail(pk): repo = Repo.query.filter_by(id=pk).first() if not repo: return '404' if request.method == 'POST': run_at = (datetime.datetime.now() + datetime.timedelta(seconds=1)) kwargs = { 'repo': repo, 'github_token': session.get('github_token') } with app.test_request_context(): scheduler.add_date_job(process_requirements, run_at, kwargs=kwargs) flash('Sent to hell', 'info') return redirect(url_for('repo_detail', pk=repo.id)) context = { 'repo': repo, 'packages': repo.packages.all(), } return render_template('repo_detail.html', **context)
def process_requirements(repo, github_token): with app.test_request_context(): # TODO: hacky, needs good comment session['github_token'] = github_token token = github_token[0] user = User.query.filter_by(github_access_token=token).first() # TODO: log this event if not user: return False requirement_file = '/repos/{0}/{1}/contents/requirements.txt' content = github.get(requirement_file.format(repo.owner, repo.name)) # not found so good bye if content._resp.getcode() == 404: r = Repo.query.get(repo.id) r.log = 'requirements.txt not found.' db.session.commit() return False content = content.data['content'] content = base64.b64decode(content) reqs = parse(content) for x in reqs: kwargs = { 'repo_id': repo.id, 'name': x.project_name, 'version': x.specs[0][1], 'version_pypi': '', } p = Package(**kwargs) db.session.add(p) db.session.commit() return True