def addOccurrenceNotificationsTask(dbi, prevVersion): """ Add OccurrenceNotificationsTask to scheduler and remove old RoomReservationTask """ scheduler_client = Client() scheduler_module = scheduler_client._schedMod old_tasks = [] for _, task in scheduler_module.getWaitingQueue(): if getattr(task, 'typeId', None) in {'RoomReservationTask', 'RoomReservationEndTask'}: old_tasks.append(task) for task in scheduler_module._runningList: if getattr(task, 'typeId', None) in {'RoomReservationTask', 'RoomReservationEndTask'}: old_tasks.append(task) for finished_task in scheduler_module._finishedIndex.values(): task = finished_task._task if hasattr(finished_task, '_task') else finished_task if getattr(task, 'typeId', None) in {'RoomReservationTask', 'RoomReservationEndTask'}: scheduler_module._finishedIndex.unindex_obj(finished_task) for failed_task in scheduler_module._failedIndex.values(): task = failed_task._task if hasattr(failed_task, '_task') else failed_task if getattr(task, 'typeId', None) in {'RoomReservationTask', 'RoomReservationEndTask'}: scheduler_module._failedIndex.unindex_obj(failed_task) for task in old_tasks: scheduler_client.dequeue(task) scheduler_client.enqueue(OccurrenceNotifications(rrule.HOURLY, byminute=0, bysecond=0)) dbi.commit()