Generates new google signin users in database and generates json for todays events
- imports caltojson from calendarwatch_server - gets the user info from google api - gets user information and compares them to the user database - returns to login page and shows user information as well as 'api test' button - api test button uses 'calendarwatch_server' to get calendars and calculate todays events
This commit is contained in:
parent
76c711a58b
commit
f86f15069a
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,7 +1,7 @@
|
|||||||
# General stuff
|
# General stuff
|
||||||
.swp
|
.swp
|
||||||
.cache
|
.cache
|
||||||
|
calendarevents.json
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.py[cod]
|
*.py[cod]
|
||||||
@ -144,4 +144,4 @@ cython_debug/
|
|||||||
|
|
||||||
# static files generated from Django application using `collectstatic`
|
# static files generated from Django application using `collectstatic`
|
||||||
media
|
media
|
||||||
static
|
static
|
||||||
|
24
login/app.py
24
login/app.py
@ -20,6 +20,7 @@ import requests
|
|||||||
from db import init_db_command
|
from db import init_db_command
|
||||||
from user import User
|
from user import User
|
||||||
|
|
||||||
|
import caltojson
|
||||||
|
|
||||||
import google.oauth2.credentials
|
import google.oauth2.credentials
|
||||||
import google_auth_oauthlib.flow
|
import google_auth_oauthlib.flow
|
||||||
@ -40,10 +41,6 @@ GOOGLE_CLIENT_SECRET = "Hu_YWmKsVKUcLwyeINYzdKfZ"
|
|||||||
GOOGLE_DISCOVERY_URL = (
|
GOOGLE_DISCOVERY_URL = (
|
||||||
"https://accounts.google.com/.well-known/openid-configuration"
|
"https://accounts.google.com/.well-known/openid-configuration"
|
||||||
)
|
)
|
||||||
|
|
||||||
API_SERVICE_NAME = 'calendar'
|
|
||||||
API_VERSION = 'v3'
|
|
||||||
|
|
||||||
# Flask app setup
|
# Flask app setup
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.secret_key = os.environ.get("SECRET_KEY") or os.urandom(24)
|
app.secret_key = os.environ.get("SECRET_KEY") or os.urandom(24)
|
||||||
@ -95,8 +92,7 @@ def test_api_request():
|
|||||||
credentials = google.oauth2.credentials.Credentials(
|
credentials = google.oauth2.credentials.Credentials(
|
||||||
**flask.session['credentials'])
|
**flask.session['credentials'])
|
||||||
|
|
||||||
service = googleapiclient.discovery.build(
|
todaysCal = caltojson.generateJsonFromCalendarEntries(credentials)
|
||||||
API_SERVICE_NAME, API_VERSION, credentials=credentials)
|
|
||||||
|
|
||||||
|
|
||||||
# Save credentials back to session in case access token was refreshed.
|
# Save credentials back to session in case access token was refreshed.
|
||||||
@ -104,7 +100,7 @@ def test_api_request():
|
|||||||
# credentials in a persistent database instead.
|
# credentials in a persistent database instead.
|
||||||
flask.session['credentials'] = credentials_to_dict(credentials)
|
flask.session['credentials'] = credentials_to_dict(credentials)
|
||||||
|
|
||||||
return flask.jsonify("{}")
|
return flask.jsonify(todaysCal)
|
||||||
|
|
||||||
@app.route("/login")
|
@app.route("/login")
|
||||||
def login():
|
def login():
|
||||||
@ -151,8 +147,6 @@ def login():
|
|||||||
|
|
||||||
@app.route("/login/callback")
|
@app.route("/login/callback")
|
||||||
def callback():
|
def callback():
|
||||||
print("in callback")
|
|
||||||
|
|
||||||
# Specify the state when creating the flow in the callback so that it can
|
# Specify the state when creating the flow in the callback so that it can
|
||||||
# verified in the authorization server response.
|
# verified in the authorization server response.
|
||||||
state = flask.session['state']
|
state = flask.session['state']
|
||||||
@ -172,17 +166,21 @@ def callback():
|
|||||||
flask.session['credentials'] = credentials_to_dict(credentials)
|
flask.session['credentials'] = credentials_to_dict(credentials)
|
||||||
|
|
||||||
session = flow.authorized_session()
|
session = flow.authorized_session()
|
||||||
print(session.get('https://www.googleapis.com/userinfo/v2/me').json())
|
|
||||||
|
userinfo = session.get('https://www.googleapis.com/userinfo/v2/me').json()
|
||||||
|
|
||||||
# Create a user in your db with the information provided
|
# Create a user in your db with the information provided
|
||||||
# by Google
|
# by Google
|
||||||
user = User(
|
user = User(
|
||||||
id_=unique_id, name=users_name, email=users_email, profile_pic=picture
|
id_=userinfo['id'],
|
||||||
|
name=userinfo['name'],
|
||||||
|
email=userinfo['email'],
|
||||||
|
profile_pic=userinfo['picture']
|
||||||
)
|
)
|
||||||
|
|
||||||
# Doesn't exist? Add it to the database.
|
# Doesn't exist? Add it to the database.
|
||||||
if not User.get(unique_id):
|
if not User.get(user.id):
|
||||||
User.create(unique_id, users_name, users_email, picture)
|
User.create(user.id, user.name, user.email, user.profile_pic)
|
||||||
|
|
||||||
# Begin user session by logging the user in
|
# Begin user session by logging the user in
|
||||||
login_user(user)
|
login_user(user)
|
||||||
|
Loading…
Reference in New Issue
Block a user