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
Beispiel #2
0
 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