def inject_data_service():
    target_code = flask.request.args.get("input", "")
    names = parse_ljsl.find_names(target_code)

    reg_maps = ljmmm.get_device_modbus_maps(expand_names=True, inc_orig=True)

    not_found_reg_names = []
    tag_class_tuples = lj_scribe.find_classes_from_map(names, reg_maps, not_found_reg_names)

    tag_subtags_by_class = lj_scribe.fia_organize_tag_by_class(tag_class_tuples)

    target_code = lj_scribe.fix_not_found_reg_names(target_code, not_found_reg_names)

    original_names = map(lj_scribe.find_original_tag_str, names)

    summaries = map(lambda x: lj_scribe.render_tag_summary(*x), zip(tag_subtags_by_class, names, original_names))

    original_names_to_summaries = zip(original_names, summaries)

    for (original_name, summary) in original_names_to_summaries:
        target_code = target_code.replace(original_name, summary)

    prefix = flask.render_template("scribe_prefix.html")
    postfix = flask.render_template("scribe_postfix.html")
    return prefix + target_code + postfix
Esempio n. 2
0
def render_scribe(target_code, expand=False):
    names = parse_ljsl.find_names(target_code)

    not_found_reg_names = []
    tag_class_tuples = lj_scribe.find_classes_from_map(
        names,
        reg_maps,
        not_found_reg_names
    )

    tag_subtags_by_class = lj_scribe.fia_organize_tag_by_class(tag_class_tuples)

    target_code = lj_scribe.fix_not_found_reg_names(
        target_code,
        not_found_reg_names,

    )

    original_names = map(lj_scribe.find_original_tag_str, names)

    summaries = map(
        lambda x: lj_scribe.render_tag_summary(*x ,expand=expand),
        zip(tag_subtags_by_class, names, original_names)
    )

    original_names_to_summaries = zip(original_names, summaries)

    for (original_name, summary) in original_names_to_summaries:
        target_code = target_code.replace(original_name, summary)

    prefix = flask.render_template("scribe_prefix.html")
    postfix = flask.render_template("scribe_postfix.html")
    return prefix + target_code + postfix
def render_scribe(target_code):
    names = parse_ljsl.find_names(target_code)

    not_found_reg_names = []
    tag_class_tuples = lj_scribe.find_classes_from_map(
        names,
        reg_maps,
        not_found_reg_names
    )

    tag_subtags_by_class = lj_scribe.fia_organize_tag_by_class(tag_class_tuples)

    target_code = lj_scribe.fix_not_found_reg_names(
        target_code,
        not_found_reg_names
    )

    original_names = map(lj_scribe.find_original_tag_str, names)

    summaries = map(
        lambda x: lj_scribe.render_tag_summary(*x),
        zip(tag_subtags_by_class, names, original_names)
    )

    original_names_to_summaries = zip(original_names, summaries)

    for (original_name, summary) in original_names_to_summaries:
        target_code = target_code.replace(original_name, summary)

    prefix = flask.render_template("scribe_prefix.html")
    postfix = flask.render_template("scribe_postfix.html")
    return prefix + target_code + postfix
def inject_data():
    """Controls to Inject data about register records into an HTML template.

    @return: HTML form through which the HTML template can be filled and
        rendered.
    @rtype: str or flask response (redirect)
    """
    if flask.request.method == "GET":
        return flask.render_template("inject_data.html")

    target_code = flask.request.form.get("input", "")
    names = parse_ljsl.find_names(target_code)

    reg_maps = ljmmm.get_device_modbus_maps(expand_names=True, inc_orig=True)
    dev_regs = reg_maps[lj_scribe.TARGET_DEVICE]

    tag_class_tuples = 0
    tag_subtags_by_class = 0

    # This is NOT the best way to fix this issue.
    # The code should use lj_scribe.TARGET_DEVICES!!!

    try:
        tag_class_tuples = lj_scribe.find_classes(names, dev_regs)
    except lj_scribe.RegisterNotFoundError as e:
        dev_regs = reg_maps[lj_scribe.TARGET_DEVICE_DIGIT]
        try:
            tag_class_tuples = lj_scribe.find_classes(names, dev_regs)

            tag_subtags_by_class = lj_scribe.organize_tag_by_class(tag_class_tuples, dev_regs)
        except lj_scribe.RegisterNotFoundError as e:
            return "Register %s not found in Modbus map." % e.missing_reg_name

    tag_subtags_by_class = lj_scribe.organize_tag_by_class(tag_class_tuples, dev_regs)

    original_names = map(lj_scribe.find_original_tag_str, names)

    summaries = map(lambda x: lj_scribe.render_tag_summary(*x), zip(tag_subtags_by_class, names, original_names))

    original_names_to_summaries = zip(original_names, summaries)

    for (original_name, summary) in original_names_to_summaries:
        target_code = target_code.replace(original_name, summary)

    prefix = flask.render_template("scribe_prefix.html")
    postfix = flask.render_template("scribe_postfix.html")
    return prefix + target_code + postfix
Esempio n. 5
0
    def test_render_tag_summary(self):
        with TEST_APP.test_request_context("/"):
            special_tag = parse_ljsl.TagComponent("", "PRE_", 100, 4, 3,
                "_POST", True, [])
            str_summary = lj_scribe.render_tag_summary(
                TEST_TAG_BY_CLASS_NAMES,
                [
                    special_tag,
                    ANOTHER_ORIG_TAG,
                    NO_LJMMM_ORIG_TAG
                ],
                "ORIG_TAG"
            )

        self.assertEqual(str_summary.count("class-summary"), 3)
        self.assertEqual(str_summary.count("sub-tag"), 3)
        self.assertEqual(str_summary.count("individual-name"), 6)
        self.assertEqual(str_summary.count("individual-address"), 6)
        self.assertEqual(str_summary.count("ORIG_TAG"), 1)