From 5186c2e54c985be49cb03eba17d9459a1bc7edf2 Mon Sep 17 00:00:00 2001
From: Micik2
Date: Wed, 19 Dec 2018 01:54:56 +0100
Subject: [PATCH] WU-63
---
app.py | 194 ++++++++++++++++++++++++++++++++++++++-
templates/resources.html | 93 +++++++++++++++++++
templates/userHome.html | 31 +------
uploads/test.txt | 1 +
uploads/test_2.txt | 1 +
5 files changed, 290 insertions(+), 30 deletions(-)
create mode 100644 templates/resources.html
create mode 100644 uploads/test.txt
create mode 100644 uploads/test_2.txt
diff --git a/app.py b/app.py
index 6492b6a..062a0e5 100644
--- a/app.py
+++ b/app.py
@@ -1,4 +1,4 @@
-from flask import Flask, render_template, request, json, session, redirect, Blueprint, url_for
+from flask import Flask, render_template, request, json, session, redirect, Blueprint, url_for, flash, Response, send_from_directory
from flask_wtf import Form
from wtforms.fields import StringField, SubmitField
from wtforms.validators import Required
@@ -13,8 +13,12 @@ from flask_socketio import emit, join_room, leave_room
import smtplib
from oauth2client import file, client, tools
from googleapiclient.discovery import build
+from googleapiclient.http import MediaFileUpload
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials
+import os
+from werkzeug.utils import secure_filename
+from camera import VideoCamera
@@ -34,7 +38,14 @@ socketio.init_app(app)
#app.config['MYSQL_DATABASE_HOST'] = 'localhost'
#mysql = MySQL()
#mysql.init_app(app)
+
+UPLOAD_FOLDER = './uploads'
+ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
+app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
+def allowed_file(filename):
+ return '.' in filename and \
+ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/groupChat', methods=['GET', 'POST'])
def indexChat():
@@ -99,7 +110,10 @@ class LoginForm(Form):
faces_list = []
testing_face = 0
service = None
-SCOPES = "https://www.googleapis.com/auth/calendar.events"
+drive_service = None
+CALENDAR_SCOPES = "https://www.googleapis.com/auth/calendar.events"
+DRIVE_SCOPES = "https://www.googleapis.com/auth/drive"
+
@socketio.on('message')
def handleMessage(msg):
@@ -111,9 +125,15 @@ def main():
store = file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
- flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
+ flow = client.flow_from_clientsecrets('credentials.json', CALENDAR_SCOPES)
creds = tools.run_flow(flow, store)
service = build('calendar', 'v3', http=creds.authorize(Http()))
+
+ if not creds or creds.invalid:
+ flow = client.flow_from_clientsecrets('credentials.json', DRIVE_SCOPES)
+ creds = tools.run_flow(flow, store)
+ drive_service = build('drive', 'v3', http=creds.authorize(Http()))
+
return render_template('index.html', info="Witaj!")
@app.route("/indexENG")
@@ -636,13 +656,181 @@ def addEvent():
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('/streaming')
+def streaming():
+ return render_template('streaming.html')
+
@app.route('/toAddEvent')
def toAddEvent():
if session.get('user'):
return render_template('addEvent.html')
else:
return render_template('error.html',error = 'Nieautoryzowany dostęp!')
+
+def gen(camera):
+ while True:
+ frame = camera.get_frame()
+ yield (b'--frame\r\n'
+ b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
+
+@app.route('/stream')
+def stream():
+ return Response(gen(VideoCamera()),
+ mimetype='multipart/x-mixed-replace; boundary=frame')
+
+def make_tree(path=app.config['UPLOAD_FOLDER']):
+ tree = dict(name=path, children=[])
+ try: lst = os.listdir(path)
+ except OSError:
+ pass #ignore errors
+ else:
+ for name in lst:
+ fn = os.path.join(path, name)
+ if os.path.isdir(fn):
+ tree['children'].append(make_tree(fn))
+ else:
+ tree['children'].append(dict(name=fn))
+ return tree
+
+@app.route('/uploads/')
+def download_file(filename):
+ return send_from_directory(app.config['UPLOAD_FOLDER'],
+ filename, as_attachment=True)
+@app.route('/toResources')
+def toResources():
+ if session.get('user'):
+ files = make_tree()
+ # list_of_files = {}
+ # path = app.config['UPLOAD_FOLDER']
+ # for filename in os.listdir(path):
+ # print (filename)
+ # print ()
+ # list_of_files[filename] = filename.file.name
+ print (files)
+ # items_keys = []
+ # for key, value in files.items():
+ # if key == "children":
+ # for k, v in value[0].items():
+ # items_keys.append(v)
+ # items_values = []
+ # for item in items_keys:
+ # items_values.append(item.indexOf("\\"))
+
+ return render_template('resources.html', items=files)
+ else:
+ return render_template('error.html',error = 'Nieautoryzowany dostęp!')
+
+@app.route('/resources', methods=['POST'])
+def resources():
+ if request.method == 'POST':
+ # check if the post request has the file part
+ #if 'file' not in request.files:
+ # flash('No file part')
+ # return redirect(request.url)
+ file = request.files['fileToUpload']
+ #file = request.form["fileToUpload"]
+ filename = secure_filename(file.filename)
+ file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
+ return render_template('userHome.html', user=session['user'].split('@')[0], calendar_src="https://calendar.google.com/calendar/embed?src=" + session.get("user"))
+
+@app.route('/showResources')
+def showResources():
+ path = app.config['UPLOAD_FOLDER']
+ for filename in os.listdir(path):
+ list_of_files[filename] = filename
+ #return render_template("")
+
+
+ #input_file = UPLOAD_FOLDER + filename
+ #uploads = []
+ #uploads.append(input_file)
+ #return render_template('resources.html', resources = uploads)
+ # if user does not select file, browser also
+ # submit an empty part without filename
+ #if file.filename == '':
+ # flash('No selected file')
+ # return redirect(request.url)
+
+ #if file and allowed_file(file.filename):
+ #filename = secure_filename(file.filename)
+ #filename = app.config['UPLOAD_FOLDER'] + file.filename
+ #file.save(filename) #os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
+ #return redirect(url_for('uploaded_file', filename=filename))
+ '''if request.method == 'GET':
+ uploads = app.config['UPLOAD_FOLDER'] #os.path.join(current_app.root_path, app.config['UPLOAD_FOLDER'])
+ return render_template('resources.html', resources = os.getcwd() + os.listdir(uploads))
+
+
+ Upload new File
+ Upload new File
+
+
+''' '''
+@app.route('/addResources', methods=['GET', 'POST'])
+def addResources():
+ if request.method == 'POST':
+ # check if the post request has the file part
+ #if 'file' not in request.files:
+ # flash('No file part')
+ # return redirect(request.url)
+ file = request.files['fileToUpload']
+ file_metadata = {'name': file}
+ path = request.files['fileToUpload'].file.name
+ print (os.path.basename(file.filename))
+ media = MediaFileUpload(path)
+ file = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
+ results = drive_service.files().list(pageSize=10, fields="nextPageToken, files(id, name)").execute()
+ items = results.get('files', [])
+ return render_template('allResources.html', resources = items)
+ # file = request.files['fileToUpload']
+ # file = request.form["fileToUpload"]
+ # filename = secure_filename(file.filename)
+ # file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
+ # input_file = UPLOAD_FOLDER + filename
+ # uploads = []
+ # uploads.append(input_file)
+ # return render_template('addResources.html', resources = uploads)
+
+@app.route('/allResources')
+def allResources():
+ results = drive_service.files().list(pageSize=10, fields="nextPageToken, files(id, name)").execute()
+ items = results.get('files', [])
+ return render_template('allResources.html', resources = items)
+
+@app.route('/toAllResources')
+def toAllResources():
+ if session.get('user'):
+ uploads = app.config['UPLOAD_FOLDER'] #os.path.join(current_app.root_path, app.config['UPLOAD_FOLDER'])
+ path = os.getcwd()
+ return render_template('allResources.html', resources = os.path.join(path, uploads))
+ #return render_template('resources.html')
+ else:
+ return render_template('error.html',error = 'Nieautoryzowany dostęp!')
+
+@app.route('/toAddResources')
+def toAddResources():
+ if session.get('user'):
+ uploads = app.config['UPLOAD_FOLDER'] #os.path.join(current_app.root_path, app.config['UPLOAD_FOLDER'])
+ path = os.getcwd()
+ return render_template('addResources.html', resources = os.path.join(path, uploads))
+ #return render_template('resources.html')
+ else:
+ return render_template('error.html',error = 'Nieautoryzowany dostęp!')
+
+@app.route('/downloadResource')
+def downloadResource():
+ if session.get('user'):
+ file_id = request.files["files"]
+ return render_template('addResources.html', resources = os.path.join(path, uploads))
+ #return render_template('resources.html')
+ else:
+ return render_template('error.html',error = 'Nieautoryzowany dostęp!')
+'''
+
if __name__ == "__main__":
#app.run(host='0.0.0.0')
# Port: 5000
diff --git a/templates/resources.html b/templates/resources.html
new file mode 100644
index 0000000..ebee1d6
--- /dev/null
+++ b/templates/resources.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+ Python Flask App
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Wszystkie materiały uczelni
+
+
Materiały do pobrania:
+
+
+ {% for key, value in items.items() %}
+ {% if key == "children" %}
+ {% for val in value %}
+ {% for k, v in val.items() %}
+
+
+
+ {% endfor %}
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Wrzuć materiał
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/userHome.html b/templates/userHome.html
index b3b466b..89df96e 100644
--- a/templates/userHome.html
+++ b/templates/userHome.html
@@ -139,37 +139,14 @@ body {font-family: Verdana, sans-serif;}
Dodaj wydarzenie
- Czat grupowy
+ Czat grupowy
+
+ Podejrzyj materiały
+ Uruchom testowy stream
-
-
- Czas
- Jaka aktywność
-
-
- 8:00
- brak
-
-
- 9:00
- brak
-
-
- 10:00
- brak
-
-
- 11:00
- brak
-
-
- 12:00
- brak
-
-
diff --git a/uploads/test.txt b/uploads/test.txt
new file mode 100644
index 0000000..490db94
--- /dev/null
+++ b/uploads/test.txt
@@ -0,0 +1 @@
+test uploadu
\ No newline at end of file
diff --git a/uploads/test_2.txt b/uploads/test_2.txt
new file mode 100644
index 0000000..5e8709f
--- /dev/null
+++ b/uploads/test_2.txt
@@ -0,0 +1 @@
+test downloadu
\ No newline at end of file