def test_default_is_dynamic_return_value(self): """Should find expected return value for each case passed to default_is_dynamic.""" for c in (*self.case_data, *self.case_data_extras): with self.subTest(msg=repr(c)): self.assertEqual( c.is_dynamic, utils.default_is_dynamic(element_default=c.q_default, element_type=c.q_type), )
def xml_instance(self, **kwargs): survey = self.get_root() attributes = {} attributes.update(self.get("instance", {})) for key, value in attributes.items(): attributes[key] = survey.insert_xpaths(value, self) if self.get("default") and not default_is_dynamic(self.default, self.type): return node(self.name, unicode(self.get("default")), **attributes) return node(self.name, **attributes)
def get_setvalue_node_for_dynamic_default(self, in_repeat=False): if not self.default or not default_is_dynamic(self.default, self.type): return None default_with_xpath_paths = self.get_root().insert_xpaths( self.default, self) triggering_events = "odk-instance-first-load" if in_repeat: triggering_events = triggering_events + " odk-new-repeat" return node( "setvalue", ref=self.get_xpath(), value=default_with_xpath_paths, event=triggering_events, )
def xml_dynamic_default(self, in_binding=False): if not self.default or not default_is_dynamic(self.default, self.type): return if self.parent.__class__.__name__ == "Survey" and in_binding: default_handler = {"event": "odk-instance-first-load"} return node("setvalue", ref=self.get_xpath(), value=self.default, **default_handler) if self.parent.__class__.__name__ != "Survey" and not in_binding: default_handler = { "event": "odk-instance-first-load odk-new-repeat" } return node("setvalue", ref=self.get_xpath(), value=self.default, **default_handler)
def xml_dynamic_default(self): if not self.default or not default_is_dynamic(self.default, self.type): return default_with_xpaths = self.get_root().insert_xpaths(self.default, self) if self.parent.__class__.__name__ in ["Survey", "GroupedSection"]: default_handler = {"event": "odk-instance-first-load"} return node("setvalue", ref=self.get_xpath(), value=default_with_xpaths, **default_handler) if self.parent.__class__.__name__ == "RepeatingSection": default_handler = { "event": "odk-instance-first-load odk-new-repeat" } return node("setvalue", ref=self.get_xpath(), value=default_with_xpaths, **default_handler)