Skip to content

Commit 62754c3

Browse files
committed
Added data to user profile page
1 parent aaccce2 commit 62754c3

File tree

5 files changed

+73
-12
lines changed

5 files changed

+73
-12
lines changed

tracker/static/style.css

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ div.container > h1 {
1212
margin-bottom: 2rem;
1313
}
1414

15+
.super-large {
16+
font-size: 6em;
17+
}
18+
19+
.pretty-large {
20+
font-size: 4em;
21+
}
22+
23+
.center {
24+
text-align: center;
25+
}
26+
1527
/*
1628
PAGE SPECIFICS
1729
########################################################################################################################
@@ -49,10 +61,12 @@ div.container > h1 {
4961
text-align: left;
5062
}
5163

52-
.flag-large {
53-
font-size: 6em;
54-
}
55-
5664
#flag input {
5765
font-size: 2em;
5866
}
67+
68+
/* PROFILE*/
69+
70+
#profile h3 {
71+
text-align: center;
72+
}

tracker/templates/flag_success.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div class="container" id="flag">
55
<h1>Yay! Flag Added</h1>
66
<h4>That flag had a value of:</h4>
7-
<h1 class="flag-large">{{ flag.value }}</h1>
7+
<h1 class="super-large">{{ flag.value }}</h1>
88

99
<h5>Your new session score:</h5>
1010
<h3>n/a</h3>

tracker/templates/profile.html

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,33 @@
22

33
{% block content %}
44
<div class="container" id="profile">
5-
<h1>{{ user }}</h1>
6-
<p>{{ text }}</p>
5+
<h1>{{ user.name }}</h1>
6+
<div class="row">
7+
<div class="col-sm">
8+
<h3>Total Score</h3>
9+
<h1 class="center pretty-large">{{ user.get_global_score() }}</h1>
10+
<br />
11+
12+
<h3>Flags Submitted</h3>
13+
<h1 class="center pretty-large">{{ user.get_no_flags() }}</h1>
14+
</div>
15+
<div class="col-sm">
16+
<h3>Events Attended</h3>
17+
{% if events is not none %}
18+
<h1 class="center pretty-large">{{ events|length }}</h1>
19+
<ul class="list-group{% if events|length > 7 %} pre-scrollable{% endif %}">
20+
{% for e in events %}
21+
<li class="list-group-item list-group-item-dark"><a href="/event/{{ e.id }}">{{ e.name }}</a></li>
22+
{% endfor %}
23+
</ul>
24+
{% else %}
25+
<h1 class="center pretty-large">0</h1>
26+
{% endif %}
27+
</div>
28+
<div class="col-sm">
29+
<h3>Achievements</h3>
30+
<h5 class="center">Coming Soon...</h5>
31+
</div>
32+
</div>
733
</div>
834
{% endblock %}

tracker/user.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import tracker.db as db
2+
import tracker.event as event
23

34
class User():
45

@@ -26,6 +27,21 @@ def get_name(self):
2627
def get_global_score(self):
2728
return db.query_db('SELECT SUM(f.value) FROM flagsfound ff LEFT JOIN flags f ON f.flag = ff.flag_id LEFT JOIN users u ON u.id = ff.user_id WHERE ff.user_id = ?', [self.id], one=True)[0]
2829

30+
# Get list of events attended by user (by looking at flags found)
31+
def get_events_attended(self):
32+
events = db.query_db('SELECT e.id AS id, e.name AS name FROM events e LEFT JOIN flags f ON f.event_id = e.id LEFT JOIN flagsfound ff ON ff.flag_id = f.flag LEFT JOIN users u ON u.id = ff.user_id WHERE u.id IS NOT NULL AND u.id = ?', [self.id])
33+
if events is None:
34+
return None
35+
else:
36+
elist = []
37+
for e in events:
38+
elist.append(event.Event(e['id'], e['name']))
39+
return elist
40+
41+
# Get number of flags found by user
42+
def get_no_flags(self):
43+
return db.query_db('SELECT COUNT(*) FROM flagsfound WHERE user_id = ?', [self.id], one=True)[0]
44+
2945
def __repr__(self):
3046
return '<User %r>' % self.id
3147

@@ -37,3 +53,11 @@ def exists(id):
3753
return True
3854
else:
3955
return False
56+
57+
# Get a user from ID
58+
def get_user(id):
59+
u = db.query_db('SELECT * FROM users WHERE id = ?', [id], one=True)
60+
if u is None:
61+
return None
62+
else:
63+
return User(u['id'], u['name'])

tracker/views.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,8 @@ def profile():
8787
def profile_user(user_id):
8888
if not user.exists(user_id):
8989
flask.abort(404)
90-
91-
if flask_login.current_user.is_authenticated and flask_login.current_user.get_id() == user_id:
92-
return flask.render_template('profile.html', title=user_id, user='This is your profile', text=flask_login.current_user.get_name())
93-
else:
94-
return flask.render_template('profile.html', title=user_id, user=user_id, text='I am a user!')
90+
u = user.get_user(user_id)
91+
return flask.render_template('profile.html', title=u.name, user=u, events=u.get_events_attended())
9592

9693

9794
## Error Handlers

0 commit comments

Comments
 (0)