Skip to content

Commit bbd8148

Browse files
committed
Fixed required numbers for freshman on/off floor
1 parent c32bb81 commit bbd8148

File tree

3 files changed

+37
-14
lines changed

3 files changed

+37
-14
lines changed

packet/member.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from sqlalchemy import exc, text
55

66
from .models import db, REQUIRED_MISC_SIGNATURES
7-
from .packet import get_number_required, get_misc_signatures
7+
from .packet import get_misc_signatures, get_number_required_off_floor
88

99
LOGGER = getLogger(__name__)
1010

@@ -22,7 +22,7 @@ def current_packets(member, intro=False, onfloor=False):
2222
SPacket = namedtuple('spacket', ['rit_username', 'name', 'did_sign', 'total_signatures', 'required_signatures'])
2323

2424
packets = []
25-
base_required = get_number_required()
25+
base_required = get_number_required_off_floor()
2626

2727
signed_packets = get_signed_packets(member, intro, onfloor)
2828
misc_signatures = get_misc_signatures()

packet/packet.py

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import datetime
22
from functools import lru_cache
33

4-
from sqlalchemy import exc
4+
from sqlalchemy import exc, false, true
55

66
from packet.ldap import ldap_get_member, ldap_is_intromember
77
from .models import Freshman, UpperSignature, FreshSignature, MiscSignature, db, Packet
@@ -151,23 +151,41 @@ def get_number_signed(freshman_username, separated=False):
151151
.first().signatures_received(not separated)
152152

153153

154-
@lru_cache(maxsize=512)
155-
def get_number_required(separated=False):
154+
@lru_cache(maxsize=256)
155+
def get_number_required_on_floor(separated=False):
156156
"""
157157
Get the number of required signatures for Packet (not counting on/off-floor status)
158158
:param separated: whether or not to separate those by category
159159
:return: a map or an integer of total signatures required
160160
"""
161-
return db.session.query(Packet) \
162-
.filter(Packet.start < datetime.now(), Packet.end > datetime.now()).first().signatures_required(not separated)
161+
return db.session.query(Packet).join(Freshman).filter(
162+
Packet.start < datetime.now(),
163+
Packet.end > datetime.now(),
164+
Freshman.onfloor == true()
165+
).first().signatures_required(not separated)
166+
167+
168+
@lru_cache(maxsize=256)
169+
def get_number_required_off_floor(separated=False):
170+
"""
171+
Get the number of required signatures for Packet (not counting on/off-floor status)
172+
:param separated: whether or not to separate those by category
173+
:return: a map or an integer of total signatures required
174+
"""
175+
return db.session.query(Packet).join(Freshman).filter(
176+
Packet.start < datetime.now(),
177+
Packet.end > datetime.now(),
178+
Freshman.onfloor == false()
179+
).first().signatures_required(not separated)
163180

164181

165182
@lru_cache(maxsize=512)
166183
def get_upperclassmen_percent(username, onfloor=False):
167-
required = get_number_required(True)
168-
upperclassmen_required = required['upperclassmen'] + required['eboard'] + required['miscellaneous']
169184
if onfloor:
170-
upperclassmen_required -= 1
185+
required = get_number_required_on_floor(True)
186+
else:
187+
required = get_number_required_off_floor(True)
188+
upperclassmen_required = required['upperclassmen'] + required['eboard'] + required['miscellaneous']
171189

172190
signatures = get_number_signed(username, True)
173191
upperclassmen_signature = signatures['upperclassmen'] + signatures['eboard'] + signatures['miscellaneous']
@@ -208,7 +226,8 @@ def clear_cache():
208226
"""
209227
get_upperclassmen_percent.cache_clear()
210228
get_number_signed.cache_clear()
211-
get_number_required.cache_clear()
229+
get_number_required_on_floor.cache_clear()
230+
get_number_required_off_floor.cache_clear()
212231
signed_packets.cache_clear()
213232
get_signatures.cache_clear()
214233
get_misc_signatures.cache_clear()

packet/routes/shared.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from flask import render_template, redirect
22

3-
from packet import auth, app, ldap
3+
from packet import auth, app
44
from packet.ldap import ldap_is_eboard
55
from packet.member import current_packets
6-
from packet.packet import get_number_required, get_number_signed, signed_packet, get_freshman
6+
from packet.packet import get_number_signed, signed_packet, get_freshman, \
7+
get_number_required_off_floor, get_number_required_on_floor
78
from packet.packet import get_signatures, get_upperclassmen_percent
89
from packet.utils import before_request
910

@@ -22,7 +23,10 @@ def freshman_packet(uid, info=None):
2223
upperclassmen_percent = get_upperclassmen_percent(uid)
2324
signatures = get_signatures(uid)
2425
signed_dict = get_number_signed(uid, True)
25-
required = get_number_required()
26+
if freshman.onfloor:
27+
required = get_number_required_on_floor()
28+
else:
29+
required = get_number_required_off_floor()
2630
signed = get_number_signed(uid)
2731

2832
packet_signed = signed_packet(info['uid'], uid)

0 commit comments

Comments
 (0)