Skip to content

Commit 60d6218

Browse files
committed
Adding upperclassmen signatures page
1 parent 75cf8b2 commit 60d6218

File tree

4 files changed

+111
-39
lines changed

4 files changed

+111
-39
lines changed

packet/routes/upperclassmen.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
from itertools import chain
33

44
from flask import redirect, render_template
5+
from sqlalchemy import func, case
56

6-
from packet import auth, app
7-
from packet.models import Packet
7+
from packet import auth, app, db
8+
from packet.models import Packet, UpperSignature, MiscSignature
89
from packet.utils import before_request
910

1011

@@ -19,15 +20,36 @@ def index():
1920
@before_request
2021
def upperclassman(uid, info=None):
2122
open_packets = Packet.query.filter(Packet.end > datetime.now()).filter(Packet.start < datetime.now()).all()
23+
signatures = 0
2224

2325
for packet in open_packets:
2426
packet.did_sign = False
2527

2628
for sig in chain(filter(lambda sig: sig.signed, packet.upper_signatures), packet.misc_signatures):
2729
if sig.member == uid:
2830
packet.did_sign = True
31+
signatures += 1
2932
break
3033

3134
open_packets.sort(key=lambda x: x.did_sign, reverse=True)
3235

33-
return render_template("upperclassman.html", info=info, open_packets=open_packets, member=uid)
36+
return render_template("upperclassman.html", info=info, open_packets=open_packets, member=uid,
37+
signatures=signatures)
38+
39+
40+
@app.route("/upperclassmen")
41+
@auth.oidc_auth
42+
@before_request
43+
def upperclassmen_total(info=None):
44+
open_packets = Packet.query.filter(Packet.end > datetime.now()).filter(Packet.start < datetime.now()).count()
45+
46+
# TODO: Only count open Packets
47+
upperclassmen = (db.session.query(func.count(case([(UpperSignature.signed == True, 1)])).label("signatures"),
48+
UpperSignature.member)).group_by(UpperSignature.member).all()
49+
upperclassmen += (db.session.query(func.count().label("signatures"),
50+
MiscSignature.member)).group_by(MiscSignature.member).all()
51+
52+
upperclassmen.sort(reverse=True)
53+
54+
return render_template("upperclassmen_totals.html", info=info, upperclassmen=upperclassmen,
55+
open_packets=open_packets)

packet/templates/include/nav.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414
<a class="nav-link" href="/packets">Active Packets</a>
1515
</li>
1616

17-
{% if info.realm != "csh" %}
17+
{% if info.realm == "csh" %}
1818
<li class="nav-item">
19+
<a class="nav-link" href="/upperclassmen">Signatures</a>
20+
</li>
21+
{% else %}
22+
<li class="nav-item">
1923
<a class="nav-link" href="/essays">Essays</a>
2024
</li>
2125
{% endif %}

packet/templates/upperclassman.html

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,43 +10,39 @@ <h3 class="page-title">{{ get_display_name(member) }}</h3>
1010
<div id="eval-blocks">
1111
<div id="eval-table">
1212
<div class="card mb-3">
13+
<div class="card-header">
14+
<b class="signature-count">{{ signatures }}/{{ open_packets|length }}</b>
15+
</div>
1316
<div class="card-body table-fill">
14-
<div class="card-body table-fill">
15-
<div class="table-responsive">
16-
<table class="table table-striped no-bottom-margin" data-module="table"
17-
data-searchable="true" data-sort-column="3" data-sort-order="asc"
18-
data-length-changable="true" data-paginated="false">
19-
<thead>
20-
<tr>
21-
<th>Name</th>
22-
<th>Signature</th>
17+
<div class="table-responsive">
18+
<table class="table table-striped no-bottom-margin" data-module="table"
19+
data-searchable="true" data-sort-column="3" data-sort-order="asc"
20+
data-length-changable="true" data-paginated="false">
21+
<tbody>
22+
{% for packet in open_packets %}
23+
{# Using inline style because of how themeswitcher loads the css theme :( #}
24+
<tr {% if packet.did_sign %}style="background-color: #4caf505e" {% endif %}>
25+
<td>
26+
<a href="/packet/{{ packet.freshman.rit_username }}">
27+
<img class="eval-user-img"
28+
alt="{{ packet.freshman.name }}"
29+
src="https://www.gravatar.com/avatar/freshmen?d=mp&f=y"
30+
width="25"
31+
height="25"/> {{ packet.freshman.name }}
32+
({{ packet.freshman.rit_username }})
33+
</a>
34+
</td>
35+
<td width="15%">
36+
{% if packet.did_sign %}
37+
<i class="fas fa-check"></i>
38+
{% else %}
39+
<i class="fas fa-times"></i>
40+
{% endif %}
41+
</td>
2342
</tr>
24-
</thead>
25-
<tbody>
26-
{% for packet in open_packets %}
27-
{# Using inline style because of how themeswitcher loads the css theme :( #}
28-
<tr {% if packet.did_sign %}style="background-color: #4caf505e" {% endif %}>
29-
<td>
30-
<a href="/packet/{{ packet.freshman.rit_username }}">
31-
<img class="eval-user-img"
32-
alt="{{ packet.freshman.name }}"
33-
src="https://profiles.csh.rit.edu/image/{{ packet.freshman.rit_username }}"
34-
width="25"
35-
height="25"/> {{ packet.freshman.name }} ({{ packet.freshman.rit_username }})
36-
</a>
37-
</td>
38-
<td width="15%">
39-
{% if packet.did_sign %}
40-
<i class="fas fa-check"></i>
41-
{% else %}
42-
<i class="fas fa-times"></i>
43-
{% endif %}
44-
</td>
45-
</tr>
46-
{% endfor %}
47-
</tbody>
48-
</table>
49-
</div>
43+
{% endfor %}
44+
</tbody>
45+
</table>
5046
</div>
5147
</div>
5248
</div>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{% extends "extend/base.html" %}
2+
3+
{% block body %}
4+
<div class="container main">
5+
<div class="row mobile-hide">
6+
<div class="col-sm-10">
7+
<h3 class="page-title">Upperclassmen Signatures</h3>
8+
</div>
9+
</div>
10+
11+
<div id="eval-blocks">
12+
<div id="eval-table">
13+
<div class="card">
14+
<div class="card-body table-fill">
15+
<div class="table-responsive">
16+
<table class="table table-striped no-bottom-margin" data-module="table"
17+
data-searchable="true" data-sort-column="1" data-sort-order="asc"
18+
data-length-changable="true" data-paginated="false">
19+
<thead>
20+
<tr>
21+
<th>Upperclassman</th>
22+
<th>Signatures</th>
23+
</tr>
24+
</thead>
25+
<tbody>
26+
{% for m in upperclassmen %}
27+
<tr>
28+
<td>
29+
<a href="/member/{{ m.member }}">
30+
<img class="eval-user-img"
31+
alt="{{ m.member }}"
32+
src="https://profiles.csh.rit.edu/image/{{ m.member }}"
33+
width="25"
34+
height="25"/> {{ get_display_name(m.member) }}
35+
</a>
36+
</td>
37+
<td>
38+
{{ m.signatures }}/{{ open_packets }}
39+
</td>
40+
</tr>
41+
{% endfor %}
42+
</tbody>
43+
</table>
44+
</div>
45+
</div>
46+
</div>
47+
</div>
48+
</div>
49+
</div>
50+
{% endblock %}

0 commit comments

Comments
 (0)