Пример #1
0
 def setUpClass(cls):
     cls.data_source_id = 'd36c7c934cb84725899cca9a0ef96e3a'
     cls.domain = 'userreport-dbaccessors'
     cls.report_configs = [
         ReportConfiguration(domain=cls.domain,
                             config_id=cls.data_source_id, title='A'),
         ReportConfiguration(domain=cls.domain,
                             config_id=cls.data_source_id, title='B'),
         ReportConfiguration(domain=cls.domain,
                             config_id='asabsdjf', title='C'),
         ReportConfiguration(domain='mallory',
                             config_id=cls.data_source_id, title='X'),
     ]
     ReportConfiguration.get_db().bulk_save(cls.report_configs)
Пример #2
0
 def test_charts_to_json(self):
     # this tests a regression - namely that calling to_json on a chart config
     # when accessed via a report would crash.
     report = ReportConfiguration(configured_charts=[
         dict(type=u'pie',
              value_column=u'count',
              aggregation_column=u'remote',
              title=u'Remote status')
     ])
     chart = report.charts[0]
     chart.to_json()  # this is the line that used to crash
Пример #3
0
 def setUpClass(cls):
     cls.data_source_id = 'd36c7c934cb84725899cca9a0ef96e3a'
     cls.domain = 'userreport-dbaccessors'
     cls.report_configs = [
         ReportConfiguration(domain=cls.domain,
                             config_id=cls.data_source_id,
                             title='A'),
         ReportConfiguration(domain=cls.domain,
                             config_id=cls.data_source_id,
                             title='B'),
         ReportConfiguration(domain=cls.domain,
                             config_id='asabsdjf',
                             title='C'),
         ReportConfiguration(domain='mallory',
                             config_id=cls.data_source_id,
                             title='X'),
     ]
     ReportConfiguration.get_db().bulk_save(cls.report_configs)
Пример #4
0
 def tearDownClass(cls):
     ReportConfiguration.get_db().bulk_delete(cls.report_configs)
Пример #5
0
def get_sample_report_config():
    folder = os.path.join(os.path.dirname(__file__), 'data', 'configs')
    sample_file = os.path.join(folder, 'sample_report_config.json')
    with open(sample_file) as f:
        structure = json.loads(f.read())
        return ReportConfiguration.wrap(structure)
Пример #6
0
    def _build_report(cls):

        # Create Cases
        cls._new_case({'fruit': 'apple', 'num1': 4, 'num2': 6}).save()

        # Create report
        data_source_config = DataSourceConfiguration(
            domain=cls.domain,
            display_name='foo',
            referenced_doc_type='CommCareCase',
            table_id="woop_woop",
            configured_filter={
                "type": "boolean_expression",
                "operator": "eq",
                "expression": {
                    "type": "property_name",
                    "property_name": "type"
                },
                "property_value": cls.case_type,
            },
            configured_indicators=[
                {
                    "type": "expression",
                    "expression": {
                        "type": "property_name",
                        "property_name": 'fruit'
                    },
                    "column_id": 'indicator_col_id_fruit',
                    "display_name": 'indicator_display_name_fruit',
                    "datatype": "string"
                },
                {
                    "type": "expression",
                    "expression": {
                        "type": "property_name",
                        "property_name": 'num1'
                    },
                    "column_id": 'indicator_col_id_num1',
                    "datatype": "integer"
                },
                {
                    "type": "expression",
                    "expression": {
                        "type": "property_name",
                        "property_name": 'num2'
                    },
                    "column_id": 'indicator_col_id_num2',
                    "datatype": "integer"
                },
            ],
        )
        data_source_config.validate()
        data_source_config.save()
        tasks.rebuild_indicators(data_source_config._id)

        report_config = ReportConfiguration(
            domain=cls.domain,
            config_id=data_source_config._id,
            title='foo',
            aggregation_columns=['doc_id'],
            columns=[
                {
                    "type": "field",
                    "display": "report_column_display_fruit",
                    "field": 'indicator_col_id_fruit',
                    'column_id': 'report_column_col_id_fruit',
                    'aggregation': 'simple'
                },
                {
                    "type": "percent",
                    "display": "report_column_display_percent",
                    'column_id': 'report_column_col_id_percent',
                    'format': 'percent',
                    "denominator": {
                        "type": "field",
                        "aggregation": "sum",
                        "field": "indicator_col_id_num1",
                        "column_id": "report_column_col_id_percent_num1"
                    },
                    "numerator": {
                        "type": "field",
                        "aggregation": "sum",
                        "field": "indicator_col_id_num2",
                        "column_id": "report_column_col_id_percent_num2"
                    }
                },
            ],
        )
        report_config.save()
        return report_config
Пример #7
0
 def _delete_everything(cls):
     delete_all_cases()
     for config in DataSourceConfiguration.all():
         config.delete()
     for config in ReportConfiguration.all():
         config.delete()
Пример #8
0
    def _build_report(cls):

        # Create Cases
        cls._new_case({'fruit': 'apple', 'num1': 4, 'num2': 6}).save()

        # Create report
        data_source_config = DataSourceConfiguration(
            domain=cls.domain,
            display_name='foo',
            referenced_doc_type='CommCareCase',
            table_id="woop_woop",
            configured_filter={
                "type": "boolean_expression",
                "operator": "eq",
                "expression": {
                    "type": "property_name",
                    "property_name": "type"
                },
                "property_value": cls.case_type,
            },
            configured_indicators=[
                {
                    "type": "expression",
                    "expression": {
                        "type": "property_name",
                        "property_name": 'fruit'
                    },
                    "column_id": 'indicator_col_id_fruit',
                    "display_name": 'indicator_display_name_fruit',
                    "datatype": "string"
                },
                {
                    "type": "expression",
                    "expression": {
                        "type": "property_name",
                        "property_name": 'num1'
                    },
                    "column_id": 'indicator_col_id_num1',
                    "datatype": "integer"
                },
                {
                    "type": "expression",
                    "expression": {
                        "type": "property_name",
                        "property_name": 'num2'
                    },
                    "column_id": 'indicator_col_id_num2',
                    "datatype": "integer"
                },
            ],
        )
        data_source_config.validate()
        data_source_config.save()
        tasks.rebuild_indicators(data_source_config._id)

        report_config = ReportConfiguration(
            domain=cls.domain,
            config_id=data_source_config._id,
            title='foo',
            aggregation_columns=['doc_id'],
            columns=[
                {
                    "type": "field",
                    "display": "report_column_display_fruit",
                    "field": 'indicator_col_id_fruit',
                    'column_id': 'report_column_col_id_fruit',
                    'aggregation': 'simple'
                },
                {
                    "type": "percent",
                    "display": "report_column_display_percent",
                    'column_id': 'report_column_col_id_percent',
                    'format': 'percent',
                    "denominator": {
                        "type": "field",
                        "aggregation": "sum",
                        "field": "indicator_col_id_num1",
                        "column_id": "report_column_col_id_percent_num1"
                    },
                    "numerator": {
                        "type": "field",
                        "aggregation": "sum",
                        "field": "indicator_col_id_num2",
                        "column_id": "report_column_col_id_percent_num2"
                    }
                },
            ],
        )
        report_config.save()
        return report_config
Пример #9
0
 def _delete_everything(cls):
     delete_all_cases()
     for config in DataSourceConfiguration.all():
         config.delete()
     for config in ReportConfiguration.all():
         config.delete()
Пример #10
0
def get_sample_report_config():
    folder = os.path.join(os.path.dirname(__file__), 'data', 'configs')
    sample_file = os.path.join(folder, 'sample_report_config.json')
    with open(sample_file) as f:
        structure = json.loads(f.read())
        return ReportConfiguration.wrap(structure)
Пример #11
0
 def tearDownClass(cls):
     ReportConfiguration.get_db().bulk_delete(cls.report_configs)