-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
109 lines (88 loc) · 3.42 KB
/
app.py
File metadata and controls
109 lines (88 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import os
from flask import Flask, render_template, request, session, redirect, flash, url_for
from flask_pyoidc.flask_pyoidc import OIDCAuthentication
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# pulling config settings
if os.path.exists(os.path.join(os.getcwd(), "config.env.py")):
app.config.from_pyfile(os.path.join(os.getcwd(), "config.env.py"))
else:
app.config.from_pyfile(os.path.join(os.getcwd(), "config.py"))
# starting db
db = SQLAlchemy(app)
# setting up OIDC
auth = OIDCAuthentication(app, issuer=app.config["OIDC_ISSUER"],
client_registration_info=app.config["OIDC_CLIENT_CONFIG"])
class Skills(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
user = db.Column(db.String(50), primary_key=True)
skill = db.Column(db.String(50), primary_key=True)
level = db.Column(db.String(50))
@app.route('/')
@app.route('/skills')
@auth.oidc_auth
def skills():
uid = str(session["userinfo"].get("preferred_username", ""))
data = Skills.query.filter_by(user=uid).all()
return render_template('skills.html', data=data, user=uid)
@app.route('/skills/', methods=['POST'])
@auth.oidc_auth
def addskills():
uid = str(session["userinfo"].get("preferred_username", ""))
newskill = request.form.get('newSkill')
level = request.form['level']
if Skills.query.filter_by(user=uid, skill=newskill).first() is not None:
skill = Skills.query.filter_by(user=uid, skill=newskill).first()
skill.level = level
db.session.commit()
elif Skills.query.filter_by(user=uid, skill=newskill).first() is None:
yourLevel = Skills(user=uid, skill=newskill, level=level)
db.session.add(yourLevel)
db.session.commit()
data = Skills.query.filter_by(user=uid).all()
return redirect('/')
@app.route('/skills/<user>')
@auth.oidc_auth
def userSkill(user):
uid = str(session["userinfo"].get("preferred_username", ""))
if user == uid:
return redirect('/skills')
else:
data = Skills.query.filter_by(user=user).all()
return render_template('otherUserSkills.html', data=data, user=user)
@app.route('/edit/<user>/<id>')
@auth.oidc_auth
def edit(user, id):
skill = Skills.query.filter_by(id=id, user=user).first()
return render_template('edit.html', user=user, id=id, skill=skill)
@app.route('/edit/<user>/<id>/', methods=['POST'])
@auth.oidc_auth
def editSkill(user, id):
newLevel = request.form['level']
oldSkill = Skills.query.filter_by(user=user, id=id).first()
oldSkill.level = newLevel
db.session.commit()
return redirect('/')
@app.route('/delete/<user>/<id>')
@auth.oidc_auth
def delete(user, id):
rip = Skills.query.filter_by(id=id, user=user).first()
db.session.delete(rip)
db.session.commit()
return redirect('/')
@app.route('/users')
@auth.oidc_auth
def users():
data = db.session.query(Skills.user).distinct()
return render_template('users.html', data=data, location=request.path)
@app.route('/search', methods=['POST'])
@auth.oidc_auth
def search():
searchTarget = request.form['searchTarget']
results = Skills.query.filter(Skills.skill.like("%" + searchTarget + "%")).all()
if not results:
return render_template('searchResults.html', results=None)
else:
return render_template('searchResults.html', results=results)
if __name__ == '__main__':
app.run(host=app.config['IP'], port=app.config['PORT'])