Fix up and down filters.
authorBenjamin Braatz <bb@bbraatz.eu>
Wed, 2 Aug 2023 08:44:18 +0000 (10:44 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Wed, 2 Aug 2023 08:44:18 +0000 (10:44 +0200)
controlpi_plugins/wsclient.py

index 686e3ee94bac705a333d591d6befb543934cb677..639e81ada90eb98250a166b5fcff21439999e46b 100644 (file)
@@ -167,19 +167,11 @@ class WSClient(BasePlugin):
                                      {'const': 'connection configured'}}))
         sends.append(MessageTemplate({'event':
                                      {'const': 'connection closed'}}))
-        self._down_filter = []
         for template in self.conf['down filter']:
             sends.append(MessageTemplate(template))
-            trans_template = translate_template(template,
-                                                self._client, self.name)
-            self._down_filter.append(MessageTemplate(trans_template))
         receives = []
-        self._up_filter = []
         for template in self.conf['up filter']:
             receives.append(MessageTemplate(template))
-            trans_template = translate_template(template,
-                                                self._client, self.name)
-            self._up_filter.append(MessageTemplate(trans_template))
         self.bus.register(self.name, 'WSClient', sends,
                           [(receives, self._receive)])
 
@@ -214,8 +206,18 @@ class WSClient(BasePlugin):
                     self._client = f"{address}:{port}"
                 if 'interface' in self.conf:
                     conf_command['mac'] = self._mac
-                conf_command['up filter'] = self._up_filter
-                conf_command['down filter'] = self._down_filter
+                up_filter = []
+                for template in self.conf['up filter']:
+                    template = translate_template(template,
+                                                  self._client, self.name)
+                    up_filter.append(MessageTemplate(template))
+                down_filter = []
+                for template in self.conf['down filter']:
+                    template = translate_template(template,
+                                                  self._client, self.name)
+                    down_filter.append(MessageTemplate(template))
+                conf_command['up filter'] = up_filter
+                conf_command['down filter'] = down_filter
                 json_command = json.dumps(conf_command)
                 await websocket.send(json_command)
                 print(f"WSClient '{self.name}': Connection configured"