def test_get_cell_promote(self): rd = report_data('points') ss = SeriesSpec(2, 0, dict(op='eq', args=['monique'])) ss.promote_colnos_to_headers(rd.instances[0]) self.assertEqual(2, ss.actual_data_colno(rd.instances[0])) self.assertEqual(0, ss.actual_filtering_colno(rd.instances[0])) self.assertEqual(210, ss.get_cell(rd.instances[0]).value) self.assertEqual(220, ss.get_cell(rd.instances[1]).value) self.assertEqual(265, ss.get_cell(rd.instances[2]).value) self.assertIsNone(ss.get_cell(rd.instances[3])) rep2 = reports.Report.insert( report_data('points').owner_id, 'points_colchange') res2 = rep2.process_input( json.dumps([ dict(points=300, user_name='john'), dict(points=400, user_name='monique'), ])) self.assertEqual(0, ss.actual_data_colno(res2.report_instance)) self.assertEqual(1, ss.actual_filtering_colno(res2.report_instance)) self.assertEqual(400, ss.get_cell(res2.report_instance).value) ss = SeriesSpec(2, 0, dict(op='eq', args=['monique'])) self.assertIsNone(ss.get_cell(res2.report_instance))
def test_get_cell_nopromote(self): rd = report_data('points') ss = SeriesSpec(2, 0, dict(op='eq', args=['monique'])) self.assertEqual(2, ss.actual_data_colno(rd.instances[0])) self.assertEqual(0, ss.actual_filtering_colno(rd.instances[0])) self.assertEqual(210, ss.get_cell(rd.instances[0]).value) self.assertEqual(220, ss.get_cell(rd.instances[1]).value) self.assertEqual(265, ss.get_cell(rd.instances[2]).value) self.assertIsNone(ss.get_cell(rd.instances[3]))
def main(): vars = tutorial.main() owner_id = vars['owner_id'] owner_dashboards = vars['owner_dashboards'] dashboard = vars['dashboard'] points_report = vars['points_report'] SECTION('Label-less report instances') numbers = Report.select_or_insert(owner_id, 'numbers') input = """\ 10 20 30 40 50 60 """ res = numbers.process_input(input) series_spec = SeriesSpec(1, -1, {'op': 'eq', 'args': ['1']}) print series_spec.get_cell(res.report_instance) metric = Report.select_or_insert(owner_id, 'metric') res = metric.process_input('32.4') series_spec = SeriesSpec(0, -1, {'op': 'eq', 'args': ['0']}) print series_spec.get_cell(res.report_instance) SECTION('Handling reordering of columns') input = """\ user_name is_active points john true 128 monique true 210 """ res = points_report.process_input(input, force_header=[0]) series_spec = SeriesSpec(2, 0, {'op': 'eq', 'args': ['monique']}) print series_spec.get_cell(res.report_instance) input_2 = """\ user_name points is_active john 128 true monique 210 true """ res_2 = points_report.process_input(input_2, force_header=[0]) print series_spec.get_cell(res_2.report_instance) series_spec.promote_colnos_to_headers(res.report_instance) print series_spec.get_cell(res_2.report_instance) SECTION('A lower-level interface to data series') from mqe.dataseries import SeriesDef, get_series_values from datetime import datetime series_spec = SeriesSpec(2, 0, {'op': 'eq', 'args': ['monique']}) series_id = SeriesDef.insert(points_report.report_id, [], series_spec) series_def = SeriesDef.select(points_report.report_id, [], series_id) series_values = get_series_values(series_def, points_report, from_dt=datetime(2017, 1, 1), to_dt=datetime(2018, 1, 1)) point_values = [sv.value for sv in series_values]