Skip to content

Commit f23dd39

Browse files
authored
Merge pull request #80 from devinmatte/cache_busters
Lowering cache now that we're more performant
2 parents ad9e6bf + b6f5ecb commit f23dd39

File tree

4 files changed

+36
-39
lines changed

4 files changed

+36
-39
lines changed

packet/packet.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def set_essays(freshman_username, eboard=None, events=None, achieve=None):
5858
return True
5959

6060

61-
@lru_cache(maxsize=2048)
61+
@lru_cache(maxsize=512)
6262
def get_signatures(freshman_username):
6363
"""
6464
Gets a list of all signatures for the given member
@@ -75,17 +75,17 @@ def get_signatures(freshman_username):
7575

7676
upper_signatures = db.session.query(UpperSignature.member, UpperSignature.signed, Freshman.rit_username) \
7777
.select_from(UpperSignature).join(Packet).join(Freshman) \
78-
.filter(UpperSignature.packet_id == packet.id, UpperSignature.eboard.is_(False))\
79-
.order_by(UpperSignature.signed.desc())\
78+
.filter(UpperSignature.packet_id == packet.id, UpperSignature.eboard.is_(False)) \
79+
.order_by(UpperSignature.signed.desc()) \
8080
.distinct().all()
81-
fresh_signatures = \
82-
db.session.query(FreshSignature.freshman_username, FreshSignature.signed, Freshman.rit_username, Freshman.name) \
81+
fresh_signatures = db.session.query(
82+
FreshSignature.freshman_username, FreshSignature.signed, Freshman.rit_username, Freshman.name) \
8383
.select_from(Packet).join(FreshSignature).join(Freshman) \
8484
.filter(FreshSignature.packet_id == packet.id) \
8585
.order_by(FreshSignature.signed.desc()) \
8686
.distinct().all()
8787

88-
misc_signatures = db.session.query(MiscSignature.member, Freshman.rit_username)\
88+
misc_signatures = db.session.query(MiscSignature.member, Freshman.rit_username) \
8989
.select_from(MiscSignature).join(Packet).join(Freshman) \
9090
.filter(MiscSignature.packet_id == packet.id) \
9191
.distinct().all()
@@ -96,6 +96,7 @@ def get_signatures(freshman_username):
9696
'misc': misc_signatures}
9797

9898

99+
@lru_cache(maxsize=512)
99100
def get_misc_signatures():
100101
packet_misc_sigs = {}
101102
try:
@@ -111,7 +112,7 @@ def get_misc_signatures():
111112
return packet_misc_sigs
112113

113114

114-
@lru_cache(maxsize=2048)
115+
@lru_cache(maxsize=512)
115116
def valid_signature(signer_username, freshman_username):
116117
if signer_username == freshman_username:
117118
return False
@@ -127,17 +128,15 @@ def valid_signature(signer_username, freshman_username):
127128
return True
128129

129130

130-
@lru_cache(maxsize=512)
131131
def get_freshman(freshman_username):
132132
return Freshman.query.filter_by(rit_username=freshman_username).first()
133133

134134

135-
@lru_cache(maxsize=512)
136135
def get_current_packet(freshman_username):
137136
return get_freshman(freshman_username).current_packet()
138137

139138

140-
@lru_cache(maxsize=2048)
139+
@lru_cache(maxsize=512)
141140
def get_number_signed(freshman_username, separated=False):
142141
"""
143142
Gets the raw number of signatures for the user
@@ -151,7 +150,7 @@ def get_number_signed(freshman_username, separated=False):
151150
.first().signatures_received(not separated)
152151

153152

154-
@lru_cache(maxsize=2048)
153+
@lru_cache(maxsize=512)
155154
def get_number_required(separated=False):
156155
"""
157156
Get the number of required signatures for Packet (not counting on/off-floor status)
@@ -162,7 +161,7 @@ def get_number_required(separated=False):
162161
.filter(Packet.start < datetime.now(), Packet.end > datetime.now()).first().signatures_required(not separated)
163162

164163

165-
@lru_cache(maxsize=2048)
164+
@lru_cache(maxsize=512)
166165
def get_upperclassmen_percent(username, onfloor=False):
167166
required = get_number_required(True)
168167
upperclassmen_required = required['upperclassmen'] + required['eboard'] + required['miscellaneous']
@@ -186,14 +185,29 @@ def signed_packets(member):
186185
return MiscSignature.query.filter_by(member=member).all()
187186

188187

188+
@lru_cache(maxsize=512)
189+
def signed_packet(signer, freshman):
190+
packet = get_current_packet(freshman)
191+
freshman_signature = FreshSignature.query.filter_by(packet=packet, freshman_username=signer, signed=True).first()
192+
upper_signature = UpperSignature.query.filter_by(packet=packet, member=signer, signed=True).first()
193+
misc_signature = MiscSignature.query.filter_by(packet=packet, member=signer).first()
194+
195+
if freshman_signature is not None:
196+
return freshman_signature.signed
197+
if upper_signature is not None:
198+
return upper_signature.signed
199+
if misc_signature is not None:
200+
return misc_signature
201+
return False
202+
203+
189204
def clear_cache():
190205
"""
191206
Clear cache of all frequently changing data
192207
"""
208+
get_upperclassmen_percent.cache_clear()
193209
get_number_signed.cache_clear()
194-
get_signatures.cache_clear()
195210
get_number_required.cache_clear()
196-
get_upperclassmen_percent.cache_clear()
197-
get_freshman.cache_clear()
198-
get_current_packet.cache_clear()
199211
signed_packets.cache_clear()
212+
get_signatures.cache_clear()
213+
get_misc_signatures.cache_clear()

packet/routes/freshmen.py

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

3-
from packet import auth, app, db
4-
from packet.models import Packet
5-
from packet.utils import before_request
3+
from packet import auth, app
64
from packet.packet import set_essays, get_current_packet
5+
from packet.utils import before_request
76

87

98
@app.route("/")

packet/routes/shared.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from packet import auth, app
44
from packet.member import current_packets
55
from packet.models import Freshman
6-
from packet.packet import get_number_required, get_number_signed
6+
from packet.packet import get_number_required, get_number_signed, signed_packet
77
from packet.packet import get_signatures, get_upperclassmen_percent
8-
from packet.utils import before_request, signed_packet
8+
from packet.utils import before_request
99

1010

1111
@app.route('/logout')
@@ -23,7 +23,7 @@ def freshman_packet(uid, info=None):
2323
signatures = get_signatures(uid)
2424
signed_dict = get_number_signed(uid, True)
2525
required = get_number_required()
26-
signed = sum(signed_dict.values())
26+
signed = get_number_signed(uid)
2727

2828
packet_signed = signed_packet(info['uid'], uid)
2929
return render_template("packet.html", info=info, signatures=signatures, uid=uid, required=required, signed=signed,

packet/utils.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
ldap_is_onfloor,
1212
ldap_get_roomnumber,
1313
ldap_get_groups)
14-
from packet.models import FreshSignature, UpperSignature, MiscSignature
15-
from packet.packet import get_current_packet, get_freshman
14+
from packet.packet import get_freshman
1615

1716
INTRO_REALM = "https://sso.csh.rit.edu/auth/realms/intro"
1817

@@ -67,21 +66,6 @@ def is_on_floor(uid):
6766
return get_freshman(uid).onfloor
6867

6968

70-
@lru_cache(maxsize=2048)
71-
def signed_packet(signer, freshman):
72-
packet = get_current_packet(freshman)
73-
freshman_signature = FreshSignature.query.filter_by(packet=packet, freshman_username=signer, signed=True).first()
74-
upper_signature = UpperSignature.query.filter_by(packet=packet, member=signer, signed=True).first()
75-
misc_signature = MiscSignature.query.filter_by(packet=packet, member=signer).first()
76-
77-
if freshman_signature is not None:
78-
return freshman_signature.signed
79-
if upper_signature is not None:
80-
return upper_signature.signed
81-
if misc_signature is not None:
82-
return misc_signature
83-
return False
84-
8569

8670
@app.context_processor
8771
def utility_processor():

0 commit comments

Comments
 (0)