Bugfix on template translation.
authorBenjamin Braatz <bb@bbraatz.eu>
Thu, 29 Jul 2021 00:00:20 +0000 (02:00 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Thu, 29 Jul 2021 00:00:20 +0000 (02:00 +0200)
controlpi_plugins/wsclient.py

index 60b09e2a21f9d47406ea772a2c58893143274b32..6e21239e6dfcf64338f77567b3325212515bb09f 100644 (file)
@@ -136,6 +136,20 @@ class WSClient(BasePlugin):
                                            bytes(self.conf['interface'],
                                                  'utf-8')[:15]))
             self._mac = ':'.join('%02x' % b for b in info[18:24])
+            sends = []
+            sends.append(MessageTemplate({'event':
+                                         {'const': 'registered'}}))
+            sends.append(MessageTemplate({'event':
+                                         {'const': 'connection opened'}}))
+            sends.append(MessageTemplate({'event':
+                                         {'const': 'connection closed'}}))
+            for template in self.conf['down filter']:
+                sends.append(MessageTemplate(template))
+            receives = []
+            for template in self.conf['up filter']:
+                receives.append(MessageTemplate(template))
+            self.bus.register(self.name, 'WSClient', sends, receives,
+                              self._receive)
 
     async def run(self) -> None:
         """Connect to wsserver and process messages from it."""
@@ -152,28 +166,18 @@ class WSClient(BasePlugin):
                         self._client = f"{address}:{port}"
                     if 'interface' in self.conf:
                         conf_command['mac'] = self._mac
-                    sends = []
-                    sends.append(MessageTemplate({'event':
-                                                 {'const': 'registered'}}))
-                    sends.append(MessageTemplate({'event':
-                                                 {'const':
-                                                  'connection opened'}}))
-                    sends.append(MessageTemplate({'event':
-                                                 {'const':
-                                                  'connection closed'}}))
-                    for template in self.conf['down filter']:
-                        template = translate_template(template,
-                                                      self.name, self._client)
-                        sends.append(MessageTemplate(template))
-                    self.bus.register(self.name, 'WSClient', sends,
-                                      self.conf['up filter'], self._receive)
                     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'] = self.conf['down filter']
+                    conf_command['down filter'] = down_filter
                     json_command = json.dumps(conf_command)
                     await websocket.send(json_command)
                     await self.bus.send(Message(self.name,
@@ -190,7 +194,6 @@ class WSClient(BasePlugin):
                     await self.bus.send(Message(self.name,
                                                 {'event':
                                                  'connection closed'}))
-                    self.bus.unregister(self.name)
             except OSError:
                 pass
             await asyncio.sleep(1)