Skip to content
Snippets Groups Projects
Commit a13a88a5 authored by aebopp's avatar aebopp
Browse files

points submission

parent 0cb5f24b
No related branches found
No related tags found
No related merge requests found
<!DOCTYPE html>
<html>
<body>
<p>
Your submission has been sent to {{leader}}
</p>
<form action="/accounts/confirmSubmission/" method="post" enctype="multipart/form-data">
<input type="submit" name="return" value="Return to Homepage"/>
</form>
</body>
</html>
\ No newline at end of file
......@@ -7,14 +7,9 @@
<body>
<h1>
<a href="/">/ </a>
|
<a href="/u/{{username}}/">{{username}}</a>
<a href="/">Back to Homepage</a>
</h1>
<p>{{username}}</p>
<p>
{{username}}
</p>
<form action="/accounts/delete/" method="post" enctype="multipart/form-data">
<input type="submit" name="delete" value="confirm delete account"/>
</form>
......
......@@ -21,7 +21,7 @@
<a href="/accounts/mask/">
<img src=/images/tutor.png alt="mask">
</a>
<a href="/accounts/mask/">
<a href="/accounts/submitPoints/">
<img src=/images/submit.png alt="mask">
</a>
......
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="/css/style.css">
<h1 style="text-align:center">Submit Points</h1>
<p>{{username}}</p>
<p>{{org}}</p>
<p>Hours: {{hours}}</p>
<a href="/accounts/index/">Back to Homepage</a>
</head>
<form action="/accounts/submitPoints/" method="post" enctype="multipart/form-data">
<p>
<label for="service">Select the type of service:</label>
<select name="service" id="service">
<option value="mask">Mask-Making</option>
<option value="blood">Donating Blood</option>
<option value="tutor">Tutoring</option>
<option value="food">Donating Food</option>
</select>
</p>
<p>
Photo for proof of service
<input type="file" name="file">
</p>
<p>
<input type="submit" name="update" value="submit" />
</p>
</form>
</html>
\ No newline at end of file
No preview for this file type
......@@ -2,6 +2,8 @@ import hashlib
import uuid
import os
import flask
import shutil
import tempfile
from flask import render_template
import servicePoints
APP = flask.Flask(__name__)
......@@ -68,10 +70,14 @@ def create():
if cursor.fetchone() is None:
return flask.redirect(flask.url_for('orgNotFound'))
# If a user tries to create an account with an empty string as the
# password, abort(400)
if password == '':
flask.abort(400)
if len(str(flask.request.form['password'])) is 0 or len(str(flask.request.form['fullname'])) is 0:
return flask.redirect(flask.url_for('incompleteForm', prev="create"))
if len(str(flask.request.form['orgName'])) is 0 or len(str(flask.request.form['email'])) is 0:
return flask.redirect(flask.url_for('incompleteForm', prev="create"))
if len(str(flask.request.form['username'])) is 0:
return flask.redirect(flask.url_for('incompleteForm', prev="create"))
flask.session['username'] = flask.request.form['username']
flask.session['fullname'] = flask.request.form['fullname']
......@@ -247,3 +253,77 @@ def images(filename):
return flask.send_from_directory(
servicePoints.app.config['IMAGES_FOLDER'], filename, as_attachment=True)
return flask.redirect(flask.url_for('login'))
@servicePoints.app.route('/accounts/submitPoints/', methods=['GET', 'POST'])
def submitPoints():
if flask.request.method == 'POST':
dummy, temp_filename = tempfile.mkstemp()
file = flask.request.files["file"]
serviceType = flask.request.form["service"]
file.save(temp_filename)
# Compute filename
hash_txt = sha256sum(temp_filename)
dummy, suffix = os.path.splitext(file.filename)
hash_filename_basename = hash_txt + suffix
hash_filename = os.path.join(
servicePoints.app.config["IMAGES_FOLDER"],
hash_filename_basename
)
# Move temp file to permanent location
shutil.move(temp_filename, hash_filename)
cursor = servicePoints.model.get_db()
username = flask.session["username"]
studentOrgCur = cursor.execute('SELECT orgName FROM users WHERE '
'username =:who',
{"who": username})
results = studentOrgCur.fetchone()
orgName = results["orgName"]
studentOrgLeader = cursor.execute('SELECT username FROM orgs WHERE '
'orgName =:who',
{"who": orgName})
results = studentOrgLeader.fetchone()
leader = results["username"]
cursor.execute('INSERT INTO requests(member, leader, service, filename) VALUES '
'(:one,:two,:three,:four)', {"one": username, "two": leader, "three": serviceType, "four": hash_filename_basename})
return flask.redirect(flask.url_for('confirmSubmission'))
username = flask.session["username"]
cursor = servicePoints.model.get_db()
studentOrgCur = cursor.execute('SELECT orgName, hours FROM users WHERE '
'username =:who',
{"who": username})
results = studentOrgCur.fetchone()
context = {'username': username, 'org': results["orgName"], 'hours': results["hours"]}
return render_template('submitPoints.html', **context)
@servicePoints.app.route('/accounts/confirmSubmission/', methods=['GET', 'POST'])
def confirmSubmission():
if flask.request.method == 'POST':
return flask.redirect(flask.url_for('index'))
username = flask.session["username"]
cursor = servicePoints.model.get_db()
studentOrgCur = cursor.execute('SELECT orgName FROM users WHERE '
'username =:who',
{"who": username})
results = studentOrgCur.fetchone()
orgName = results["orgName"]
studentOrgLeader = cursor.execute('SELECT username FROM orgs WHERE '
'orgName =:who',
{"who": orgName})
results = studentOrgLeader.fetchone()
leader = results["username"]
studentOrgLeaderFull = cursor.execute('SELECT fullname FROM users WHERE '
'username =:who',
{"who": leader})
results = studentOrgLeaderFull.fetchone()
context = {"leader": results["fullname"]}
return render_template('confirmSubmission.html', **context)
def sha256sum(filename):
"""Return sha256 hash of file content, similar to UNIX sha256sum."""
content = open(filename, 'rb').read()
sha256_obj = hashlib.sha256(content)
return sha256_obj.hexdigest()
\ No newline at end of file
......@@ -14,4 +14,13 @@ CREATE TABLE orgs(
username VARCHAR(20) NOT NULL,
orgName VARCHAR(40) NOT NULL,
PRIMARY KEY(orgName)
);
CREATE TABLE requests(
postid INTEGER NOT NULL,
member VARCHAR(20) NOT NULL,
leader VARCHAR(40) NOT NULL,
service VARCHAR(40) NOT NULL,
filename VARCHAR(64) NOT NULL,
PRIMARY KEY(postid)
);
\ No newline at end of file
var/images/c0cf17efda2368530bb66b4e2fb68456865edbbdaa67c99783de324711384437.jpg

7.63 KiB

No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment