Esempio n. 1
0
    def to_html(self, lang, **kwargs):
        """Convert repeat group components to html and return concatenation.

        Args:
            lang (str): The language.


            **kwargs: Keyword arguments.

        Returns:
            str: A rendered html concatenation of component templates.
        """
        html = ""

        # - Render header
        html += self.render_header(self.row, lang, **kwargs)

        # - Render body
        for i in self.data:
            if exclusion(item=i, settings=kwargs):
                continue

            if isinstance(i, OdkPrompt):
                i.row["in_repeat"] = True
                html += i.to_html(lang, **kwargs)
            elif isinstance(i, OdkGroup):
                i.in_repeat = True
                html += i.to_html(lang, **kwargs)
            elif isinstance(i, OdkTable):
                i.in_repeat = True
                # - Render footer
                html += i.to_html(lang, **kwargs)
        html += self.render_footer()

        return html
Esempio n. 2
0
    def to_html(self, lang, **kwargs):
        """Convert to html.

        Args:
            lang (place): The language.
            highlighting (bool): Displays highlighted sub-sections if True.
            **kwargs: Keyword arguments.

        Returns:
            str: A rendered html template.
        """
        # - Render header
        self.set_header_and_contents(lang, **kwargs)
        table = list()
        table.append(self.header.row)

        # - Render body
        for i in self.contents:
            if exclusion(item=i, settings=kwargs):
                continue

            table.append(i.row)

        # pylint: disable=no-member
        return TEMPLATE_ENV.get_template("content/table/table.html").render(
            table=table, lang=lang, **kwargs, settings=kwargs)
Esempio n. 3
0
    def to_html(self, lang, **kwargs):
        """Convert group components to html and return concatenation.

        Args:
            lang (str): The language.

        Returns:
            str: A rendered html concatenation of component templates.
        """
        html = ""
        # pylint: disable=no-member

        # - Render header
        html += TEMPLATE_ENV.get_template(
            "content/group/group-opener.html").render(**kwargs,
                                                      settings=kwargs)
        header = self.format_header(self.row)

        html += OdkPrompt(header).to_html(lang, **kwargs)

        # - Render body
        for i in self.data:
            row = i.data[0] if isinstance(i, OdkTable) else i
            if exclusion(item=row, settings=kwargs):
                continue

            if isinstance(i, OdkPrompt):
                i.row["in_repeat"] = self.in_repeat
                i.row["in_group"] = True
                html += i.to_html(lang, **kwargs)
            elif isinstance(i, OdkTable):
                i.in_repeat = self.in_repeat
                html += i.to_html(lang, **kwargs)

        # - Render footer
        # pylint: disable=no-member
        html += TEMPLATE_ENV.get_template(
            "content/group/group-closer.html").render(**kwargs,
                                                      settings=kwargs)

        return html
Esempio n. 4
0
    def to_html(self, lang, highlighting, **kwargs):
        """Convert group components to html and return concatenation.

        Args:
            lang (str): The language.
            highlighting (bool): For color highlighting of various components
                of html template.

        Returns:
            str: A rendered html concatenation of component templates.
        """
        html = ''
        # pylint: disable=no-member

        # - Render header
        html += TEMPLATE_ENV.get_template('content/group/group-opener.html')\
            .render(**kwargs)
        header = self.format_header(self.opener)

        html += OdkPrompt(header).to_html(lang, highlighting, **kwargs)

        # - Render body
        for i in self.data:
            if exclusion(item=i, settings=kwargs):
                continue

            if isinstance(i, OdkPrompt):
                i.row['in_repeat'] = self.in_repeat
                i.row['in_group'] = True
                html += i.to_html(lang, highlighting, **kwargs)
            elif isinstance(i, OdkTable):
                i.in_repeat = self.in_repeat
                html += i.to_html(lang, highlighting, **kwargs)

        # - Render footer
        # pylint: disable=no-member
        html += TEMPLATE_ENV.get_template('content/group/group-closer.html')\
            .render(**kwargs)

        return html
Esempio n. 5
0
    def to_html(self, lang=None, **kwargs):
        """Get the JSON representation of an entire XLSForm.

        Args:
            lang (str): The language.
            **highlight (bool): For color highlighting of various components

            **debug (bool): For inclusion of debug information to be printed
                in the JavaScript console.

        Returns:
            str: A detailed HTML representation of the XLSForm.
        """
        render_calculates = True
        language = lang if lang else self.language
        debug = True if "debug" in kwargs and kwargs["debug"] else False
        html_questionnaire = ""
        qre = self.questionnaire
        if "template" not in kwargs:
            kwargs["template"] = "standard"
        if kwargs["template"] == "standard":
            name_to_q_nums = OdkForm._get_name_to_q_num_map(qre)
            qre = OdkForm._set_name_refs_to_q_nums(qre, name_to_q_nums)
            # render_calculates = False
        data = {
            "header": {
                "title":
                self.get_title(settings=self.settings,
                               wb=self.metadata["raw_data"],
                               lang=lang)
            },
            "footer": {
                "data": self.to_json(pretty=True) if debug else "false"
            },
            "questionnaire": qre,
        }

        # - Render Header
        # pylint: disable=no-member
        header = TEMPLATE_ENV.get_template("header.html").render(
            data=data["header"],
            render_image=False if kwargs["format"] == "doc" else True,
            **kwargs,
            settings=kwargs)
        # pylint: disable=no-member
        grp_spc = TEMPLATE_ENV.get_template(
            "content/group/group-spacing.html").render()
        html_questionnaire += header

        # - Render Body
        prev_item = None
        for index, item in enumerate(data["questionnaire"]):
            if exclusion(item=item, settings=kwargs):
                continue
            if isinstance(item, OdkCalculate):
                item.renderable = render_calculates
            if prev_item is not None and isinstance(item, OdkGroup):
                html_questionnaire += grp_spc
            elif isinstance(prev_item,
                            OdkGroup) and not isinstance(item, OdkGroup):
                html_questionnaire += grp_spc
            if (isinstance(item, OdkPrompt)
                    and item.is_section_header and isinstance(
                        data["questionnaire"][index + 1], OdkGroup)):
                html_questionnaire += item.to_html(lang=language,
                                                   **kwargs,
                                                   bottom_border=True)
            else:
                html = item.to_html(lang=language, **kwargs)
                html_questionnaire += html
            prev_item = item

        # pylint: disable=no-member
        footer = TEMPLATE_ENV.get_template("footer.html").render(
            info=None,
            warnings="false",  # to-do: no warnings yet
            data=data["footer"]["data"],
            **kwargs,
            settings=kwargs)
        html_questionnaire += footer

        return html_questionnaire
Esempio n. 6
0
    def to_html(self, lang=None, **kwargs):
        """Get the JSON representation of an entire XLSForm.

        Args:
            lang (str): The language.
            **highlight (bool): For color highlighting of various components

            **debug (bool): For inclusion of debug information to be printed
                in the JavaScript console.

        Returns:
            str: A detailed HTML representation of the XLSForm.
        """
        render_calculates = True
        language = lang if lang else self.language
        debug = True if 'debug' in kwargs and kwargs['debug'] else False
        html_questionnaire = ''
        qre = self.questionnaire
        if 'template' not in kwargs:
            kwargs['template'] = 'standard'
        if kwargs['template'] == 'standard':
            name_to_q_nums = OdkForm._get_name_to_q_num_map(qre)
            qre = OdkForm._set_name_refs_to_q_nums(qre, name_to_q_nums)
            # render_calculates = False
        data = {
            'header': {
                'title':
                self.get_title(settings=self.settings,
                               wb=self.metadata['raw_data'],
                               lang=lang)
            },
            'footer': {
                'data': self.to_json(pretty=True) if debug else 'false'
            },
            'questionnaire': qre
        }

        # - Render Header
        # pylint: disable=no-member
        header = TEMPLATE_ENV.get_template('header.html').render(
            data=data['header'],
            render_image=False if kwargs['format'] == 'doc' else True,
            **kwargs,
            settings=kwargs)
        # pylint: disable=no-member
        grp_spc = TEMPLATE_ENV\
            .get_template('content/group/group-spacing.html').render()
        html_questionnaire += header

        # - Render Body
        prev_item = None
        for index, item in enumerate(data['questionnaire']):
            if exclusion(item=item, settings=kwargs):
                continue
            if isinstance(item, OdkCalculate):
                item.renderable = render_calculates
            if prev_item is not None and isinstance(item, OdkGroup):
                html_questionnaire += grp_spc
            elif isinstance(prev_item, OdkGroup) \
                    and not isinstance(item, OdkGroup):
                html_questionnaire += grp_spc
            if isinstance(item, OdkPrompt) and item.is_section_header and \
                    isinstance(data['questionnaire'][index+1], OdkGroup):
                html_questionnaire += \
                    item.to_html(lang=language, **kwargs, bottom_border=True)
            else:
                html = item.to_html(lang=language, **kwargs)
                html_questionnaire += html
            prev_item = item

        # pylint: disable=no-member
        footer = TEMPLATE_ENV.get_template('footer.html')\
            .render(info=None, warnings='false',  # to-do: no warnings yet
                    data=data['footer']['data'], **kwargs, settings=kwargs)
        html_questionnaire += footer

        return html_questionnaire
Esempio n. 7
0
    def to_html(self, lang=None, **kwargs):
        """Get the JSON representation of an entire XLSForm.

        Args:
            lang (str): The language.
            **highlight (bool): For color highlighting of various components
                of html template.
            **debug (bool): For inclusion of debug information to be printed
                in the JavaScript console.

        Returns:
            str: A full HTML representation of the XLSForm.
        """
        language = lang if lang else self.language
        debug = True if 'debug' in kwargs and kwargs['debug'] else False
        html_questionnaire = ''
        data = {
            'header': {
                'title':
                self.get_title(settings=self.settings,
                               wb=self.metadata['raw_data'],
                               lang=lang)
            },
            'footer': {
                'data': self.to_json(pretty=True) if debug else 'false'
            },
            'questionnaire': self.questionnaire
        }

        # - Render Header
        # pylint: disable=no-member
        header = TEMPLATE_ENV.get_template('header.html')\
            .render(data=data['header'], **kwargs)
        # pylint: disable=no-member
        grp_spc = TEMPLATE_ENV\
            .get_template('content/group/group-spacing.html').render()
        html_questionnaire += header

        # - Render Body
        prev_item = None
        hlt = kwargs['highlight'] if 'highlight' in kwargs else False
        for index, item in enumerate(data['questionnaire']):

            if exclusion(item=item, settings=kwargs):
                continue

            if prev_item is not None and isinstance(item, OdkGroup):
                html_questionnaire += grp_spc
            elif isinstance(prev_item, OdkGroup) \
                    and not isinstance(item, OdkGroup):
                html_questionnaire += grp_spc
            if isinstance(item, OdkPrompt) and item.is_section_header and \
                    isinstance(data['questionnaire'][index+1], OdkGroup):
                html_questionnaire += \
                    item.to_html(language, hlt, **kwargs, bottom_border=True)
            else:
                html_questionnaire += item.to_html(language, hlt, **kwargs)
            prev_item = item
        OdkForm.warnings = OdkForm.warnings if OdkForm.warnings else 'false'

        # pylint: disable=no-member
        footer = TEMPLATE_ENV.get_template('footer.html')\
            .render(info=None, warnings=OdkForm.warnings,
                    data=data['footer']['data'], **kwargs)
        html_questionnaire += footer

        return html_questionnaire