Mercurial > libervia-backend
changeset 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 | 0c3b7ee2628f |
children | 4c98f4972db5 |
files | sat/plugins/plugin_exp_pubsub_schema.py sat/tools/common/template_xmlui.py |
diffstat | 2 files changed, 24 insertions(+), 10 deletions(-) [+] |
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, )
--- a/sat/tools/common/template_xmlui.py Mon May 18 23:31:55 2020 +0200 +++ b/sat/tools/common/template_xmlui.py Mon May 18 23:37:04 2020 +0200 @@ -22,11 +22,10 @@ XMLUI classes from this modules can then be iterated to create the template """ +from functools import partial from sat.core.log import getLogger - -log = getLogger(__name__) from sat_frontends.tools import xmlui -from functools import partial +from sat_frontends.tools import jid try: from jinja2 import Markup as safe except ImportError: @@ -35,6 +34,9 @@ safe = lambda x: x +log = getLogger(__name__) + + ## Widgets ## @@ -119,6 +121,13 @@ type = "text" +class JidWidget(xmlui.JidWidget, ValueWidget): + type = "jid" + + def __init__(self, xmlui_parent, value): + self.value = jid.JID(value) + + class LabelWidget(xmlui.LabelWidget, ValueWidget): type = "label" @@ -137,7 +146,6 @@ class JidInputWidget(xmlui.JidInputWidget, StringWidget): type = "jid" - class TextBoxWidget(xmlui.TextWidget, InputWidget): type = "textbox"