From 2d4857b73687257520fafe3e7109bf603505921f Mon Sep 17 00:00:00 2001 From: xtilda Date: Thu, 12 Jan 2017 01:59:17 +1100 Subject: [PATCH 1/2] Working on file upload to DB --- backend/view.py | 9 ++++----- static/uploads/questions/34.jpg | Bin 0 -> 41280 bytes templates/view_question.html | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 static/uploads/questions/34.jpg diff --git a/backend/view.py b/backend/view.py index 5ca955a..f86cf36 100644 --- a/backend/view.py +++ b/backend/view.py @@ -6,10 +6,9 @@ def view_question_handler(request, question_id): - try: + #try: post = db.Post.find(question_id) - post_info = {'user' : post.user_id, 'description' : post.description, 'question' : post.title, 'date' : post.date, 'file' : post.files, 'signed_in':authenticate_cookie(request)} - print(post.title) + + post_info = {'user' : post.user_id, 'description' : post.description, 'question' : post.title, 'date' : post.date, 'file' : post.files[0][0], 'signed_in':authenticate_cookie(request)} + #print(post.files[0][0]) request.write(render('view_question.html', post_info)) - except: - request.write('Invalid Id') diff --git a/static/uploads/questions/34.jpg b/static/uploads/questions/34.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2472865e4694ea2eddea2d5413e7ab416e1f38a8 GIT binary patch literal 41280 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 Y(F~

View the Question!

{{ question }}

- Mountains + {{ photo_id }}

{{ description }}

@@ -17,4 +17,4 @@

{{ description }}

- \ No newline at end of file + From 89d165a975329c2e9d043be6d2447a77f91f3e94 Mon Sep 17 00:00:00 2001 From: xtilda Date: Thu, 12 Jan 2017 02:05:12 +1100 Subject: [PATCH 2/2] More fixes to picture upload --- backend/ask.py | 26 +++++++++++--------------- backend/view.py | 4 ++++ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/backend/ask.py b/backend/ask.py index c138640..b2266ba 100644 --- a/backend/ask.py +++ b/backend/ask.py @@ -1,9 +1,10 @@ from auth import requires_login from backend.common import * from template_engine import render +from os import path from db import db_api as db -from requests import get from auth import requires_login, authenticate_cookie +import re @requires_login def ask_handler(request): @@ -13,27 +14,22 @@ def ask_handler(request): @requires_login def ask_handler_post(request): photo_files = request.get_file("fileupload") + filename, content_type, data = photo_files title = request.get_field("question") description = request.get_field("description") - url = request.get_field("url") if photo_files != (None, None, None): - if photo_files[1].startswith('image/'): + if content_type.startswith('image/'): user_id = request.get_secure_cookie("current_user") - '''photo_files from database needs to be discussed regarding single/multiple photo uploads''' - db.Post.create(user_id, description, title, get_current_time(), [photo_files[2]]) + photo_file_ext_regex = re.search(r'\.[a-zA-Z]+$', filename) + photo_file_ext = photo_file_ext_regex.group(0) + photo_dir = path.join('uploads', 'questions', db.Post.get_next_post_id() + photo_file_ext) + post = db.Post.create(user_id, description, title, photo_dir) + with open(path.join('static', photo_dir), 'wb') as f: + f.write(data) request.write("Your image was uploaded! name=%s"%(photo_files[0])) - request.redirect('/') request.redirect('/view/' + str(post.id)) else: request.write("uploaded file type not supported") else: - user_id = request.get_secure_cookie("current_user") - '''photo_files from database needs to be discussed regarding single/multiple photo uploads''' - db.Post.create(user_id, description, title, get_current_time(), [photo_files[2]]) - request.redirect('/') - - # TODO Actually handle any errors of any kind??? - - # TODO Put some handling of the edge case where neither photo nor URL is entered - # request.write('We couldn\'t find an uploaded file.') + request.write('We couldn\'t find an uploaded file.') diff --git a/backend/view.py b/backend/view.py index f86cf36..33b9b98 100644 --- a/backend/view.py +++ b/backend/view.py @@ -9,6 +9,10 @@ def view_question_handler(request, question_id): #try: post = db.Post.find(question_id) + # with open('out.txt', 'w') as w: + # w.write(str(post.files[0])) post_info = {'user' : post.user_id, 'description' : post.description, 'question' : post.title, 'date' : post.date, 'file' : post.files[0][0], 'signed_in':authenticate_cookie(request)} #print(post.files[0][0]) request.write(render('view_question.html', post_info)) + #except(ValueError): + #request.write('Invalid Id')