diff src/tools/xml_tools.py @ 1530:94cd4d242dc5

core (XMLUI): restorer submit_id: - submit_id was missing due to a previous change in commit a2e4b976e707 - XMLUI.submit_id can now be None (not set) or empty string in addition to normal values fix bug 102
author Goffi <goffi@goffi.org>
date Sat, 26 Sep 2015 15:00:27 +0200
parents d2ab9c62ac3a
children 51dec65ec62c
line wrap: on
line diff
--- a/src/tools/xml_tools.py	Sat Sep 26 14:24:33 2015 +0200
+++ b/src/tools/xml_tools.py	Sat Sep 26 15:00:27 2015 +0200
@@ -1065,7 +1065,7 @@
         @param submit_id: callback id to call for panel_type we can submit (form, param, dialog)
         @param session_id: use to keep a session attached to the dialog, must be returned by frontends
         """
-        self._introspect()
+        self._introspect() # FIXME: why doing that on each XMLUI ? should be done once
         if panel_type not in [C.XMLUI_WINDOW, C.XMLUI_FORM, C.XMLUI_PARAM, C.XMLUI_POPUP, C.XMLUI_DIALOG]:
             raise exceptions.DataError(_("Unknown panel type [%s]") % panel_type)
         if panel_type == C.XMLUI_FORM and submit_id is None:
@@ -1082,7 +1082,7 @@
         top_element.setAttribute("type", panel_type)
         if title:
             top_element.setAttribute("title", title)
-        self._submit_id = submit_id
+        self.submit_id = submit_id
         self.session_id = session_id
         if panel_type == C.XMLUI_DIALOG:
             if dialog_opt is None:
@@ -1133,8 +1133,12 @@
     @property
     def submit_id(self):
         top_element = self.doc.documentElement
+        if not top_element.hasAttribute("submit"):
+            # getAttribute never return None (it return empty string it attribute doesn't exists)
+            # so we have to manage None here
+            return None
         value = top_element.getAttribute("submit")
-        return value or None
+        return value
 
     @submit_id.setter
     def submit_id(self, value):
@@ -1168,7 +1172,7 @@
 
     def _createDialog(self, dialog_opt):
         dialog_type = dialog_opt.setdefault(C.XMLUI_DATA_TYPE, C.XMLUI_DIALOG_MESSAGE)
-        if dialog_type in [C.XMLUI_DIALOG_CONFIRM, C.XMLUI_DIALOG_FILE] and self._submit_id is None:
+        if dialog_type in [C.XMLUI_DIALOG_CONFIRM, C.XMLUI_DIALOG_FILE] and self.submit_id is None:
             raise exceptions.InternalError(_("Submit ID must be filled for this kind of dialog"))
         top_element = TopElement(self)
         level = dialog_opt.get(C.XMLUI_DATA_LVL)
@@ -1253,7 +1257,7 @@
     @param profile: %(doc_profile)s
     @return (data): a deferred which fire the data
     """
-    assert xmlui._submit_id == '' # xmlui.submit_id can't be the empty string, but xmlui._submit_id must here
+    assert xmlui.submit_id == ''
     xmlui_d = defer.Deferred()
 
     def onSubmit(data, profile):