def _update_xform_with_select_external_question(self, xform, external_choice_question): if external_choice_question.parent_field_code: parent_node = self._get_parent_node( xform.get_body_node(), external_choice_question.parent_field_code) xform_node = get_node(parent_node, external_choice_question.code) else: xform_node = get_node(xform.get_body_node(), external_choice_question.code) query_string = xform_node.attrib['query'] id = re.search("(instance\('(.+?)('\)))", query_string).group(2) instance_node = ET.Element("instance", { "id": id, "src": "jr://file-csv/itemsets.csv" }) model_node = xform._model_node() add_node(model_node, instance_node) xform_bind_node = xform.bind_node(xform_node) xform_bind_node.attrib['type'] = 'select1' itemset_node = ET.Element("itemset", {"nodeset": query_string}) value_node = ET.Element("value", {"ref": "name"}) label_node = ET.Element("label", {"ref": "label"}) add_node(itemset_node, value_node) add_node(itemset_node, label_node) add_node(xform_node, itemset_node) remove_attrib(xform_node, "query") xform_node.tag = re.sub('input', 'select1', xform_node.tag)
def edit(self, node, old_field, new_field, old_xform, new_xform, activity_log_detail): bind_node = old_xform.bind_node(node) if bind_node is not None and new_field.constraint_message != old_field.constraint_message: if new_field.constraint_message: add_attrib(bind_node, 'constraintMsg', new_field.constraint_message) else: remove_attrib(bind_node, 'constraintMsg') activity_log_detail["constraint_message_changed"] = [old_field.label] if activity_log_detail.get("constraint_message_changed") is None \ else activity_log_detail.get("constraint_message_changed") + [old_field.label]
def edit(self, node, old_field, new_field, old_xform, new_xform, activity_log_detail): bind_node = old_xform.bind_node(node) if bind_node is not None and new_field.relevant != old_field.relevant: if new_field.relevant: relevant = replace_node_name_with_xpath(new_field.relevant, old_xform) add_attrib(bind_node, 'relevant', relevant) else: remove_attrib(bind_node, 'relevant') activity_log_detail["relevant_changed"] = [old_field.label] if activity_log_detail.get("relevant_changed") is None \ else activity_log_detail.get("relevant_changed") + [old_field.label]
def edit(self, node, old_field, new_field, old_xform, new_xform, activity_log_detail): bind_node = old_xform.bind_node(node) if bind_node is not None: if new_field.is_required() and not old_field.is_required(): add_attrib(bind_node, 'required', 'true()') activity_log_detail["required_changed"] = [old_field.label] if activity_log_detail.get("required_changed") is None \ else activity_log_detail.get("required_changed") + [old_field.label] elif not new_field.is_required() and old_field.is_required(): remove_attrib(bind_node, 'required') activity_log_detail["required_changed"] = [old_field.label] if activity_log_detail.get("required_changed") is None \ else activity_log_detail.get("required_changed") + [old_field.label]
def edit(self, node, old_field, new_field, old_xform, new_xform, activity_log_detail): if bool(new_field.appearance ) and node.get("appearance") != new_field.appearance: add_attrib(node, "appearance", new_field.appearance) activity_log_detail["appearance_changed"] = [old_field.label] if activity_log_detail.get("appearance_changed") is None \ else activity_log_detail.get("appearance_changed") + [old_field.label] if not bool(new_field.appearance) and bool(node.get("appearance")): remove_attrib(node, "appearance") activity_log_detail["appearance_changed"] = [old_field.label] if activity_log_detail.get("appearance_changed") is None \ else activity_log_detail.get("appearance_changed") + [old_field.label]
def edit(self, node, old_field, new_field, old_xform, new_xform, activity_log_detail): bind_node = old_xform.bind_node(node) if bind_node is not None and new_field.xform_constraint != old_field.xform_constraint: xform_constraint = new_field.xform_constraint if xform_constraint: if "${" in xform_constraint: xform_constraint = replace_node_name_with_xpath(xform_constraint, old_xform) add_attrib(bind_node, 'constraint', xform_constraint) else: remove_attrib(bind_node, 'constraint') activity_log_detail["constraint_changed"] = [old_field.label] if activity_log_detail.get("constraint_changed") is None \ else activity_log_detail.get("constraint_changed") + [old_field.label]