(accountability): Close rooms before turnover.

No longer automatically move members from the previous room.
Add extra member hardening to the turnover process.
This commit is contained in:
2021-10-05 11:18:44 +03:00
parent 8b6f60d7f3
commit af26de6603

View File

@@ -168,7 +168,7 @@ async def turnover():
to_update = [
(mem.data.duration + int((now - mem.data.last_joined_at).total_seconds()), None, mem.slotid, mem.userid)
for slot in last_slots for mem in slot.members.values()
if mem.data.last_joined_at
if mem.data and mem.data.last_joined_at
]
if to_update:
accountability_members.update_many(
@@ -178,6 +178,15 @@ async def turnover():
cast_row='(NULL::int, NULL::timestamptz, NULL::int, NULL::int)'
)
# Close all completed rooms, update data
await asyncio.gather(*(slot.close() for slot in last_slots), return_exceptions=True)
update_slots = [slot.data.slotid for slot in last_slots if slot.data]
if update_slots:
accountability_rooms.update_where(
{'closed_at': utc_now()},
slotid=update_slots
)
# Rotate guild sessions
[aguild.advance() for aguild in AccountabilityGuild.cache.values()]
@@ -185,7 +194,6 @@ async def turnover():
# We could break up the session starting?
# Move members of the next session over to the session channel
# This includes any members of the session just complete
current_slots = [
aguild.current_slot for aguild in AccountabilityGuild.cache.values()
if aguild.current_slot is not None
@@ -207,21 +215,12 @@ async def turnover():
return_exceptions=True
)
# Close all completed rooms, update data
await asyncio.gather(*(slot.close() for slot in last_slots))
update_slots = [slot.data.slotid for slot in last_slots if slot.data]
if update_slots:
accountability_rooms.update_where(
{'closed_at': utc_now()},
slotid=update_slots
)
# Update session data of all members in new channels
member_session_data = [
(0, slot.start_time, mem.slotid, mem.userid)
for slot in current_slots
for mem in slot.members.values()
if mem.member.voice and mem.member.voice.channel == slot.channel
if mem.data and mem.member and mem.member.voice and mem.member.voice.channel == slot.channel
]
if member_session_data:
accountability_members.update_many(