diff --git a/TODO b/TODO index 8b7b2ec688e3a64016048d4cb7fbb343297cd054..6f50a1d3572936a063de435a265b52e1d898c820 100644 --- a/TODO +++ b/TODO @@ -3,9 +3,6 @@ - Reloading - Ztlumit logování - Trigger na "last modified" u meetingů -- zjistit, jak funguje type=3, například 673556078 (negenerují se - další instance, které mají stejné id, ale jiné uuid?) - hooky na create/delete user - přehlednější log -- type=1 ignorovat (nestěžovat si, že je unknown) - indexy diff --git a/hook.wsgi b/hook.wsgi index 4c66f0a92106c99bfdb737f2ddfd9cf16a5c98c5..111c8e96d2ee4c368af0a6b69320f5f3d3292138 100644 --- a/hook.wsgi +++ b/hook.wsgi @@ -64,14 +64,14 @@ class HookApp: def create_schedule(self, mid, meeting_id, occurrence_id, occ): - self.log("Meeting {meeting_id}.{occurrence_id}: Scheduling") + self.log(f"Meeting {meeting_id}.{occurrence_id}: Scheduling") db_query(""" INSERT INTO zoom_schedule (mid, occurrence_id, start_time, duration) VALUES (%s, %s, %s, %s) """, ( mid, - occurrence_id,, + occurrence_id, parse_time(occ['start_time']), occ['duration'], )) @@ -155,8 +155,8 @@ class HookApp: if "duration" in new: self.log(f"Meeting {meeting_id}.{occurrence_id}: Updating duration") - db_query("UPDATE zoom_meetings SET duration=%s WHERE meeting_id=%s AND (occurrence_id=%s OR %s = '0')", - (new['duration'], meeting_id, occurrence_id, occurrence_id)) + db_query("UPDATE zoom_schedule SET duration=%s WHERE mid=%s AND occurrence_id=%s", + (new['duration'], mid, occurrence_id)) def update_meeting_single(self, mid, meeting_id, old, new): @@ -167,13 +167,12 @@ class HookApp: def update_meeting_all(self, mid, meeting_id, old, new): - self.log(f"Meeting {meeting_id}: Updating all occurrences") - if "occurrences" in new: # So this will be a recurrent meeting, replace all occurrences + self.log(f"Meeting {meeting_id}: Replacing all occurrences") db_query("DELETE FROM zoom_schedule WHERE mid=%s", (mid,)) - for occ in meeting["occurrences"]: - self.create_schedule(mid, meeting_id, occ["occurrence_id"], new) + for occ in new["occurrences"]: + self.create_schedule(mid, meeting_id, occ["occurrence_id"], occ) elif "start_time" in new: if new["start_time"] == "": @@ -191,6 +190,11 @@ class HookApp: db_query("UPDATE zoom_schedule SET start_time=%s WHERE mid=%s", (parse_time(new["start_time"]), mid)) + elif "occurrences" in old: + # Descheduling (this can happen when changing type 8 to type 3) + self.log(f"Meeting {meeting_id}: Descheduling") + db_query("DELETE FROM zoom_schedule WHERE mid=%s", (mid,)) + elif "duration" in new: # This is just a schedule change self.log(f"Meeting {meeting_id}.0: Rescheduling with new duration") @@ -211,7 +215,7 @@ class HookApp: return mid = meeting_row.mid - old_type = meeting_row.type + old_type = old.get("type", -1) new_type = new.get("type", -1) if old_type != new_type: self.log(f"Meeting {meeting_id}: Transmuting from from type {old_type} to {new_type}") @@ -228,7 +232,7 @@ class HookApp: scope = payload.get("scope", "all") if scope == "single": self.update_meeting_single(mid, meeting_id, old, new) - elif scope == all": + elif scope == "all": self.update_meeting_all(mid, meeting_id, old, new) else: self.log(f"Meeting {meeting_id}: Unsupported update scope {scope}")