Esempio n. 1
0
def infographic_pdf_extractor(impact_report, component_metadata):
    """Extracting infographic result and format it for PDF generation.

    :param impact_report: the impact report that acts as a proxy to fetch
        all the data that extractor needed
    :type impact_report: safe.report.impact_report.ImpactReport

    :param component_metadata: the component metadata. Used to obtain
        information about the component we want to render
    :type component_metadata: safe.report.report_metadata.
        QgisComposerComponentsMetadata

    :return: context for rendering phase
    :rtype: dict

    .. versionadded:: 4.0
    """
    # QGIS Composer needed certain context to generate the output
    # - Map Settings
    # - Substitution maps
    # - Element settings, such as icon for picture file or image source

    context = QGISComposerContext()

    # we only have html elements for this
    try:
        infographic_html = jinja2_output_as_string(
            impact_report, 'infographic-layout')
    except TemplateError:
        return context

    if infographic_html.strip():
        # get component object
        margin_left = 0
        margin_right = 0
        margin_top = 4.5
        margin_bottom = 0
        html_frame_elements = [
            {
                'id': 'infographic',
                'mode': 'text',
                'text': jinja2_output_as_string(
                    impact_report, 'infographic-layout'),
                'margin_left': margin_left,
                'margin_top': margin_top,
                'height': (
                    component_metadata.page_height -
                    margin_top -
                    margin_bottom),
                'width': (
                    component_metadata.page_width -
                    margin_left -
                    margin_right)
            }
        ]
        context.html_frame_elements = html_frame_elements
    return context
Esempio n. 2
0
def infographic_pdf_extractor(impact_report, component_metadata):
    """Extracting infographic result and format it for PDF generation.

    :param impact_report: the impact report that acts as a proxy to fetch
        all the data that extractor needed
    :type impact_report: safe.report.impact_report.ImpactReport

    :param component_metadata: the component metadata. Used to obtain
        information about the component we want to render
    :type component_metadata: safe.report.report_metadata.
        QgisComposerComponentsMetadata

    :return: context for rendering phase
    :rtype: dict

    .. versionadded:: 4.0
    """
    # QGIS Composer needed certain context to generate the output
    # - Map Settings
    # - Substitution maps
    # - Element settings, such as icon for picture file or image source

    context = QGISComposerContext()

    # we only have html elements for this
    try:
        infographic_html = jinja2_output_as_string(impact_report,
                                                   'infographic-layout')
    except TemplateError:
        return context

    if infographic_html.strip():
        # get component object
        margin_left = 0
        margin_right = 0
        margin_top = 4.5
        margin_bottom = 0
        html_frame_elements = [{
            'id':
            'infographic',
            'mode':
            'text',
            'text':
            jinja2_output_as_string(impact_report, 'infographic-layout'),
            'margin_left':
            margin_left,
            'margin_top':
            margin_top,
            'height':
            (component_metadata.page_height - margin_top - margin_bottom),
            'width':
            (component_metadata.page_width - margin_left - margin_right)
        }]
        context.html_frame_elements = html_frame_elements
    return context
Esempio n. 3
0
def impact_table_pdf_extractor(impact_report, component_metadata):
    """Extracting impact summary of the impact layer.

    For PDF generations

    :param impact_report: the impact report that acts as a proxy to fetch
        all the data that extractor needed
    :type impact_report: safe.report.impact_report.ImpactReport

    :param component_metadata: the component metadata. Used to obtain
        information about the component we want to render
    :type component_metadata: safe.report.report_metadata.
        ReportComponentsMetadata

    :return: context for rendering phase
    :rtype: dict

    .. versionadded:: 4.0
    """
    # QGIS Composer needed certain context to generate the output
    # - Map Settings
    # - Substitution maps
    # - Element settings, such as icon for picture file or image source

    context = QGISComposerContext()
    extra_args = component_metadata.extra_args

    html_report_component_key = resolve_from_dictionary(
        extra_args, ['html_report_component_key'])

    # we only have html elements for this
    html_frame_elements = [{
        'id':
        'impact-report',
        'mode':
        'text',
        'text':
        jinja2_output_as_string(impact_report, html_report_component_key),
        'margin_left':
        10,
        'margin_top':
        10,
    }]
    context.html_frame_elements = html_frame_elements
    return context
Esempio n. 4
0
def analysis_provenance_details_pdf_extractor(impact_report,
                                              component_metadata):
    """Extracting the main provenance details to its own pdf report.

    For PDF generations

    :param impact_report: the impact report that acts as a proxy to fetch
        all the data that extractor needed
    :type impact_report: safe.report.impact_report.ImpactReport

    :param component_metadata: the component metadata. Used to obtain
        information about the component we want to render
    :type component_metadata: safe.report.report_metadata.
        ReportComponentsMetadata

    :return: context for rendering phase
    :rtype: dict

    .. versionadded:: 4.1
    """
    # QGIS Composer needed certain context to generate the output
    # - Map Settings
    # - Substitution maps
    # - Element settings, such as icon for picture file or image source

    context = QGISComposerContext()

    # we only have html elements for this
    html_frame_elements = [{
        'id':
        'analysis-provenance-details-report',
        'mode':
        'text',
        'text':
        jinja2_output_as_string(impact_report,
                                'analysis-provenance-details-report'),
        'margin_left':
        10,
        'margin_top':
        10,
    }]
    context.html_frame_elements = html_frame_elements
    return context
Esempio n. 5
0
def impact_table_pdf_extractor(impact_report, component_metadata):
    """Extracting impact summary of the impact layer.

    For PDF generations

    :param impact_report: the impact report that acts as a proxy to fetch
        all the data that extractor needed
    :type impact_report: safe.report.impact_report.ImpactReport

    :param component_metadata: the component metadata. Used to obtain
        information about the component we want to render
    :type component_metadata: safe.report.report_metadata.
        ReportComponentsMetadata

    :return: context for rendering phase
    :rtype: dict

    .. versionadded:: 4.0
    """
    # QGIS Composer needed certain context to generate the output
    # - Map Settings
    # - Substitution maps
    # - Element settings, such as icon for picture file or image source

    context = QGISComposerContext()
    extra_args = component_metadata.extra_args

    html_report_component_key = resolve_from_dictionary(
        extra_args, ['html_report_component_key'])

    # we only have html elements for this
    html_frame_elements = [
        {
            'id': 'impact-report',
            'mode': 'text',
            'text': jinja2_output_as_string(
                impact_report, html_report_component_key),
            'margin_left': 10,
            'margin_top': 10,
        }
    ]
    context.html_frame_elements = html_frame_elements
    return context
def analysis_provenance_details_pdf_extractor(
        impact_report, component_metadata):
    """Extracting the main provenance details to its own pdf report.

    For PDF generations

    :param impact_report: the impact report that acts as a proxy to fetch
        all the data that extractor needed
    :type impact_report: safe.report.impact_report.ImpactReport

    :param component_metadata: the component metadata. Used to obtain
        information about the component we want to render
    :type component_metadata: safe.report.report_metadata.
        ReportComponentsMetadata

    :return: context for rendering phase
    :rtype: dict

    .. versionadded:: 4.1
    """
    # QGIS Composer needed certain context to generate the output
    # - Map Settings
    # - Substitution maps
    # - Element settings, such as icon for picture file or image source

    context = QGISComposerContext()

    # we only have html elements for this
    html_frame_elements = [
        {
            'id': 'analysis-provenance-details-report',
            'mode': 'text',
            'text': jinja2_output_as_string(
                impact_report, 'analysis-provenance-details-report'),
            'margin_left': 10,
            'margin_top': 10,
        }
    ]
    context.html_frame_elements = html_frame_elements
    return context