Skip to content

Commit b7612de

Browse files
committed
Updating UI, adding filters and accounting for co-ops
1 parent d581edd commit b7612de

File tree

8 files changed

+117
-19
lines changed

8 files changed

+117
-19
lines changed

packet/commands.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from . import app, db
1111
from .models import Freshman, Packet, FreshSignature, UpperSignature, MiscSignature
1212
from .ldap import ldap_get_eboard_role, ldap_get_active_rtp, ldap_get_3da, ldap_get_webmaster, ldap_get_drink_admin, \
13-
ldap_get_constitutional_maintainer, ldap_is_intromember, ldap_get_active_members
13+
ldap_get_constitutional_maintainer, ldap_is_intromember, ldap_get_active_members, ldap_is_on_coop
1414

1515

1616
@app.cli.command("create-secret")
@@ -155,6 +155,8 @@ def ldap_sync():
155155
print("Fetching data from LDAP...")
156156
all_upper = {member.uid: member for member in filter(lambda member: not ldap_is_intromember(member),
157157
ldap_get_active_members())}
158+
on_coop = {member.uid: member for member in filter(lambda member: ldap_is_on_coop(member),
159+
ldap_get_active_members())}
158160

159161
rtp = ldap_get_active_rtp()
160162
three_da = ldap_get_3da()
@@ -177,7 +179,15 @@ def ldap_sync():
177179
for sig in filter(lambda sig: sig.member not in all_upper, packet.upper_signatures):
178180
UpperSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete()
179181
if sig.signed:
180-
db.session.add(MiscSignature(packet=packet, member=sig.member))
182+
sig = MiscSignature(packet=packet, member=sig.member)
183+
db.session.add(sig)
184+
185+
# Migrate UpperSignatures that are from accounts that are on co-op currently
186+
for sig in filter(lambda sig: sig.member in on_coop, packet.upper_signatures):
187+
UpperSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete()
188+
if sig.signed:
189+
sig = MiscSignature(packet=packet, member=sig.member)
190+
db.session.add(sig)
181191

182192
# Migrate MiscSignatures that are from accounts that are now active members
183193
for sig in filter(lambda sig: sig.member in all_upper, packet.misc_signatures):

packet/ldap.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
from functools import lru_cache
6+
from datetime import date
67

78
from packet import _ldap
89

@@ -162,6 +163,16 @@ def ldap_is_intromember(member):
162163
return _ldap_is_member_of_group(member, "intromembers")
163164

164165

166+
def ldap_is_on_coop(member):
167+
"""
168+
:param member: A CSHMember instance
169+
"""
170+
if date.today().month > 6:
171+
return _ldap_is_member_of_group(member, "fall_coop")
172+
else:
173+
return _ldap_is_member_of_group(member, "spring_coop")
174+
175+
165176
def ldap_get_roomnumber(member):
166177
"""
167178
:param member: A CSHMember instance

packet/static/js/signing-0.js renamed to packet/static/js/signing.js

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
$(document).ready(function () {
22

3+
const dialogs = Swal.mixin({
4+
customClass: {
5+
confirmButton: 'btn m-1 btn-primary',
6+
cancelButton: 'btn btn-light'
7+
},
8+
buttonsStyling: false,
9+
});
10+
311
$('.sign-button').click(function () {
412
var packetData = $(this).get(0).dataset;
513
var userData = $("#userInfo").val();
6-
swal({
14+
dialogs.fire({
715
title: "Are you sure?",
816
text: "Once a packet is signed it can only be unsigned from request to the Evals Director",
9-
icon: "warning",
10-
buttons: true,
11-
dangerMode: true,
17+
type: "warning",
18+
confirmButtonText: 'Sign',
19+
showCancelButton: true,
20+
reverseButtons: true
1221
})
1322
.then((willSign) => {
14-
if (willSign) {
23+
if (willSign.value) {
1524
$.ajax({
1625
url: "/api/v1/sign/" + packetData.packet_id + "/",
1726
method: "POST",
1827
success: function (data) {
19-
swal("Congratulations or I'm sorry\nYou've signed " + packetData.freshman_name + "'s packet.", {
20-
icon: "success",
28+
dialogs.fire({
29+
title: "Congratulations or I'm sorry",
30+
text: "You've signed " + packetData.freshman_name + "'s packet",
31+
type: "success",
2132
})
2233
.then(() => {
2334
location.reload();

packet/static/js/tables.js

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,45 @@ $(document).ready(function () {
77
"info": false,
88
"columnDefs": [
99
{
10-
"type": "num-fmt", "targets": 1
10+
"targets": 0,
11+
"max-width": "50%",
12+
},
13+
{
14+
"type": "num-fmt",
15+
"targets": 1,
16+
"visible": false,
17+
"max-width": "15%",
18+
},
19+
{
20+
"type": "num-fmt",
21+
"targets": 2,
22+
"visible": false,
23+
"max-width": "15%",
24+
},
25+
{
26+
"type": "num-fmt",
27+
"targets": 3,
28+
"max-width": "15%",
1129
}
1230
]
1331
});
1432

33+
var table = $('#active_packets_table');
34+
35+
$("#sig-filter").on('change', function () {
36+
if ($(this).val() === 'Total') {
37+
table.DataTable().column(1).visible(false);
38+
table.DataTable().column(2).visible(false);
39+
table.DataTable().column(3).visible(true);
40+
} else if ($(this).val() === 'Upperclassmen') {
41+
table.DataTable().column(1).visible(true);
42+
table.DataTable().column(2).visible(false);
43+
table.DataTable().column(3).visible(false);
44+
} else if ($(this).val() === 'Freshmen') {
45+
table.DataTable().column(1).visible(false);
46+
table.DataTable().column(2).visible(true);
47+
table.DataTable().column(3).visible(false);
48+
}
49+
});
50+
1551
});

packet/templates/active_packets.html

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,18 @@
22

33
{% block body %}
44
<div class="container main">
5-
<div class="row mobile-hide">
6-
<div class="col-sm-10">
7-
<h3 class="page-title">Active Packets</h3>
5+
<div class="ml-4">
6+
<div class="row justify-content-between w-100">
7+
<div class="col-xs-10">
8+
<h4 class="page-title">Active Packets</h4>
9+
</div>
10+
<div class="col-xs-2">
11+
<select id="sig-filter" class="form-control">
12+
<option>Total</option>
13+
<option>Upperclassmen</option>
14+
<option>Freshmen</option>
15+
</select>
16+
</div>
817
</div>
918
</div>
1019
<div id="eval-blocks">
@@ -18,6 +27,10 @@ <h3 class="page-title">Active Packets</h3>
1827
<thead>
1928
<tr>
2029
<th>Name</th>
30+
{% if info.realm == "csh" %}
31+
<th>Signatures</th>
32+
<th>Signatures</th>
33+
{% endif %}
2134
<th>Signatures</th>
2235
{% if can_sign %}
2336
<th>Sign</th>
@@ -27,7 +40,7 @@ <h3 class="page-title">Active Packets</h3>
2740
<tbody>
2841
{% for packet in packets %}
2942
<tr {% if packet.did_sign_result %}style="background-color: #4caf505e" {% endif %}>
30-
<td>
43+
<td data-priority="1">
3144
<a href="{{ url_for('freshman_packet', packet_id=packet.id) }}">
3245
<img class="eval-user-img"
3346
alt="{{ get_rit_name(packet.freshman_username) }}"
@@ -36,6 +49,22 @@ <h3 class="page-title">Active Packets</h3>
3649
height="25"/> {{ get_rit_name(packet.freshman_username) }}
3750
</a>
3851
</td>
52+
<td data-sort="{{ packet.signatures_received_result.upper }}">
53+
{% if packet.signatures_received_result.upper == packet.signatures_required_result.upper %}
54+
💯 {# 100% emoji #}
55+
{% else %}
56+
{{ packet.signatures_received_result.upper }} /
57+
{{ packet.signatures_required_result.upper }}
58+
{% endif %}
59+
</td>
60+
<td data-sort="{{ packet.signatures_received_result.fresh }}">
61+
{% if packet.signatures_received_result.fresh == packet.signatures_required_result.fresh %}
62+
💯 {# 100% emoji #}
63+
{% else %}
64+
{{ packet.signatures_received_result.fresh }} /
65+
{{ packet.signatures_required_result.fresh }}
66+
{% endif %}
67+
</td>
3968
<td data-sort="{{ packet.signatures_received_result.total }}">
4069
{% if packet.signatures_received_result.total == packet.signatures_required_result.total %}
4170
💯 {# 100% emoji #}
@@ -45,7 +74,7 @@ <h3 class="page-title">Active Packets</h3>
4574
{% endif %}
4675
</td>
4776
{% if can_sign %}
48-
<td class="sign-packet" align="right">
77+
<td class="sign-packet" align="right" data-priority="1">
4978
{% if not packet.did_sign_result and info.uid != packet.freshman_username %}
5079
<button class="btn btn-sm btn-primary sign-button"
5180
data-packet_id="{{ packet.id }}"

packet/templates/include/head.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@
3131
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
3232
<link rel="stylesheet" href="https://themeswitcher.csh.rit.edu/api/get" media="screen">
3333

34-
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
34+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.all.min.js"></script>
35+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.min.css">
3536

36-
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
37+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.10.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
3738

3839
<link rel="stylesheet" href="/static/css/packet.min.css">
3940

packet/templates/include/scripts.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99

1010
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
1111

12-
<script src="/static/js/signing-0.js"></script>
12+
<script src="/static/js/signing.js"></script>

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Flask==1.0.2
22
Flask-pyoidc==2.0.0
33
flask_sqlalchemy==2.3.2
4-
psycopg2-binary==2.7.5
4+
psycopg2-binary==2.8.3
55
Flask-Migrate==2.2.1
66
pylint==2.3.0
77
gunicorn==19.7.1

0 commit comments

Comments
 (0)