Skip to content

Commit 132cad7

Browse files
Merge pull request #71 from liam-middlebrook/onfloor-status-fix
Actually add/remove onfloor status like advertised
2 parents 8159ff0 + 45a9596 commit 132cad7

File tree

1 file changed

+71
-58
lines changed

1 file changed

+71
-58
lines changed

conditional/blueprints/member_management.py

Lines changed: 71 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -230,72 +230,85 @@ def member_management_edituser(uid):
230230
post_data = request.get_json()
231231

232232
if not uid.isdigit():
233-
active_member = post_data['activeMember']
234-
235-
if ldap_is_eval_director(user_name):
236-
logger.info('backend', action="edit %s room: %s onfloor: %s housepts %s" %
237-
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
238-
post_data['housingPoints']))
239-
room_number = post_data['roomNumber']
240-
onfloor_status = post_data['onfloorStatus']
241-
housing_points = post_data['housingPoints']
242-
243-
ldap_set_roomnumber(uid, room_number)
244-
if onfloor_status:
245-
ldap_add_member_to_group(uid, "onfloor")
246-
else:
247-
ldap_remove_member_from_group(uid, "onfloor")
248-
ldap_set_housingpoints(uid, housing_points)
249-
250-
# Only update if there's a diff
251-
logger.info('backend', action="edit %s active: %s" % (uid, active_member))
252-
if ldap_is_active(uid) != active_member:
253-
if active_member:
254-
ldap_set_active(uid)
255-
else:
256-
ldap_set_inactive(uid)
257-
258-
if active_member:
259-
db.session.add(SpringEval(uid))
260-
else:
261-
SpringEval.query.filter(
262-
SpringEval.uid == uid and
263-
SpringEval.active).update(
264-
{
265-
'active': False
266-
})
267-
clear_active_members_cache()
233+
edit_uid(uid, user_name, post_data)
268234
else:
269-
logger.info('backend', action="edit freshman account %s room: %s onfloor: %s eval_date: %s sig_missed %s" %
270-
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
271-
post_data['evalDate'], post_data['sigMissed']))
235+
edit_fid(uid, post_data)
272236

273-
name = post_data['name']
237+
db.session.flush()
238+
db.session.commit()
239+
return jsonify({"success": True}), 200
274240

275-
if post_data['roomNumber'] == "":
276-
room_number = None
277-
else:
278-
room_number = post_data['roomNumber']
241+
def edit_uid(uid, user_name, post_data):
242+
active_member = post_data['activeMember']
279243

244+
if ldap_is_eval_director(user_name):
245+
logger.info('backend', action="edit %s room: %s onfloor: %s housepts %s" %
246+
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
247+
post_data['housingPoints']))
248+
room_number = post_data['roomNumber']
280249
onfloor_status = post_data['onfloorStatus']
281-
eval_date = post_data['evalDate']
250+
housing_points = post_data['housingPoints']
282251

283-
if post_data['sigMissed'] == "":
284-
sig_missed = None
252+
ldap_set_roomnumber(uid, room_number)
253+
if onfloor_status:
254+
db.session.add(OnFloorStatusAssigned(uid, datetime.now()))
255+
ldap_add_member_to_group(uid, "onfloor")
285256
else:
286-
sig_missed = post_data['sigMissed']
287-
288-
FreshmanAccount.query.filter(FreshmanAccount.id == uid).update({
289-
'name': name,
290-
'eval_date': datetime.strptime(eval_date, "%Y-%m-%d"),
291-
'onfloor_status': onfloor_status,
292-
'room_number': room_number,
293-
'signatures_missed': sig_missed
294-
})
257+
for ofs in OnFloorStatusAssigned.query.filter(OnFloorStatusAssigned.uid == uid):
258+
db.session.delete(ofs)
259+
db.session.flush()
260+
db.session.commit()
261+
262+
ldap_remove_member_from_group(uid, "onfloor")
263+
ldap_set_housingpoints(uid, housing_points)
264+
265+
# Only update if there's a diff
266+
logger.info('backend', action="edit %s active: %s" % (uid, active_member))
267+
if ldap_is_active(uid) != active_member:
268+
if active_member:
269+
ldap_set_active(uid)
270+
else:
271+
ldap_set_inactive(uid)
295272

296-
db.session.flush()
297-
db.session.commit()
298-
return jsonify({"success": True}), 200
273+
if active_member:
274+
db.session.add(SpringEval(uid))
275+
else:
276+
SpringEval.query.filter(
277+
SpringEval.uid == uid and
278+
SpringEval.active).update(
279+
{
280+
'active': False
281+
})
282+
clear_active_members_cache()
283+
284+
285+
def edit_fid(uid, post_data):
286+
logger.info('backend', action="edit freshman account %s room: %s onfloor: %s eval_date: %s sig_missed %s" %
287+
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
288+
post_data['evalDate'], post_data['sigMissed']))
289+
290+
name = post_data['name']
291+
292+
if post_data['roomNumber'] == "":
293+
room_number = None
294+
else:
295+
room_number = post_data['roomNumber']
296+
297+
onfloor_status = post_data['onfloorStatus']
298+
eval_date = post_data['evalDate']
299+
300+
if post_data['sigMissed'] == "":
301+
sig_missed = None
302+
else:
303+
sig_missed = post_data['sigMissed']
304+
305+
FreshmanAccount.query.filter(FreshmanAccount.id == uid).update({
306+
'name': name,
307+
'eval_date': datetime.strptime(eval_date, "%Y-%m-%d"),
308+
'onfloor_status': onfloor_status,
309+
'room_number': room_number,
310+
'signatures_missed': sig_missed
311+
})
299312

300313

301314
@member_management_bp.route('/manage/user/<uid>', methods=['GET'])

0 commit comments

Comments
 (0)