Skip to content

Commit efab997

Browse files
Fix House Meeting Attendance Race Condition
Fixes #14
1 parent 3341b4c commit efab997

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

conditional/blueprints/member_management.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,8 +471,15 @@ def member_management_upgrade_user():
471471
db.session.delete(fts)
472472

473473
for fhm in FreshmanHouseMeetingAttendance.query.filter(FreshmanHouseMeetingAttendance.fid == fid):
474-
db.session.add(MemberHouseMeetingAttendance(
475-
uid, fhm.meeting_id, fhm.excuse, fhm.attendance_status))
474+
# Don't duplicate HM attendance records
475+
mhm = MemberHouseMeetingAttendance.query.filter(
476+
MemberHouseMeetingAttendance.meeting_id == fhm.meeting_id).first()
477+
if mhm is None:
478+
db.session.add(MemberHouseMeetingAttendance(
479+
uid, fhm.meeting_id, fhm.excuse, fhm.attendance_status))
480+
else:
481+
logger.info('backend', action="duplicate house meeting attendance! fid: %s, uid: %s, id: %s" %
482+
(fid, uid, fhm.meeting_id))
476483
db.session.delete(fhm)
477484

478485
if acct.onfloor_status:

0 commit comments

Comments
 (0)