diff sat/plugins/plugin_exp_pubsub_schema.py @ 3271:abca25af06d7

plugin pubsub schema, tools (common/template xmlui): use a JID for publisher: - a JidWidget is used instead of text for publisher, nothing is set if publisher attribute doesn't exist - added missing JidWidget implementation in tools.common.template_xmlui
author Goffi <goffi@goffi.org>
date Mon, 18 May 2020 23:37:04 +0200
parents 6cf4bd6972c2
children 71761e9fb984
line wrap: on
line diff
--- a/sat/plugins/plugin_exp_pubsub_schema.py	Mon May 18 23:31:55 2020 +0200
+++ b/sat/plugins/plugin_exp_pubsub_schema.py	Mon May 18 23:37:04 2020 +0200
@@ -310,17 +310,23 @@
                 form = data_form.Form.fromElement(x_elt)
                 if form_ns and form.formNamespace != form_ns:
                     continue
+                prepend = [
+                    ("label", "id"),
+                    ("text", item_elt["id"], "id"),
+                    ("label", "publisher"),
+                ]
+                try:
+                    publisher = jid.JID(item_elt['publisher'])
+                except (KeyError, jid.InvalidFormat):
+                    pass
+                else:
+                    prepend.append(("jid", publisher, "publisher"))
                 xmlui = xml_tools.dataFormResult2XMLUI(
                     form,
                     schema_form,
                     # FIXME: conflicts with schema (i.e. if "id" or "publisher" already exists)
                     #        are not checked
-                    prepend=(
-                        ("label", "id"),
-                        ("text", item_elt["id"], "id"),
-                        ("label", "publisher"),
-                        ("text", item_elt.getAttribute("publisher", ""), "publisher"),
-                    ),
+                    prepend=prepend,
                     filters=filters,
                     read_only=False,
                 )