1+ """
2+ Helper functions for working with the csh_ldap library
3+ """
4+
15from functools import lru_cache
26
37from packet import _ldap
48
59
6- @lru_cache (maxsize = 1024 )
710def _ldap_get_group_members (group ):
811 return _ldap .get_group (group ).get_members ()
912
@@ -16,48 +19,21 @@ def _ldap_is_member_of_group(member, group):
1619 return False
1720
1821
19- @lru_cache (maxsize = 1024 )
20- def _ldap_is_member_of_directorship (account , directorship ):
21- directors = _ldap .get_directorship_heads (directorship )
22- for director in directors :
23- if director .uid == account .uid :
24- return True
25- return False
26-
27-
2822# Getters
2923
30- @lru_cache (maxsize = 4096 )
24+ @lru_cache (maxsize = 256 )
3125def ldap_get_member (username ):
3226 return _ldap .get_member (username , uid = True )
3327
3428
35- @lru_cache (maxsize = 1024 )
3629def ldap_get_active_members ():
3730 return _ldap_get_group_members ("active" )
3831
3932
40- @lru_cache (maxsize = 1024 )
4133def ldap_get_intro_members ():
4234 return _ldap_get_group_members ("intromembers" )
4335
4436
45- @lru_cache (maxsize = 1024 )
46- def ldap_get_onfloor_members ():
47- return _ldap_get_group_members ("onfloor" )
48-
49-
50- @lru_cache (maxsize = 1024 )
51- def ldap_get_groups (account ):
52- group_list = account .get ("memberOf" )
53- groups = []
54- for group_dn in group_list :
55- if "cn=groups,cn=accounts" in group_dn :
56- groups .append (group_dn .split ("," )[0 ][3 :])
57- return groups
58-
59-
60- @lru_cache (maxsize = 1024 )
6137def ldap_get_eboard ():
6238 members = _ldap_get_group_members ("eboard-chairman" ) + _ldap_get_group_members ("eboard-evaluations"
6339 ) + _ldap_get_group_members ("eboard-financial" ) + _ldap_get_group_members ("eboard-history"
@@ -68,63 +44,28 @@ def ldap_get_eboard():
6844 return members
6945
7046
71- @lru_cache (maxsize = 2048 )
7247def ldap_get_live_onfloor ():
7348 """
7449 :return: All upperclassmen who live on floor and are not eboard
7550 """
7651 members = []
77- onfloor = ldap_get_onfloor_members ( )
52+ onfloor = _ldap_get_group_members ( "onfloor" )
7853 for member in onfloor :
7954 if ldap_get_roomnumber (member ) and not ldap_is_eboard (member ):
8055 members .append (member )
56+
8157 return members
8258
8359
8460# Status checkers
8561
86- @lru_cache (maxsize = 1024 )
87- def ldap_is_eval_director (account ):
88- return _ldap_is_member_of_directorship (account , 'evaluations' )
89-
90-
91- @lru_cache (maxsize = 1024 )
92- def ldap_is_active (account ):
93- return _ldap_is_member_of_group (account , 'active' )
94-
95-
96- @lru_cache (maxsize = 1024 )
97- def ldap_is_alumni (account ):
98- # If the user is not active, they are an alumni.
99- return not _ldap_is_member_of_group (account , 'active' )
100-
101-
102- @lru_cache (maxsize = 1024 )
10362def ldap_is_eboard (account ):
10463 return _ldap_is_member_of_group (account , 'eboard' )
10564
10665
107- @lru_cache (maxsize = 1024 )
108- def ldap_is_rtp (account ):
109- return _ldap_is_member_of_group (account , 'rtp' )
110-
111-
112- @lru_cache (maxsize = 1024 )
11366def ldap_is_intromember (account ):
11467 return _ldap_is_member_of_group (account , 'intromembers' )
11568
116-
117- @lru_cache (maxsize = 1024 )
118- def ldap_is_onfloor (account ):
119- return _ldap_is_member_of_group (account , 'onfloor' )
120-
121-
122- @lru_cache (maxsize = 1024 )
123- def ldap_is_current_student (account ):
124- return _ldap_is_member_of_group (account , 'current_student' )
125-
126-
127- @lru_cache (maxsize = 1024 )
12869def ldap_get_roomnumber (account ):
12970 try :
13071 return account .roomNumber
0 commit comments