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)
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
def tearDownClass(cls): ReportConfiguration.get_db().bulk_delete(cls.report_configs)
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)
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
def _delete_everything(cls): delete_all_cases() for config in DataSourceConfiguration.all(): config.delete() for config in ReportConfiguration.all(): config.delete()