diff --git a/app.py b/app.py index d7cd7a4..6492b6a 100644 --- a/app.py +++ b/app.py @@ -11,6 +11,11 @@ from time import sleep from flask_socketio import SocketIO from flask_socketio import emit, join_room, leave_room import smtplib +from oauth2client import file, client, tools +from googleapiclient.discovery import build +from httplib2 import Http +from oauth2client.service_account import ServiceAccountCredentials + main = Blueprint('main', __name__) @@ -37,7 +42,7 @@ def indexChat(): """Login form to enter a room.""" form = LoginForm() if form.validate_on_submit(): - session['name'] = session["user"] #form.name.data + session['name'] = session["user"].split('@')[0] #form.name.data session['room'] = "Czat grupowy" #form.room.data return redirect(url_for('.chat')) elif request.method == 'GET': @@ -93,6 +98,8 @@ class LoginForm(Form): faces_list = [] testing_face = 0 +service = None +SCOPES = "https://www.googleapis.com/auth/calendar.events" @socketio.on('message') def handleMessage(msg): @@ -101,6 +108,12 @@ def handleMessage(msg): @app.route("/") def main(): + store = file.Storage('token.json') + creds = store.get() + if not creds or creds.invalid: + flow = client.flow_from_clientsecrets('credentials.json', SCOPES) + creds = tools.run_flow(flow, store) + service = build('calendar', 'v3', http=creds.authorize(Http())) return render_template('index.html', info="Witaj!") @app.route("/indexENG") @@ -199,8 +212,11 @@ def validateLogin(): server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.ehlo() server.login(gmail_username, gmail_password) - session['user'] = gmail_username.split('@')[0] - return render_template('userHome.html', user=gmail_username.split('@')[0]) + if "@gmail.com" not in gmail_username: + session['user'] = gmail_username + "@gmail.com" #.split('@')[0] + else: + session["user"] = gmail_username + return render_template('userHome.html', user=session['user'].split('@')[0], calendar_src="https://calendar.google.com/calendar/embed?src=" + session.get("user")) except: return render_template('error.html',error = 'Zły email lub hasło!') @@ -249,7 +265,7 @@ def validateLoginENG(): server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.ehlo() server.login(gmail_username, gmail_password) - session['user'] = gmail_username.split('@')[0] + session['user'] = gmail_username#.split('@')[0] return render_template('userHomeENG.html', user=gmail_username.split('@')[0]) except: return render_template('errorENG.html',error = 'Wrong email or password!') @@ -287,14 +303,14 @@ def validateLoginENG(): @app.route('/userHome') def userHome(): if session.get('user'): - return render_template('userHome.html', user=session['user']) + return render_template('userHome.html', user=session['user'].split('@')[0], calendar_src="https://calendar.google.com/calendar/embed?src=" + session.get("user")) else: return render_template('error.html',error = 'Nieautoryzowany dostęp!') @app.route('/userHomeENG') def userHomeENG(): if session.get('user'): - return render_template('userHomeENG.html', user=session['user']) + return render_template('userHomeENG.html', user=session['user'].split('@')[0]) else: return render_template('errorENG.html',error = 'Unauthorized access!') @@ -497,7 +513,7 @@ def signInWithFace(): # When everything is done, release the capture video_capture.release() cv2.destroyAllWindows() - return render_template('userHome.html', info="Zapisano twarz", user=session.get('user')) + return render_template('userHome.html', info="Zapisano twarz", user=session.get('user').split('@')[0], calendar_src="https://calendar.google.com/calendar/embed?src=" + session.get("user")) @app.route('/signInWithFaceENG') def signInWithFaceENG(): @@ -563,10 +579,72 @@ def signInWithFaceENG(): # When everything is done, release the capture video_capture.release() cv2.destroyAllWindows() - return render_template('userHomeENG.html', info="A face has been saved", user=session.get('user')) + return render_template('userHomeENG.html', info="A face has been saved", user=session.get('user').split('@')[0]) + +@app.route('/addEvent', methods=['POST']) +def addEvent(): + summary = request.form["inputSummary"] + location = request.form["inputLocation"] + description = request.form["inputDescription"] + description = request.form["inputDescription"] + description = request.form["inputDescription"] + start = request.form["inputStart"] + end = request.form["inputEnd"] + attendees = request.form["inputAttendees"].split(',') + + processed_attendees = [] + for attendee in attendees: + attendee = attendee.strip() + if "@gmail.com" not in attendee: + attendee += "@gmail.com" + processed_attendees.append({'email': attendee}) + + event = { 'summary': summary, + 'location': location, + 'description': description, + 'start': { + 'dateTime': start + ":00+01:00", + 'timeZone': 'Europe/Warsaw' + }, + 'end': { + 'dateTime': end + ":00+01:00", + 'timeZone': 'Europe/Warsaw' + }, + 'attendees': processed_attendees + } + + #credentials = ServiceAccountCredentials.from_json_keyfile_name( + # 'credentials.json', + # scopes="https://www.googleapis.com/auth/calendar.events") + #http = httplib2.Http() + #http = credentials.authorize(http) + #service = build("calendar", "v3", http=http) + + #store = file.Storage('token.json') + #creds = store.get() + #if not creds or creds.invalid: + # flow = client.flow_from_clientsecrets('credentials.json', SCOPES) + # creds = tools.run_flow(flow, store) + #service = build('calendar', 'v3', http=creds.authorize(Http())) + + store = file.Storage('token.json') + creds = store.get() + if not creds or creds.invalid: + flow = client.flow_from_clientsecrets('credentials.json', "https://www.googleapis.com/auth/calendar.events") + creds = tools.run_flow(flow, store) + service = build('calendar', 'v3', http=creds.authorize(Http())) + service.events().insert(calendarId='primary', body=event).execute() + return render_template('userHome.html', user=session['user'].split('@')[0], calendar_src="https://calendar.google.com/calendar/embed?src=" + session.get("user")) + +@app.route('/toAddEvent') +def toAddEvent(): + if session.get('user'): + return render_template('addEvent.html') + else: + return render_template('error.html',error = 'Nieautoryzowany dostęp!') if __name__ == "__main__": #app.run(host='0.0.0.0') # Port: 5000 #socketio.run(app, debug=True) - socketio.run(app, host="0.0.0.0", ssl_context=("cert.pem", "key.pem")) + socketio.run(app, host="0.0.0.0")#, ssl_context=("cert.pem", "key.pem")) diff --git a/credentials.json b/credentials.json new file mode 100644 index 0000000..91e9d61 --- /dev/null +++ b/credentials.json @@ -0,0 +1 @@ +{"installed":{"client_id":"566304981572-9hr3g1k77etvjovjr4qbordioblum93q.apps.googleusercontent.com","project_id":"my-project-1544556068455","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://www.googleapis.com/oauth2/v3/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"4ym9H4hS-IURN5BhxytXzb6J","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file diff --git a/templates/addEvent.html b/templates/addEvent.html new file mode 100644 index 0000000..8f33e15 --- /dev/null +++ b/templates/addEvent.html @@ -0,0 +1,78 @@ + + + + +
+ +- Moje zajęcia - Test - Wyniki + + + + Dodaj wydarzenie Czat grupowy diff --git a/token.json b/token.json new file mode 100644 index 0000000..ff34178 --- /dev/null +++ b/token.json @@ -0,0 +1 @@ +{"access_token": "ya29.GltvBjJUQJa7byeuf8v3JCkjwtevLdEkDEAxeXytM542WScD1GrhdCU7MI7lgx74qV3b_Q4S5D0nAK8PQnqEC9yiUsYt16-vXHZ0oyZd2I6jlQNtmr0yma8UkSpn", "client_id": "566304981572-9hr3g1k77etvjovjr4qbordioblum93q.apps.googleusercontent.com", "client_secret": "4ym9H4hS-IURN5BhxytXzb6J", "refresh_token": "1/me1ZoXCKxkQuOW00ZUc0pNsFCQ9bjVnpY7SuFsetBv7DiONcLVMEwgcbw830I542", "token_expiry": "2018-12-11T20:44:33Z", "token_uri": "https://www.googleapis.com/oauth2/v3/token", "user_agent": null, "revoke_uri": "https://oauth2.googleapis.com/revoke", "id_token": null, "id_token_jwt": null, "token_response": {"access_token": "ya29.GltvBjJUQJa7byeuf8v3JCkjwtevLdEkDEAxeXytM542WScD1GrhdCU7MI7lgx74qV3b_Q4S5D0nAK8PQnqEC9yiUsYt16-vXHZ0oyZd2I6jlQNtmr0yma8UkSpn", "expires_in": 3600, "refresh_token": "1/me1ZoXCKxkQuOW00ZUc0pNsFCQ9bjVnpY7SuFsetBv7DiONcLVMEwgcbw830I542", "scope": "https://www.googleapis.com/auth/calendar.events", "token_type": "Bearer"}, "scopes": ["https://www.googleapis.com/auth/calendar.events"], "token_info_uri": "https://oauth2.googleapis.com/tokeninfo", "invalid": false, "_class": "OAuth2Credentials", "_module": "oauth2client.client"} \ No newline at end of file