# HG changeset patch # User Goffi # Date 1619108441 -7200 # Node ID b977c74f9c850ca6cc98bc33a5bd15d6f2552f72 # Parent 9d9fb871a75cca6a6558a3d580ea7734607eb08b plugin XEP-0346: bridge method to retrieve template, submitted, or application namespaces diff -r 9d9fb871a75c -r b977c74f9c85 sat/plugins/plugin_xep_0346.py --- a/sat/plugins/plugin_xep_0346.py Thu Apr 22 18:19:52 2021 +0200 +++ b/sat/plugins/plugin_xep_0346.py Thu Apr 22 18:20:41 2021 +0200 @@ -95,6 +95,27 @@ async_=True, ) host.bridge.addMethod( + "psSchemaApplicationNSGet", + ".plugin", + in_sign="s", + out_sign="s", + method=self.getApplicationNS, + ) + host.bridge.addMethod( + "psSchemaTemplateNodeGet", + ".plugin", + in_sign="s", + out_sign="s", + method=self.getTemplateNS, + ) + host.bridge.addMethod( + "psSchemaSubmittedNodeGet", + ".plugin", + in_sign="s", + out_sign="s", + method=self.getSubmittedNS, + ) + host.bridge.addMethod( "psItemsFormGet", ".plugin", in_sign="ssssiassa{ss}s", @@ -122,6 +143,11 @@ namespace = namespace[len(TEMPLATE_PREFIX):] return namespace + def getTemplateNS(self, namespace: str) -> str: + """Returns node used for data template (i.e. schema)""" + app_ns = self.getApplicationNS(namespace) + return f"{TEMPLATE_PREFIX}{app_ns}" + def getSubmittedNS(self, namespace: str) -> str: """Returns node to use to submit forms""" return f"{SUBMITTED_PREFIX}{self.getApplicationNS(namespace)}" @@ -244,8 +270,7 @@ @param schema(domish.Element, None): schema to set None if schema need to be removed """ - app_ns = self.getApplicationNS(nodeIdentifier) - node_id = f"{TEMPLATE_PREFIX}{app_ns}" + node_id = self.getTemplateNS(nodeIdentifier) node_options = { self._p.OPT_ACCESS_MODEL: self._p.ACCESS_OPEN, self._p.OPT_PERSIST_ITEMS: 1, @@ -480,7 +505,7 @@ field.values = values_list - await self._p.sendItem( + return await self._p.sendItem( client, service, nodeIdentifier, form.toElement(), item_id, extra ) @@ -680,7 +705,7 @@ - 'updated' is set everytime @param extra(dict, None): same as for [XEP-0060.sendItem] with additional keys: - update(bool): if True, get previous item data to merge with current one - if True, item_id must be None + if True, item_id must be set @param form_ns (unicode, None): namespace of the form needed when an update is done @param default_node(unicode, None): value to use if node is not set