10
10
from conditional .models .models import CurrentCoops
11
11
from conditional .models .models import OnFloorStatusAssigned
12
12
13
- from conditional import db
14
13
@lru_cache (maxsize = 1024 )
15
14
def __get_ofm__ ():
16
15
17
16
# check that everyone in onfloor has onfloorstatus
18
17
onfloors = [uids ['uid' ][0 ].decode ('utf-8' ) for uids in ldap_get_onfloor_members ()]
19
18
20
- # this is bad and we shouldn't do this every time
21
- for member in onfloors :
22
- if OnFloorStatusAssigned .query .filter (OnFloorStatusAssigned .uid == member ).first () is None :
23
- db .session .add (OnFloorStatusAssigned (member , datetime .min ))
24
-
25
- db .session .flush ()
26
- db .session .commit ()
27
19
ofm = [
28
20
{
29
21
'uid' : m .uid ,
@@ -35,6 +27,22 @@ def __get_ofm__():
35
27
CurrentCoops .uid == m .uid and CurrentCoops .active
36
28
).first () is not None ]
37
29
30
+ # Add everyone who has a discrepancy in LDAP and OnFloorStatusAssigned
31
+ for member in onfloors :
32
+ if OnFloorStatusAssigned .query .filter (OnFloorStatusAssigned .uid == member ).first () is None :
33
+ ofsa = OnFloorStatusAssigned (member , datetime .min )
34
+ active = ldap_is_active (ofsa .uid )
35
+ coop = CurrentCoops .query .filter (CurrentCoops .uid == ofsa .uid ).first ()
36
+ coop = coop != None and coop .active
37
+
38
+ if active or coop :
39
+ ofm .append (
40
+ {
41
+ 'uid' : ofsa .uid ,
42
+ 'time' : ofsa .onfloor_granted ,
43
+ 'points' : ldap_get_housing_points (ofsa .uid )
44
+ })
45
+
38
46
# sort by housing points then by time in queue
39
47
ofm .sort (key = lambda m : m ['time' ])
40
48
ofm .sort (key = lambda m : m ['points' ], reverse = True )
0 commit comments