Skip to content

Commit 2feb462

Browse files
Fix Housing Queue Population with Epoch
1 parent d101548 commit 2feb462

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

conditional/util/housing.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,52 @@
11
from functools import lru_cache
2-
from conditional.util.ldap import ldap_get_housing_points, ldap_get_room_number, ldap_get_name, ldap_is_active, \
3-
ldap_is_current_student
4-
from conditional.models import models
2+
from datetime import datetime
3+
from conditional.util.ldap import ldap_get_housing_points
4+
from conditional.util.ldap import ldap_get_room_number
5+
from conditional.util.ldap import ldap_get_name
6+
from conditional.util.ldap import ldap_is_active
7+
from conditional.util.ldap import ldap_get_onfloor_members
8+
from conditional.util.ldap import ldap_is_current_student
59

10+
from conditional.models.models import OnFloorStatusAssigned
611

12+
from conditional import db
713
@lru_cache(maxsize=1024)
8-
def get_housing_queue():
14+
def __get_ofm__():
15+
16+
# check that everyone in onfloor has onfloorstatus
17+
onfloors = [uids['uid'][0].decode('utf-8') for uids in ldap_get_onfloor_members()]
18+
19+
# this is bad and we shouldn't do this every time
20+
for member in onfloors:
21+
if OnFloorStatusAssigned.query.filter(OnFloorStatusAssigned.uid == member).first() is None:
22+
db.session.add(OnFloorStatusAssigned(member, datetime.min))
23+
24+
db.session.flush()
25+
db.session.commit()
926
ofm = [
1027
{
1128
'uid': m.uid,
1229
'time': m.onfloor_granted,
1330
'points': ldap_get_housing_points(m.uid)
14-
} for m in models.OnFloorStatusAssigned.query.all()
31+
} for m in OnFloorStatusAssigned.query.all()
1532
if ldap_is_active(m.uid)]
1633

1734
# sort by housing points then by time in queue
1835
ofm.sort(key=lambda m: m['time'])
1936
ofm.sort(key=lambda m: m['points'], reverse=True)
2037

38+
return ofm
39+
40+
def get_housing_queue():
41+
ofm = __get_ofm__()
42+
2143
queue = [m['uid'] for m in ofm if ldap_get_room_number(m['uid']) == "N/A" and ldap_is_current_student(m['uid'])]
2244

2345
return queue
2446

2547

2648
def get_queue_with_points():
27-
ofm = [
28-
{
29-
'uid': m.uid,
30-
'time': m.onfloor_granted,
31-
'points': ldap_get_housing_points(m.uid)
32-
} for m in models.OnFloorStatusAssigned.query.all()
33-
if ldap_is_active(m.uid)]
34-
35-
# sort by housing points then by time in queue
36-
ofm.sort(key=lambda m: m['time'])
37-
ofm.sort(key=lambda m: m['points'], reverse=True)
49+
ofm = __get_ofm__()
3850

3951
queue = [
4052
{

0 commit comments

Comments
 (0)