changeset 3993:722c25818778

plugin XEP-0470: create a default configuration if node config can't be accessed
author Goffi <goffi@goffi.org>
date Mon, 05 Dec 2022 11:54:47 +0100 (2022-12-05)
parents 1c84268752a1
children 69d970f974ff
files sat/plugins/plugin_xep_0060.py sat/plugins/plugin_xep_0470.py
diffstat 2 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0060.py	Fri Nov 25 16:34:09 2022 +0100
+++ b/sat/plugins/plugin_xep_0060.py	Mon Dec 05 11:54:47 2022 +0100
@@ -961,6 +961,14 @@
         d.addCallback(cb)
         return d
 
+    def make_configuration_form(self, options: dict) -> data_form.Form:
+        """Build a configuration form"""
+        form = data_form.Form(
+            formType="submit", formNamespace=pubsub.NS_PUBSUB_NODE_CONFIG
+        )
+        form.makeFields(options)
+        return form
+
     def _setNodeConfiguration(self, service_s, nodeIdentifier, options, profile_key):
         client = self.host.getClient(profile_key)
         d = self.setConfiguration(
@@ -973,10 +981,7 @@
         request.recipient = service
         request.nodeIdentifier = nodeIdentifier
 
-        form = data_form.Form(
-            formType="submit", formNamespace=pubsub.NS_PUBSUB_NODE_CONFIG
-        )
-        form.makeFields(options)
+        form = self.make_configuration_form(options)
         request.options = form
 
         d = request.send(client.xmlstream)
--- a/sat/plugins/plugin_xep_0470.py	Fri Nov 25 16:34:09 2022 +0100
+++ b/sat/plugins/plugin_xep_0470.py	Mon Dec 05 11:54:47 2022 +0100
@@ -194,6 +194,8 @@
                     client, service, node
                 )
                 node_config = await self._p.getConfiguration(client, service, node)
+            elif e.condition == "forbidden":
+                node_config = self._p.make_configuration_form({})
             else:
                 raise e
         try: