adds more advanced database handling unsing sql alchemy
- moves app into package - adds sql alchemy equipment - moves templates into server package - add app.db sqlite file
This commit is contained in:
124
server/routes.py
Normal file
124
server/routes.py
Normal file
@ -0,0 +1,124 @@
|
||||
# Python standard libraries
|
||||
import json
|
||||
import os
|
||||
import sqlite3
|
||||
|
||||
# Third-party libraries
|
||||
import flask
|
||||
from flask import Flask, redirect, request, url_for
|
||||
from flask_login import (
|
||||
LoginManager,
|
||||
current_user,
|
||||
login_required,
|
||||
login_user,
|
||||
logout_user,
|
||||
)
|
||||
import requests
|
||||
|
||||
import server.googleHandler as google
|
||||
|
||||
from server import login_manager, app, db
|
||||
from server.models import User, Calendar
|
||||
|
||||
@app.route("/")
|
||||
def account():
|
||||
return flask.redirect('account')
|
||||
|
||||
@app.route("/account")
|
||||
def index():
|
||||
if current_user.is_authenticated:
|
||||
google.updateCalendars()
|
||||
return (flask.render_template('account.html',
|
||||
username = current_user.username, email = current_user.email, profile_img=current_user.profile_pic
|
||||
)
|
||||
)
|
||||
else:
|
||||
return flask.render_template('login.html')
|
||||
|
||||
@app.route("/calendar")
|
||||
@login_required
|
||||
def calendar():
|
||||
calendars = google.calendarsFromDb()
|
||||
return flask.render_template('calendar.html', calendars=calendars)
|
||||
|
||||
@app.route("/login/google")
|
||||
def login():
|
||||
authorization_url = google.login()
|
||||
|
||||
return flask.redirect(authorization_url)
|
||||
|
||||
@app.route("/login/google/callback")
|
||||
def callback():
|
||||
session = google.verifyResponse()
|
||||
|
||||
userinfo = session.get('https://www.googleapis.com/userinfo/v2/me').json()
|
||||
|
||||
# Create a user in your db with the information provided
|
||||
# by Google
|
||||
|
||||
# Doesn't exist? Add it to the database.
|
||||
if not User.query.get(userinfo['id']):
|
||||
newser = User(
|
||||
id=userinfo['id'],
|
||||
username=userinfo['name'],
|
||||
email=userinfo['email'],
|
||||
profile_pic=userinfo['picture'],
|
||||
password_hash=""
|
||||
)
|
||||
db.session.add(newser)
|
||||
db.session.commit()
|
||||
|
||||
user = User.query.get(userinfo['id'])
|
||||
|
||||
# Begin user session by logging the user in
|
||||
print("login:" + user.id)
|
||||
|
||||
login_user(user)
|
||||
|
||||
return flask.redirect(flask.url_for('index'))
|
||||
|
||||
@app.route("/logout")
|
||||
@login_required
|
||||
def logout():
|
||||
logout_user()
|
||||
return redirect(url_for("index"))
|
||||
|
||||
def credentials_to_dict(credentials):
|
||||
return {'token': credentials.token,
|
||||
'refresh_token': credentials.refresh_token,
|
||||
'token_uri': credentials.token_uri,
|
||||
'client_id': credentials.client_id,
|
||||
'client_secret': credentials.client_secret,
|
||||
'scopes': credentials.scopes}
|
||||
|
||||
|
||||
@app.route("/userinfo/<path:user>/calendarevents.json")
|
||||
def downloader(user):
|
||||
print(user)
|
||||
path = "/home/raphael/dev/website_ws/website/userinfo/" + user
|
||||
return flask.send_from_directory(path, "calendarevents.json")
|
||||
|
||||
# POST
|
||||
|
||||
@app.route('/calendar', methods = ['POST', 'DELETE'])
|
||||
@login_required
|
||||
def user():
|
||||
if request.method == 'POST':
|
||||
calName = request.json.get('calendar_id')
|
||||
color = request.json.get('color')
|
||||
toggle = request.json.get('toggle')
|
||||
|
||||
if color != None:
|
||||
Calendar.updateCalendar(current_user.id, calName, color=color)
|
||||
if toggle != None:
|
||||
Calendar.updateCalendar(current_user.id, calName, toggle=toggle)
|
||||
# toggle specific calendar of user
|
||||
elif request.method == 'DELETE':
|
||||
# do nothing
|
||||
return 'NONE'
|
||||
else:
|
||||
# POST Error 405
|
||||
print("405")
|
||||
|
||||
return 'OK'
|
||||
|
Reference in New Issue
Block a user