From 34eda46c87820897977c8007c4dd94fa3f5c19f8 Mon Sep 17 00:00:00 2001 From: SecretlyTaco Date: Wed, 28 Feb 2018 10:02:05 +0000 Subject: [PATCH] Added functional file upload form, as well as a /files/ view to get files --- Tweeder.py | 8 +++++++- backend/files.py | 10 ++++++++-- templates/settings.html | 4 +++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Tweeder.py b/Tweeder.py index 08d810c..27f7579 100644 --- a/Tweeder.py +++ b/Tweeder.py @@ -127,6 +127,8 @@ def user_settings(): else: return redirect(url_for('login')) elif request.method == "POST": + print(request.files) + print(request.form) if 'username' not in session.keys(): return redirect(url_for('login')) profile = { @@ -134,6 +136,9 @@ def user_settings(): 'gender': request.form['gender'], 'location': request.form['location'] } + if 'profile-pic' in request.files.keys(): + profile_pic = files.upload_file(request.files['profile-pic']) + profile['profile-pic'] = profile_pic accounts.set_theme(session['username'].lower(), request.form['theme']) username = session['username'] accounts.update_profile(username, profile) @@ -220,10 +225,11 @@ def unlike_post(post_id): @app.route("/files/", methods=['GET']) def get_file(oid): fl = files.get_file(oid) - if not fl: return abort(404) + if not fl: return "File not found" response = make_response(fl.read()) response.mimetype = fl.content_type return response + if __name__ == '__main__': app.run(host="127.0.0.1", debug=True) diff --git a/backend/files.py b/backend/files.py index 219ee5a..1caa360 100644 --- a/backend/files.py +++ b/backend/files.py @@ -1,7 +1,8 @@ from pymongo import MongoClient from bson.objectid import ObjectId -import gridfs from gridfs.errors import NoFile +from werkzeug.utils import secure_filename +import gridfs client = MongoClient() db = client.tweeder @@ -11,7 +12,12 @@ accounts_db = db.accounts def get_file(oid): try: - files_db.get(ObjectId(oid)) + return files_db.get(ObjectId(oid)) except NoFile: return False + +def upload_file(file_to_upload): + filename = secure_filename(file_to_upload.filename) + obj = files_db.put(file_to_upload, content_type=file_to_upload.content_type, filename=filename) + return obj diff --git a/templates/settings.html b/templates/settings.html index da4ac77..275509d 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -3,8 +3,10 @@ {% block content %}

Settings for {{ logged_in }}


-
+
+

Profile Picture

+

Profile Fields