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

org management changes

parent 754e8c17
No related branches found
No related tags found
No related merge requests found
Instructions on running the ServicePoints website:
1) clone the git repo
2) navigate into the servicePoints folder on terminal
3) run "source env/bin/activate"
4) run "bin/servicePointsRun"
5) in a browser, navigate to "http://localhost:8000/"
6) you should be able to user servicePoints from here
If anything goes wrong in your testing process
or you have any questions reach out at aebopp@umich.edu
\ No newline at end of file
......@@ -6,14 +6,19 @@
Want to register an organization with your new account account?
<a href="/accounts/createOrg/">Register as organization leader</a>
</p>
<p>
Once you select an organization to join, a request will be sent for approval.
Until approved, your organization will appear as 'None.'
</p>
<form action="/accounts/create/" method="post" enctype="multipart/form-data">
<p>
<label for="orgName">Select an Organization:</label>
<select name="orgName" id="orgName">
<option value="NONE">Choose Later</option>
{% for org in orgs %}
{% if org.orgName != 'NONE' %}
<option value="{{org.orgName}}">{{org.orgName}}</option>
{%endif%}
{% endfor %}
</select>
</p>
......
......@@ -16,6 +16,26 @@
<input type="submit" name="delete" value="delete your student org"/>
</form>
</p>
<p>
Pending Member Requests:
</p>
{% for member in pending %}
<p>
<form action="/accounts/manageOrg/" method="post" enctype="multipart/form-data">
Name: {{member.fullname}}
<br>Username: {{member.username}}
<br>Email: {{member.email}}
<br>Pre-Existing Hours: {{member.hours}}
<input type="hidden" name="user" value="{{member.username}}"/>
<input type="submit" name="add" value="Add Member"/>
<input type="submit" name="deny" value="Deny Member"/>
</form>
</p>
{% endfor %}
<p>
Current Members:
</p>
{% for member in members %}
{% if username == member.username %}
{{member.fullname}} ({{member.username}})
......
......@@ -5,23 +5,68 @@
<title>Profile</title>
<a href="/">Home</a>
<a href="/accounts/logout/" style="float: right;">logout</a>
</head>
<body>
<h1 style="text-align:center">Profile</h1>
<a href="/accounts/logout/">logout</a>
<a href="/accounts/delete/">delete</a>
<p>
Full Name: {{fullname}}
</p>
{% if pending == 0 %}
<p>
Student Organization: {{org}}
</p>
{%endif%}
{% if pending == 1 %}
<p>
Student Organization: Your request is pending. Requesting to join another organization while your request is pending will cancel your original request.
</p>
{%endif%}
</p>
<p>
Email: {{email}}
</p>
<a href="/accounts/delete/">delete account</a>
{% if leader == 0 %}
<form action="/accounts/profile/" method="post">
<p>
<label for="orgName">Select an Organization:</label>
<select name="orgName" id="orgName">
{% for org in orgs %}
{% if org.orgName != 'NONE' %}
<option value="{{org.orgName}}">{{org.orgName}}</option>
{%endif%}
{% endfor %}
</select>
</p>
<input type="submit" name="signup" value="Update Org" />
</p>
</form>
<form action="/accounts/profile/" method="post">
<p>
<input type="submit" name="noOrg" value="Leave Organization Without Joining Another" />
</p>
</form>
{% endif %}
<form action="/accounts/profile/" method="post">
<p>
Change your full name:
<input type="text" name="fullname" />
<input type="submit" name="fullname" value="Change Full Name" />
</p>
</form>
<form action="/accounts/profile/" method="post">
<p>
Change your email:
<input type="text" name="email" />
<input type="submit" name="email" value="Change Email" />
</p>
</form>
</body>
......
No preview for this file type
......@@ -66,6 +66,13 @@ def create():
if cursor.fetchone() is not None or name == "pending":
return flask.redirect(flask.url_for('duplicateUsername', prev='create'))
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['username'])) is 0 or len(str(flask.request.form['email'])) is 0:
return flask.redirect(flask.url_for('incompleteForm', prev="create"))
cursor.execute('SELECT * FROM orgs WHERE orgName=?', to_join)
if cursor.fetchone() is None:
if orgName == "NONE":
......@@ -75,12 +82,6 @@ def create():
else:
return flask.redirect(flask.url_for('orgNotFound'))
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['username'])) is 0 or len(str(flask.request.form['email'])) 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']
flask.session['orgName'] = flask.request.form['orgName']
......@@ -89,11 +90,15 @@ def create():
pw = hash_pass(flask.session['password'])
data = (flask.session['username'], flask.session['fullname'],
flask.session['email'], flask.session['orgName'],
flask.session['email'], 'NONE',
pw, 0)
pendingData = (flask.session['username'], flask.session['fullname'],
flask.session['email'], flask.session['orgName'], 0)
cur = servicePoints.model.get_db()
cur.execute("INSERT INTO users(username, fullname, email, orgName, "
"password, hours) VALUES (?, ?, ?, ?, ?, ?)", data)
cur.execute("INSERT INTO pendingOrgs(username, fullname, email, orgName, "
"hours) VALUES (?, ?, ?, ?, ?)", pendingData)
return flask.redirect(flask.url_for('index'))
......@@ -343,28 +348,82 @@ def food():
def profile():
if flask.request.method == 'POST':
orgName = str(flask.request.form['orgName'])
username = str(flask.session['username'])
cur = servicePoints.model.get_db()
curOrg = cur.execute('SELECT orgName FROM users WHERE username = ?',
(username,))
org = curOrg.fetchone()
cur.execute('UPDATE users SET orgName = ? WHERE username = ?',
(orgName, username,))
if org == "NONE":
cur.execute('DELETE from orgs WHERE username = ?',
if 'orgName' in flask.request.form:
orgName = str(flask.request.form['orgName'])
username = str(flask.session['username'])
cur = servicePoints.model.get_db()
curOrg = cur.execute('SELECT orgName FROM users WHERE username = ?',
(username,))
leadercur = cur.execute('SELECT username from orgs WHERE orgName = ?',
(orgName,))
leader = leadercur.fetchone()
cur.execute('UPDATE requests SET leader = ? WHERE member = ?',
(leader["username"], username,))
return flask.redirect(flask.url_for('index'))
org = curOrg.fetchone()
curOrg = cur.execute('SELECT fullname, email, hours FROM users WHERE username = ?',
(username,))
userInfo = curOrg.fetchone()
pendingData = (flask.session['username'], userInfo['fullname'],
userInfo['email'], orgName, userInfo['hours'])
cursor = cur.execute('SELECT * FROM pendingOrgs WHERE username =:who', {"who": username})
tryfetch = cursor.fetchone()
if tryfetch is not None:
cur.execute("DELETE from pendingOrgs WHERE username = ?", (username,))
cur.execute("INSERT INTO pendingOrgs(username, fullname, email, orgName, "
"hours) VALUES (?, ?, ?, ?, ?)", pendingData)
if org == "NONE":
cur.execute('DELETE from orgs WHERE username = ?',
(username,))
leadercur = cur.execute('SELECT username from orgs WHERE orgName = ?',
(orgName,))
leader = leadercur.fetchone()
cur.execute('UPDATE requests SET leader = ? WHERE member = ?',
(leader["username"], username,))
elif 'noOrg' in flask.request.form:
username = str(flask.session['username'])
cur = servicePoints.model.get_db()
cursor = cur.execute('SELECT * FROM pendingOrgs WHERE username =:who', {"who": username})
tryfetch = cursor.fetchone()
if tryfetch is not None:
cur.execute("DELETE from pendingOrgs WHERE username = ?", (username,))
cur.execute("UPDATE users SET orgName = 'NONE' WHERE username = ?",
(username,))
cur.execute("UPDATE requests SET leader = 'pending' WHERE member = ?",
(username,))
elif 'fullname' in flask.request.form:
fullName = str(flask.request.form['fullname'])
username = str(flask.session['username'])
cur = servicePoints.model.get_db()
cur.execute('UPDATE users SET fullname = ? WHERE username = ?',
(fullName, username,))
elif 'email' in flask.request.form:
email = str(flask.request.form['email'])
username = str(flask.session['username'])
cur = servicePoints.model.get_db()
cur.execute('UPDATE users SET email = ? WHERE username = ?',
(email, username,))
cursor = servicePoints.model.get_db()
cur = cursor.execute("SELECT * FROM orgs")
username = flask.session['username']
orgs = cur.fetchall()
context = {"orgs": orgs}
cur = cursor.execute("SELECT fullname, email, orgName from users WHERE username = ?", (username,))
user = cur.fetchone()
studentOrgCur = cursor.execute('SELECT orgName, hours FROM users WHERE '
'username =:who',
{"who": username})
results = studentOrgCur.fetchone()
leaderCur = cursor.execute('SELECT orgName FROM orgs WHERE '
'username =:who',
{"who": username})
tryfetch = leaderCur.fetchone()
if tryfetch is None or tryfetch["orgName"] == "NONE":
leader = 0
else:
leader = 1
cur = cursor.execute('SELECT * FROM pendingOrgs WHERE username =:who', {"who": username})
tryfetch = cur.fetchone()
if tryfetch is None:
pending = 0
else:
pending = 1
context = {"orgs": orgs, "fullname": user["fullname"], "email": user["email"],
"org": user["orgName"], "leader": leader, "pending": pending}
return render_template('userProfile.html', **context)
@servicePoints.app.route('/images/<path:filename>', methods=['GET', 'POST'])
......@@ -492,9 +551,36 @@ def manageOrg():
username = flask.session["username"]
if flask.request.method == 'POST':
if 'delete' in flask.request.form:
return flask.redirect(flask.url_for('confirmDeleteOrg'))
cursor = servicePoints.model.get_db()
leaderCur = cursor.execute('SELECT orgName FROM orgs WHERE '
'username =:who',
{"who": username})
results = leaderCur.fetchone()
orgName = results["orgName"]
cursor.execute("DELETE from orgs WHERE orgName = ?", (orgName,))
cursor.execute("UPDATE users SET orgName = 'NONE' WHERE orgName = ?", (orgName,))
cursor.execute("UPDATE requests SET leader = 'pending' WHERE leader = ?",
(username,))
return flask.redirect(flask.url_for('index'))
if 'add' in flask.request.form:
cursor = servicePoints.model.get_db()
leaderCur = cursor.execute('SELECT orgName FROM orgs WHERE '
'username =:who',
{"who": username})
results = leaderCur.fetchone()
orgName = results["orgName"]
cursor.execute("DELETE from pendingOrgs WHERE username = ?", (flask.request.form["user"],))
cursor.execute('UPDATE users SET orgName = ? WHERE username = ? ', (orgName, flask.request.form["user"],))
cursor.execute("UPDATE requests SET leader = ? WHERE member = ?",
(username, flask.request.form["user"],))
if 'deny' in flask.request.form:
cursor = servicePoints.model.get_db()
cursor.execute("DELETE from pendingOrgs WHERE username = ?", (flask.request.form["user"],))
if 'remove' in flask.request.form:
return flask.redirect(flask.url_for('confirmRemoveMember'))
cursor = servicePoints.model.get_db()
cursor.execute("UPDATE users SET orgName = 'NONE' WHERE username = ? ", (flask.request.form["user"],))
cursor.execute("UPDATE requests SET leader = 'pending' WHERE member = ?",
(flask.request.form["user"],))
cursor = servicePoints.model.get_db()
leaderCur = cursor.execute('SELECT orgName FROM orgs WHERE '
'username =:who',
......@@ -503,7 +589,11 @@ def manageOrg():
orgName = results["orgName"]
membersCur = cursor.execute('SELECT username, fullname FROM users WHERE orgname =:who', {"who": orgName})
members = membersCur.fetchall()
context = {'org': orgName, 'members': members, 'username': username}
pendingCur = cursor.execute('SELECT username, fullname, email, hours FROM pendingOrgs WHERE '
'orgName =:who',
{"who": orgName})
pending = pendingCur.fetchall()
context = {'org': orgName, 'members': members, 'username': username, 'pending': pending}
return render_template('manageOrg.html', **context)
return flask.redirect(flask.url_for('login'))
......
......@@ -16,11 +16,24 @@ CREATE TABLE orgs(
PRIMARY KEY(orgName)
);
CREATE TABLE pendingOrgs(
username VARCHAR(20) NOT NULL,
fullname VARCHAR(40) NOT NULL,
email VARCHAR(40) NOT NULL,
orgName VARCHAR(40) NOT NULL,
hours INTEGER NOT NULL,
PRIMARY KEY(username)
FOREIGN KEY(username) REFERENCES users(username) ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE TABLE tutors(
username VARCHAR(20) NOT NULL,
subject VARCHAR(40) NOT NULL,
time VARCHAR(80) NOT NULL,
PRIMARY KEY(username)
FOREIGN KEY(username) REFERENCES users(username) ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE TABLE requests(
......
var/images/c0cf17efda2368530bb66b4e2fb68456865edbbdaa67c99783de324711384437.jpg

7.63 KiB

var/images/e7f4305f380d8eadfe6640bced697c42bb582eee646155db4b795aa98cc87410.png

157 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