Skip to content

Commit d718be0

Browse files
authored
Merge pull request #112 from JoelEager/cleanup-and-bump
Cleanup and bump
2 parents 8004ff0 + 8c27d43 commit d718be0

File tree

4 files changed

+49
-15
lines changed

4 files changed

+49
-15
lines changed

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
{
22
"title": "CSH Packet",
33
"name": "csh-packet",
4-
"version": "3.1.0",
5-
"description": "A webpacket for CSH",
4+
"version": "3.1.1",
5+
"description": "A web app implementation of the CSH introductory packet.",
66
"bugs": {
77
"url": "https://github.com/ComputerScienceHouse/packet/issues",
88
"email": "[email protected]"
99
},
1010
"license": "MIT",
11-
"author": "Devin Matte",
1211
"contributors": [
13-
"Devin Matte (https://devinmatte.com/)"
12+
"Devin Matte (https://devinmatte.com/)",
13+
"Joel Eager (https://github.com/JoelEager)"
1414
],
1515
"repository": {
1616
"type": "git",

packet/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
The application setup and initialization code lives here.
2+
The application setup and initialization code lives here
33
"""
44

55
import os
@@ -30,7 +30,6 @@
3030
# Logger configuration
3131
logging.getLogger().setLevel(app.config["LOG_LEVEL"])
3232
app.logger.info("Launching packet v" + app.config["VERSION"])
33-
3433
app.logger.info("Using the {} realm".format(app.config["REALM"]))
3534

3635
# Initialize the extensions

packet/ldap.py

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,54 @@
88

99

1010
def _ldap_get_group_members(group):
11+
"""
12+
:return: A list of CSHMember instances
13+
"""
1114
return _ldap.get_group(group).get_members()
1215

1316

1417
def _ldap_is_member_of_group(member, group):
15-
group_list = member.get("memberOf")
16-
for group_dn in group_list:
18+
"""
19+
:param member: A CSHMember instance
20+
"""
21+
for group_dn in member.get("memberOf"):
1722
if group == group_dn.split(",")[0][3:]:
1823
return True
24+
1925
return False
2026

2127

2228
# Getters
2329

2430
@lru_cache(maxsize=256)
2531
def ldap_get_member(username):
32+
"""
33+
:return: A CSHMember instance
34+
"""
2635
return _ldap.get_member(username, uid=True)
2736

2837

2938
def ldap_get_active_members():
39+
"""
40+
Gets all current, dues-paying members
41+
:return: A list of CSHMember instances
42+
"""
3043
return _ldap_get_group_members("active")
3144

3245

3346
def ldap_get_intro_members():
47+
"""
48+
Gets all freshmen members
49+
:return: A list of CSHMember instances
50+
"""
3451
return _ldap_get_group_members("intromembers")
3552

3653

3754
def ldap_get_eboard():
55+
"""
56+
Gets all voting members of eboard
57+
:return: A list of CSHMember instances
58+
"""
3859
members = _ldap_get_group_members("eboard-chairman") + _ldap_get_group_members("eboard-evaluations"
3960
) + _ldap_get_group_members("eboard-financial") + _ldap_get_group_members("eboard-history"
4061
) + _ldap_get_group_members("eboard-imps") + _ldap_get_group_members("eboard-opcomm"
@@ -46,7 +67,8 @@ def ldap_get_eboard():
4667

4768
def ldap_get_live_onfloor():
4869
"""
49-
:return: All upperclassmen who live on floor and are not eboard
70+
All upperclassmen who live on floor and are not eboard
71+
:return: A list of CSHMember instances
5072
"""
5173
members = []
5274
onfloor = _ldap_get_group_members("onfloor")
@@ -59,15 +81,25 @@ def ldap_get_live_onfloor():
5981

6082
# Status checkers
6183

62-
def ldap_is_eboard(account):
63-
return _ldap_is_member_of_group(account, 'eboard')
84+
def ldap_is_eboard(member):
85+
"""
86+
:param member: A CSHMember instance
87+
"""
88+
return _ldap_is_member_of_group(member, "eboard")
89+
6490

91+
def ldap_is_intromember(member):
92+
"""
93+
:param member: A CSHMember instance
94+
"""
95+
return _ldap_is_member_of_group(member, "intromembers")
6596

66-
def ldap_is_intromember(account):
67-
return _ldap_is_member_of_group(account, 'intromembers')
6897

69-
def ldap_get_roomnumber(account):
98+
def ldap_get_roomnumber(member):
99+
"""
100+
:param member: A CSHMember instance
101+
"""
70102
try:
71-
return account.roomNumber
103+
return member.roomNumber
72104
except AttributeError:
73105
return None

packet/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ class Packet(db.Model):
5252
end = Column(DateTime, nullable=False)
5353

5454
freshman = relationship("Freshman", back_populates="packets")
55+
56+
# The `lazy="subquery"` kwarg enables eager loading for signatures which makes signature calculations much faster
57+
# See the docs here for details: https://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html
5558
upper_signatures = relationship("UpperSignature", lazy="subquery",
5659
order_by="UpperSignature.signed.desc(), UpperSignature.updated")
5760
fresh_signatures = relationship("FreshSignature", lazy="subquery",

0 commit comments

Comments
 (0)