コード例 #1
0
    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)
コード例 #2
0
    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]
コード例 #3
0
    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]
コード例 #4
0
    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]
コード例 #5
0
    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]
コード例 #6
0
    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]