Skip to content

Commit 275e35b

Browse files
committed
Cleanup and Refactor
1 parent 41d1eab commit 275e35b

File tree

4 files changed

+63
-33
lines changed

4 files changed

+63
-33
lines changed

packet/ldap.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ def _ldap_get_group_members(group):
88
return _ldap.get_group(group).get_members()
99

1010

11-
@lru_cache(maxsize=2048)
1211
def _ldap_is_member_of_group(member, group):
1312
group_list = member.get("memberOf")
1413
for group_dn in group_list:

packet/member.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

packet/packet.py

Lines changed: 58 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,10 @@
66

77

88
def sign(signer_username, freshman_username):
9-
if signer_username == freshman_username:
10-
return False
11-
12-
freshman_signed = Freshman.query.filter_by(rit_username=freshman_username).first()
13-
if freshman_signed is None:
14-
return False
15-
packet = freshman_signed.current_packet()
16-
if packet is None or not packet.is_open():
9+
if not valid_signature(signer_username, freshman_username):
1710
return False
1811

12+
packet = get_freshman(freshman_username).current_packet()
1913
upper_signature = UpperSignature.query.filter(UpperSignature.member == signer_username,
2014
UpperSignature.packet == packet).first()
2115
fresh_signature = FreshSignature.query.filter(FreshSignature.freshman_username == signer_username,
@@ -27,25 +21,22 @@ def sign(signer_username, freshman_username):
2721
upper_signature.signed = True
2822
elif fresh_signature:
2923
# Make sure only on floor freshmen can sign packets
30-
freshman_signer = Freshman.query.filter_by(rit_username=signer_username).first()
24+
freshman_signer = get_freshman(signer_username)
3125
if freshman_signer and not freshman_signer.onfloor:
3226
return False
3327
fresh_signature.signed = True
3428
else:
3529
db.session.add(MiscSignature(packet=packet, member=signer_username))
3630
db.session.commit()
3731

38-
# Clear functions that read signatures cache
39-
get_number_signed.cache_clear()
40-
get_signatures.cache_clear()
41-
get_upperclassmen_percent.cache_clear()
32+
clear_cache()
4233

4334
return True
4435

4536

4637
@lru_cache(maxsize=2048)
4738
def get_signatures(freshman_username):
48-
packet = Freshman.query.filter_by(rit_username=freshman_username).first().current_packet()
39+
packet = get_current_packet(freshman_username)
4940
eboard = UpperSignature.query.filter_by(packet_id=packet.id, eboard=True).order_by(UpperSignature.signed.desc())
5041
upper_signatures = UpperSignature.query.filter_by(packet_id=packet.id, eboard=False).order_by(
5142
UpperSignature.signed.desc())
@@ -57,14 +48,40 @@ def get_signatures(freshman_username):
5748
'misc': misc_signatures}
5849

5950

51+
@lru_cache(maxsize=2048)
52+
def valid_signature(signer_username, freshman_username):
53+
if signer_username == freshman_username:
54+
return False
55+
56+
freshman_signed = get_freshman(freshman_username)
57+
if freshman_signed is None:
58+
return False
59+
60+
packet = freshman_signed.current_packet()
61+
if packet is None or not packet.is_open():
62+
return False
63+
64+
return True
65+
66+
67+
@lru_cache(maxsize=512)
68+
def get_freshman(freshman_username):
69+
return Freshman.query.filter_by(rit_username=freshman_username).first()
70+
71+
72+
@lru_cache(maxsize=512)
73+
def get_current_packet(freshman_username):
74+
return get_freshman(freshman_username).current_packet()
75+
76+
6077
@lru_cache(maxsize=2048)
6178
def get_number_signed(freshman_username):
62-
return Freshman.query.filter_by(rit_username=freshman_username).first().current_packet().signatures_received()
79+
return get_current_packet(freshman_username).signatures_received()
6380

6481

65-
@lru_cache(maxsize=4096)
82+
@lru_cache(maxsize=2048)
6683
def get_number_required(freshman_username):
67-
return Freshman.query.filter_by(rit_username=freshman_username).first().current_packet().signatures_required()
84+
return get_current_packet(freshman_username).signatures_required()
6885

6986

7087
@lru_cache(maxsize=2048)
@@ -78,3 +95,27 @@ def get_upperclassmen_percent(uid):
7895
upperclassmen_signature = sum(upperclassmen_signature.values())
7996

8097
return upperclassmen_signature / upperclassmen_required * 100
98+
99+
100+
@lru_cache(maxsize=512)
101+
def signed_packets(member):
102+
# Checks whether or not member is a freshman
103+
if get_freshman(member) is not None:
104+
return FreshSignature.query.filter_by(freshman_username=member, signed=True).all()
105+
# Checks whether or not member is an upperclassman
106+
if UpperSignature.query.filter_by(member=member).first() is not None:
107+
return UpperSignature.query.filter_by(member=member, signed=True).all()
108+
return MiscSignature.query.filter_by(member=member).all()
109+
110+
111+
def clear_cache():
112+
"""
113+
Clear cache of all frequently changing data
114+
"""
115+
get_number_signed.cache_clear()
116+
get_signatures.cache_clear()
117+
get_number_required.cache_clear()
118+
get_upperclassmen_percent.cache_clear()
119+
get_freshman.cache_clear()
120+
get_current_packet.cache_clear()
121+
signed_packets.cache_clear()

packet/utils.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
ldap_is_onfloor,
1212
ldap_get_roomnumber,
1313
ldap_get_groups)
14-
from packet.models import Freshman, FreshSignature, Packet, UpperSignature, MiscSignature
14+
from packet.models import FreshSignature, UpperSignature, MiscSignature
15+
from packet.packet import get_current_packet, get_freshman
1516

1617
INTRO_REALM = "https://sso.csh.rit.edu/auth/realms/intro"
1718

@@ -63,12 +64,12 @@ def get_member_info(uid):
6364

6465
@lru_cache(maxsize=2048)
6566
def is_on_floor(uid):
66-
return (Freshman.query.filter_by(rit_username=uid)).first().onfloor
67+
return get_freshman(uid).onfloor
6768

6869

69-
@lru_cache(maxsize=4096)
70+
@lru_cache(maxsize=2048)
7071
def signed_packet(signer, freshman):
71-
packet = Packet.query.filter_by(freshman_username=freshman).first()
72+
packet = get_current_packet(freshman)
7273
freshman_signature = FreshSignature.query.filter_by(packet=packet, freshman_username=signer, signed=True).first()
7374
upper_signature = UpperSignature.query.filter_by(packet=packet, member=signer, signed=True).first()
7475
misc_signature = MiscSignature.query.filter_by(packet=packet, member=signer).first()

0 commit comments

Comments
 (0)