core (XMLUI): data form result now manage generic data set

This commit is contained in:
Goffi 2014-06-14 17:24:16 +02:00
commit 4bbf1e2be6

View file

@ -75,15 +75,13 @@ def _dataFormField2XMLUIData(field):
return widget_type, widget_args, widget_kwargs return widget_type, widget_args, widget_kwargs
def dataForm2Widgets(form_ui, form):
"""Complete an existing XMLUI with widget converted frot XEP-0004 data forms
def dataForm2XMLUI(form, submit_id, session_id=None): @param form_ui: XMLUI instance
"""Take a data form (xep-0004, Wokkel's implementation) and convert it to a SàT XML @param form: Wokkel's implementation of data form
@param submit_id: callback id to call when submitting form @return: completed xml_ui
@param session_id: id to return with the data
""" """
form_ui = XMLUI("form", "vertical", submit_id=submit_id, session_id=session_id)
if form.instructions: if form.instructions:
form_ui.addText('\n'.join(form.instructions), 'instructions') form_ui.addText('\n'.join(form.instructions), 'instructions')
@ -101,6 +99,15 @@ def dataForm2XMLUI(form, submit_id, session_id=None):
return form_ui return form_ui
def dataForm2XMLUI(form, submit_id, session_id=None):
"""Take a data form (xep-0004, Wokkel's implementation) and convert it to a SàT XML
@param submit_id: callback id to call when submitting form
@param session_id: id to return with the data
"""
form_ui = XMLUI("form", "vertical", submit_id=submit_id, session_id=session_id)
return dataForm2Widgets(form_ui, form)
def dataFormResult2AdvancedList(xmlui, form_xml): def dataFormResult2AdvancedList(xmlui, form_xml):
"""Take a raw data form (not parsed by XEP-0004) and convert it to an advanced list """Take a raw data form (not parsed by XEP-0004) and convert it to an advanced list
raw data form is used because Wokkel doesn't manage result items parsing yet raw data form is used because Wokkel doesn't manage result items parsing yet
@ -142,16 +149,20 @@ def dataFormResult2AdvancedList(xmlui, form_xml):
return xmlui return xmlui
def dataFormResult2XMLUI(form_xml, session_id=None): def dataFormResult2XMLUI(form_elt, session_id=None):
"""Take a raw data form (not parsed by XEP-0004) and convert it to a SàT XMLUI """Take a raw data form (not parsed by XEP-0004) and convert it to a SàT XMLUI
raw data form is used because Wokkel doesn't manage result items parsing yet raw data form is used because Wokkel doesn't manage result items parsing yet
@param form_xml: domish.Element of the data form @param form_elt: domish.Element of the data form
@return: XMLUI interface @return: XMLUI interface
""" """
xmlui = XMLUI("window", "vertical", session_id=session_id) xml_ui = XMLUI("window", "vertical", session_id=session_id)
dataFormResult2AdvancedList(xmlui, form_xml) try:
return xmlui dataFormResult2AdvancedList(xml_ui, form_elt)
except exceptions.DataError:
parsed_form = data_form.Form.fromElement(form_elt)
dataForm2Widgets(xml_ui, parsed_form)
return xml_ui
def _cleanValue(value): def _cleanValue(value):
"""Workaround method to avoid DBus types with D-Bus bridge """Workaround method to avoid DBus types with D-Bus bridge