def githubCallback(): if 'code' not in request.args: return '', 500 # Fetch user from GitHub OAuth and store in session github = GitHub(GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET) access_token = github.get_token(request.args['code']) if access_token is None: flash('Could not authorize your request. Please try again.', 'danger') return '', 404 user = User.find_or_create_from_token(access_token) session['access_token'] = access_token session['user_id'] = user.id # Transfer tasks in session to user database if 'tasks' in session: for task in session['tasks']: user_id = session['user_id'] task_desc = task['description'] Task.add_task(task_desc, user_id) session.pop('tasks', None) return redirect(url_for('home.index'))
def star(): repo = request.form['full_name'] if not 'access_token' in session: flash('Please sign in with your GitHub account.', 'danger') return redirect(url_for('github.fetching')) github = GitHub(access_token=session['access_token']) github.delete('/user/starred/' + repo) return redirect(url_for('tutorial.fetching'))
def requesting(): search = request.args.get('query', '') if not 'access_token' in session: flash('You cannot post without an account.', 'danger') return render_template('index.html') github = GitHub(access_token=session['access_token']) results1 = github.get('/user/starred') results2 = github.get('/search/repositories', {'q': search}) results2 = results2.get('items', []) return render_template('tutorial/requesting.html', tutorial1=results1[:5], tutorial2=results2[:5], query=search)
def requesting(): search = request.args.get('query', '') if not 'access_token' in session: flash('This tutorial needs an authenticated user to make the request. Please sign in with your GitHub account.', 'danger') return render_template('tutorial/requesting.html') github = GitHub(access_token=session['access_token']) results1 = github.get('/user/starred') results2 = github.get('/search/repositories', { 'q': search } ) results2 = results2.get('items', []) return render_template('tutorial/requesting.html', tutorial1 = results1[:5], tutorial2 = results2[:5], query = search )
def githubCallback(): if 'code' not in request.args: return '', 500 # Fetch user from GitHub OAuth and store in session github = GitHub(GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET) access_token = github.get_token(request.args['code']) if access_token is None: flash('Could not authorize your request. Please try again.', 'danger') return '', 404 user = User.find_or_create_from_token(access_token) session['access_token'] = access_token session['user_id'] = user.id return redirect(url_for('home.index'))
def find_or_create_from_token(access_token): data = GitHub.get_user_from_token(access_token) """Find existing user or create new User instance""" instance = User.query.filter_by(username=data['login']).first() if not instance: instance = User(data['login'], data['avatar_url'], data['id']) db.session.add(instance) db.session.commit() return instance
def makePost(): form = PostForm() if form.validate_on_submit(): data = GitHub.get_user_from_token(session['access_token']) post = Post(Event=form.Event.data, Location=form.Location.data, Date=form.Date.data, Cap=form.Cap.data, Description=form.Description.data, author=db.session.query(User).get(data['id'])) db.session.add(post) db.session.commit() return redirect(url_for('.makePost')) # return render_template('tutorial/showPosts.html', post=post) posts = Post.query.order_by(Post.timestamp.desc()).all() return render_template('tutorial/postForm.html', form=form, posts=posts)
def githubLogin(): github = GitHub(GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET) return redirect(github.authorization_url(scope='public_repo'))