Пример #1
0
    def test_unlink_ucr_returns_none_if_not_linked(self):
        report = ReportConfiguration()
        report.domain = self.domain
        report.report_meta = ReportMeta()

        unlinked_report = unlink_report(report)

        self.assertIsNone(unlinked_report)
Пример #2
0
    def test_unlink_ucr_returns_unlinked_report(self):
        report = ReportConfiguration()
        report.domain = self.domain
        report.report_meta = ReportMeta(master_id='abc123')

        unlinked_report = unlink_report(report)

        self.assertIsNone(unlinked_report.report_meta.master_id)
    def test_unlink_ucr_returns_none_if_not_linked(self):
        report = ReportConfiguration()
        report.domain = self.domain
        report.config_id = '123abd'
        report.report_meta = ReportMeta()
        report.save()
        self.addCleanup(report.delete)

        unlinked_report = unlink_report(report)

        self.assertIsNone(unlinked_report)
Пример #4
0
    def _create_report(self, master_id=None):
        data_source = get_sample_data_source()
        data_source.domain = self.domain
        data_source.save()
        self.addCleanup(data_source.delete)

        report = ReportConfiguration()
        report.config_id = data_source.get_id
        report.domain = self.domain
        report.report_meta = ReportMeta()
        report.report_meta.master_id = master_id
        report.save()
        self.addCleanup(report.delete)
        return report
Пример #5
0
def _create_report(domain, title="report", upstream_id=None, should_save=True):
    data_source = DataSourceConfiguration(
        domain=domain,
        table_id=uuid.uuid4().hex,
        referenced_doc_type='XFormInstance',
    )
    data_source.save()
    report = ReportConfiguration(
        domain=domain,
        config_id=data_source._id,
        title=title,
        report_meta=ReportMeta(created_by_builder=True, master_id=upstream_id),
    )
    if should_save:
        report.save()

    return report
Пример #6
0
def MAKE_REPORT_CONFIG(domain, report_id, columns=None):
    columns = columns or [
        FieldColumn(type='field',
                    aggregation="simple",
                    column_id="color_94ec39e6",
                    display="color",
                    field="color_94ec39e6").to_json(),
    ]
    return ReportConfiguration(
        _id=report_id,
        title="Entry Report",
        aggregation_columns=["color_94ec39e6"],
        config_id="516c494736e95b023cc7845b557de0f5",
        domain=domain,
        report_meta=ReportMeta(builder_report_type="chart",
                               created_by_builder=True),
        columns=columns,
        configured_charts=[
            MultibarChartSpec(type='multibar',
                              chart_id="7451243209119342931",
                              x_axis_column="color_94ec39e6",
                              y_axis_columns=[
                                  GraphDisplayColumn(column_id="count",
                                                     display="count")
                              ]).to_json()
        ],
        filters=[
            DynamicChoiceListFilterSpec(
                type='dynamic_choice_list',
                display="owner name",
                field="computed_owner_name_40cc88a0",
                slug="computed_owner_name_40cc88a0_1").to_json(),
            ChoiceListFilterSpec(type='choice_list',
                                 display="fav color",
                                 field="fav_fruit_abc123",
                                 slug="fav_fruit_abc123_1",
                                 choices=[
                                     FilterChoice(value='a', display='apple'),
                                     FilterChoice(value='b', display='banana'),
                                     FilterChoice(value='c',
                                                  display='clementine'),
                                 ]).to_json()
        ],
    )
Пример #7
0
    def create_report(self):
        """
        Creates data source and report config.
        """
        matching_data_source = self.ds_builder.get_existing_match()
        if matching_data_source:
            data_source_config_id = matching_data_source['id']
        else:
            data_source_config_id = self._build_data_source()

        report = ReportConfiguration(
            domain=self.domain,
            config_id=data_source_config_id,
            title=self.report_name,
            aggregation_columns=self._report_aggregation_cols,
            columns=self._report_columns,
            filters=self._report_filters,
            configured_charts=self._report_charts,
            report_meta=ReportMeta(created_by_builder=True,
                                   builder_report_type=self.report_type))
        report.validate()
        report.save()
        return report
Пример #8
0
        existing_uuid = 'existing_uuid'
        self.assertEqual(
            existing_uuid,
            ReportAppConfig.wrap({
                "report_id": "report_id",
                "uuid": existing_uuid,
            }).uuid)


MAKE_REPORT_CONFIG = lambda domain, report_id: ReportConfiguration(
    _id=report_id,
    title="Entry Report",
    aggregation_columns=["color_94ec39e6"],
    config_id="516c494736e95b023cc7845b557de0f5",
    domain=domain,
    report_meta=ReportMeta(builder_report_type="chart",
                           created_by_builder=True),
    columns=[
        FieldColumn(type='field',
                    aggregation="simple",
                    column_id="color_94ec39e6",
                    display="color",
                    field="color_94ec39e6").to_json(),
    ],
    configured_charts=[
        MultibarChartSpec(type='multibar',
                          chart_id="7451243209119342931",
                          x_axis_column="color_94ec39e6",
                          y_axis_columns=[
                              GraphDisplayColumn(column_id="count",
                                                 display="count")
                          ]).to_json()
    def test_report_builder_datasource_deactivation(self):
        def _get_data_source(id_):
            return get_datasource_config(id_, self.project.name)[0]

        # Upgrade the domain
        # (for the upgrade to work, there has to be an existing subscription,
        # which is why we subscribe to advanced first)
        self._subscribe_to_advanced()
        pro_with_rb_sub = self._subscribe_to_pro_with_rb()

        # Create reports and data sources
        builder_report_data_source = DataSourceConfiguration(
            domain=self.project.name,
            is_deactivated=False,
            referenced_doc_type="XFormInstance",
            table_id="foo",
        )
        other_data_source = DataSourceConfiguration(
            domain=self.project.name,
            is_deactivated=False,
            referenced_doc_type="XFormInstance",
            table_id="bar",
        )
        builder_report_data_source.save()
        other_data_source.save()
        report_builder_report = ReportConfiguration(
            domain=self.project.name,
            config_id=builder_report_data_source._id,
            report_meta=ReportMeta(created_by_builder=True),
        )
        report_builder_report.save()

        # downgrade the domain
        community_sub = pro_with_rb_sub.change_plan(
            DefaultProductPlan.get_default_plan_version())

        # Check that the builder data source is deactivated
        builder_report_data_source = _get_data_source(
            builder_report_data_source._id)
        self.assertTrue(builder_report_data_source.is_deactivated)
        # Check that the other data source has not been deactivated
        other_data_source = _get_data_source(other_data_source._id)
        self.assertFalse(other_data_source.is_deactivated)

        # upgrade the domain
        # (for the upgrade to work, there has to be an existing subscription,
        # which is why we subscribe to advanced first)
        community_sub.change_plan(
            DefaultProductPlan.get_default_plan_version(
                edition=SoftwarePlanEdition.ADVANCED))
        pro_with_rb_sub = self._subscribe_to_pro_with_rb()

        # check that the data source is activated
        builder_report_data_source = _get_data_source(
            builder_report_data_source._id)
        self.assertFalse(builder_report_data_source.is_deactivated)

        # delete the data sources
        builder_report_data_source.delete()
        other_data_source.delete()
        # Delete the report
        report_builder_report.delete()

        # reset the subscription
        pro_with_rb_sub.change_plan(
            DefaultProductPlan.get_default_plan_version())