Exemple #1
0
def get_expanded_column_config(data_source_configuration, column_config, lang):
    """
    Given an ExpandedColumn, return a list of Column-like objects. Each column
    is configured to show the number of occurrences of one of the values present for
    the ExpandedColumn's field.

    This function also adds warnings to the column_warnings parameter.

    :param data_source_configuration:
    :param column_config:
    :param column_warnings:
    :return:
    """
    column_warnings = []
    try:
        vals, over_expansion_limit = get_distinct_values(
            data_source_configuration, column_config,
            column_config.max_expansion)
    except ColumnNotFoundError as e:
        return ColumnConfig([], warnings=[str(e)])

    if over_expansion_limit:
        column_warnings.append(
            _('The "{header}" column had too many values to expand! '
              'Expansion limited to {max} distinct values.').format(
                  header=column_config.get_header(lang),
                  max=column_config.max_expansion,
              ))

    from corehq.apps.userreports.sql.columns import expand_column
    column = expand_column(column_config, vals, lang)

    return ColumnConfig(column, warnings=column_warnings)
Exemple #2
0
def get_expanded_column_config(data_source_configuration, column_config, lang):
    """
    Given an ExpandedColumn, return a list of Column-like objects. Each column
    is configured to show the number of occurrences of one of the values present for
    the ExpandedColumn's field.

    This function also adds warnings to the column_warnings parameter.

    :param data_source_configuration:
    :param column_config:
    :param column_warnings:
    :return:
    """
    column_warnings = []
    try:
        vals, over_expansion_limit = get_distinct_values(
            data_source_configuration, column_config, column_config.max_expansion
        )
    except ColumnNotFoundError as e:
        return ColumnConfig([], warnings=[six.text_type(e)])

    if over_expansion_limit:
        column_warnings.append(_(
            'The "{header}" column had too many values to expand! '
            'Expansion limited to {max} distinct values.'
        ).format(
            header=column_config.get_header(lang),
            max=column_config.max_expansion,
        ))

    from corehq.apps.userreports.sql.columns import expand_column
    column = expand_column(column_config, vals, lang)

    return ColumnConfig(column, warnings=column_warnings)
Exemple #3
0
    def test_expansion(self):
        column = ReportColumnFactory.from_spec(
            dict(type="expanded",
                 field="lab_result",
                 display="Lab Result",
                 format="default",
                 description="foo"))
        cols = expand_column(column, ["positive", "negative"], "en")

        self.assertEqual(len(cols), 2)
        self.assertEqual(type(cols[0].view), SumWhen)
        self.assertEqual(cols[1].view.whens, {'negative': 1})
Exemple #4
0
    def test_expansion(self):
        column = ReportColumnFactory.from_spec(dict(
            type="expanded",
            field="lab_result",
            display="Lab Result",
            format="default",
            description="foo"
        ))
        cols = expand_column(column, ["positive", "negative"], "en")

        self.assertEqual(len(cols), 2)
        self.assertEqual(type(cols[0].view), SumWhen)
        self.assertEqual(cols[1].view.whens, {'negative': 1})