def wrapper(xlsform_path):
    """
    Return image generation result, including any stderr / stdout content.

    Calls write_images using the supplied xlsform_path.
    - XLSForm path is always required.

    If the paths is not resolved, error message boxes are opened to
    indicate this clearly to the user.

    Parameters.
    :param xlsform_path: str. Path to XLSForm to convert.
    :return: tuple (output header message, message content)
    """
    try:
        valid_xlsform_path = utils.validate_path("XLSForm path", xlsform_path,
                                                 ".xlsx")
        header = "Generate Images task was run. Output below."
        images_log = logging.getLogger('odk_tools.question_images.images')
        images_log.setLevel("DEBUG")
        log_capture = CapturingHandler(logger=images_log)
        content = log_capture.watcher.output
        images.write_images(xlsform_path=valid_xlsform_path)
    except Exception as e:
        header = "Generate Images task not run. Error(s) below."
        content = str(e)
    result = utils.format_output(header=header, content=content)
    return result
def wrapper(xlsform_path):
    """
    Return image generation result, including any stderr / stdout content.

    Calls write_images using the supplied xlsform_path.
    - XLSForm path is always required.

    If the paths is not resolved, error message boxes are opened to
    indicate this clearly to the user.

    Parameters.
    :param xlsform_path: str. Path to XLSForm to convert.
    :return: tuple (output header message, message content)
    """
    try:
        valid_xlsform_path = utils.validate_path(
            "XLSForm path", xlsform_path, ".xlsx")
        header = "Generate Images task was run. Output below."
        images_log = logging.getLogger('odk_tools.question_images.images')
        images_log.setLevel("DEBUG")
        log_capture = CapturingHandler(logger=images_log)
        content = log_capture.watcher.output
        images.write_images(xlsform_path=valid_xlsform_path)
    except Exception as e:
        header = "Generate Images task not run. Error(s) below."
        content = str(e)
    result = utils.format_output(header=header, content=content)
    return result
def wrapper(xlsform_path):
    """
    Return XLS2XForm result, including any generated warnings.

    Calls xls2xform_convert using the supplied xlsform_path.
    - XLSForm path is always required.
    - If xform_path is blank, use the XLSForm filename and path.

    If any of the paths end up not being resolved, error message boxes are
    opened to indicate this clearly to the user.

    Parameters.
    :param xlsform_path: str. Path to XLSForm to convert.
    :return: tuple (output header message, message content)
    """
    xform_path_used = None
    xlsform_path_used = None
    try:
        header = "Generate XForm task was run. Output below."
        valid_xlsform_path = utils.validate_path(
            "XLSForm path", xlsform_path, ".xlsx")
        valid_xform_path = valid_xlsform_path.replace(".xlsx", ".xml")
        content = xls2xform_convert(
            xlsform_path=valid_xlsform_path, xform_path=valid_xform_path,
            validate=False)
        content.append(xform_patch.xform_empty_question_label_patch(
            valid_xform_path))
    except Exception as e:
        header = "Generate XForm task not run. Error(s) below."
        content = str(e)
    else:
        xform_path_used = valid_xform_path
        xlsform_path_used = valid_xlsform_path
    result = utils.format_output(header=header, content=content)
    return result, xform_path_used, xlsform_path_used
Exemple #4
0
def wrapper(xlsform_path):
    """
    Return XLS2XForm result, including any generated warnings.

    Calls xls2xform_convert using the supplied xlsform_path.
    - XLSForm path is always required.
    - If xform_path is blank, use the XLSForm filename and path.

    If any of the paths end up not being resolved, error message boxes are
    opened to indicate this clearly to the user.

    Parameters.
    :param xlsform_path: str. Path to XLSForm to convert.
    :return: tuple (output header message, message content)
    """
    xform_path_used = None
    xlsform_path_used = None
    try:
        header = "Generate XForm task was run. Output below."
        valid_xlsform_path = utils.validate_path("XLSForm path", xlsform_path,
                                                 ".xlsx")
        valid_xform_path = valid_xlsform_path.replace(".xlsx", ".xml")
        content = xls2xform_convert(xlsform_path=valid_xlsform_path,
                                    xform_path=valid_xform_path,
                                    validate=False)
        content.append(
            xform_patch.xform_empty_question_label_patch(valid_xform_path))
    except Exception as e:
        header = "Generate XForm task not run. Error(s) below."
        content = str(e)
    else:
        xform_path_used = valid_xform_path
        xlsform_path_used = valid_xlsform_path
    result = utils.format_output(header=header, content=content)
    return result, xform_path_used, xlsform_path_used
Exemple #5
0
def wrapper(java_path, validate_path, xform_path):
    """
    Return ODK_Validate result, guessing at java and odk_validate location.

    Calls ODK_Validate.jar using Java and the supplied XForm XML path.
    - If java_path is blank, try to find it from JAVA_HOME environment var.
    - If validate_path is blank, try to find it in the current directory.
    - XForm path is always required.

    If any of the paths end up not being resolved, error message boxes are
    opened to indicate this clearly to the user.

    Parameters.
    :param java_path: str. Path to java binary.
    :param validate_path: str. Path to ODK_Validate.jar.
    :param xform_path: str. Path to XForm XML file to validate.
    :return: tuple (output header message, message content)
    """
    try:
        header = "Validate XForm task was run. Output below."
        if len(java_path) == 0:
            valid_java_path = _get_callable_java_path(
                popen_kwargs=get_popen_kwargs())
        else:
            valid_java_path = utils.validate_path("Java path", java_path,
                                                  ".exe")
        if len(validate_path) == 0:
            validate_path = _locate_odk_validate()
        valid_validate_path = utils.validate_path("ODK_Validate path",
                                                  validate_path, ".jar")
        valid_xform_path = utils.validate_path("XForm path", xform_path,
                                               ".xml")

        cmd = ['java', '-jar', valid_validate_path, valid_xform_path]
        env = {'PATH': valid_java_path}
        content = _call_odk_validate(cmd=cmd,
                                     env=env,
                                     popen_kwargs=get_popen_kwargs())
    except Exception as e:
        header = "Validate XForm task not run. Error(s) below."
        content = str(e)
    result = utils.format_output(header=header, content=content)
    return result
def wrapper(xform_path, sitelangs_path, nest_in_odk_folders,
            collect_settings=None):
    """
    Return edition generation result, including any stderr / stdout content.

    If the paths is not resolved, error message boxes are opened to
    indicate this clearly to the user.

    Parameters.
    :param xform_path: str. Path to XLSForm to convert.
    :param sitelangs_path: str. Path to site languages spreadsheet.
    :param nest_in_odk_folders: int. 1=yes, 0=no. Nest in /odk/forms/*.
    :param collect_settings: Path to collect.settings file to include
        in nested output folders.
    :return: tuple (output header message, message content)
    """
    try:
        header = "Generate Editions task was run. Output below."
        valid_xform_path = utils.validate_path("XForm path", xform_path, ".xml")
        valid_sitelang_path = utils.validate_path(
            "Site Languages path", sitelangs_path, ".xlsx")
        if collect_settings is None:
            collect_settings = ""

        if len(collect_settings) == 0:
                valid_settings, valid_settings_path = True, None
        else:
            valid_settings_path = utils.validate_path(
                "Collect settings path", collect_settings, ".settings")
        editions_log = logging.getLogger('odk_tools.language_editions.editions')
        editions_log.setLevel('DEBUG')
        log_capture = CapturingHandler(logger=editions_log)
        content = log_capture.watcher.output
        Editions.write_language_editions(
            xform_path=valid_xform_path,
            site_languages=valid_sitelang_path,
            nest_in_odk_folders=nest_in_odk_folders,
            collect_settings=valid_settings_path)
    except Exception as e:
        header = "Generate Editions task not run. Error(s) below."
        content = str(e)
    result = utils.format_output(header=header, content=content)
    return result
Exemple #7
0
 def test_format_output_with_content_list(self):
     header = "Something happened!"
     content = ["And it was mysterious.", "And it was scary."]
     expected = len(header) + 2 + len(content[0]) + 2 + len(content[1])
     observed = len(utils.format_output(header=header, content=content))
     self.assertEqual(expected, observed)
Exemple #8
0
 def test_format_output_with_content_string(self):
     header = "Something happened!"
     content = "And it was mysterious."
     expected = len(header) + 2 + len(content)
     observed = len(utils.format_output(header=header, content=content))
     self.assertEqual(expected, observed)
 def test_format_output_with_content_list(self):
     header = "Something happened!"
     content = ["And it was mysterious.", "And it was scary."]
     expected = len(header) + 2 + len(content[0]) + 2 + len(content[1])
     observed = len(utils.format_output(header=header, content=content))
     self.assertEqual(expected, observed)
 def test_format_output_with_content_string(self):
     header = "Something happened!"
     content = "And it was mysterious."
     expected = len(header) + 2 + len(content)
     observed = len(utils.format_output(header=header, content=content))
     self.assertEqual(expected, observed)