def refresh_from_db(self): # type: () -> None with self._config_change_lock: # Collect valve drivers current_ids = [] for item in Valve.select(): if item.id in self._valve_drivers: self._valve_drivers[item.id].update(item) else: self._valve_drivers[item.id] = ValveDriver(item) current_ids.append(item.id) for item_id in list(self._valve_drivers.keys()): if item_id not in current_ids: del self._valve_drivers[item_id] # Collect pump drivers current_ids = [] pump_drivers_per_valve = {} # type: Dict[int, Set[PumpDriver]] for item in Pump.select(): if item.id in self._pump_drivers: pump_driver = self._pump_drivers[item.id] pump_driver.update(item) else: pump_driver = PumpDriver(item) self._pump_drivers[item.id] = pump_driver current_ids.append(item.id) for valve_id in pump_driver.valve_ids: if valve_id not in pump_drivers_per_valve: pump_drivers_per_valve[valve_id] = set() pump_drivers_per_valve[valve_id].add(pump_driver) for item_id in list(self._pump_drivers.keys()): if item_id not in current_ids: del self._pump_drivers[item_id] self._pump_drivers_per_valve = pump_drivers_per_valve
def load_cooling_pump_groups(self): # type: () -> List[PumpGroupDTO] pump_groups = [] for pump in Pump.select(): pump_groups.append( PumpGroupDTO(id=pump.id, pump_output_id=pump.output.number, valve_output_ids=[ valve.output.number for valve in pump.cooling_valves ], room_id=None)) return pump_groups