def get_datasource_config(config_id, domain, data_source_type=DATA_SOURCE_TYPE_STANDARD): def _raise_not_found(): raise DataSourceConfigurationNotFoundError( _('The data source referenced by this report could not be found.')) if data_source_type == DATA_SOURCE_TYPE_STANDARD: is_static = id_is_static(config_id) if is_static: config = StaticDataSourceConfiguration.by_id(config_id) if config.domain != domain: _raise_not_found() else: try: config = get_document_or_not_found(DataSourceConfiguration, domain, config_id) except DocumentNotFound: _raise_not_found() return config, is_static elif data_source_type == DATA_SOURCE_TYPE_AGGREGATE: from corehq.apps.aggregate_ucrs.models import AggregateTableDefinition try: config = AggregateTableDefinition.objects.get(id=int(config_id), domain=domain) return config, False except AggregateTableDefinition.DoesNotExist: _raise_not_found() else: raise InvalidDataSourceType( '{} is not a valid data source type!'.format(data_source_type))
def spec(self): if self.is_static: return StaticReportConfiguration.by_id(self.report_config_id, domain=self.domain) else: return get_document_or_not_found(ReportConfiguration, self.domain, self.report_config_id)
def get_datasource_config(config_id, domain, data_source_type=DATA_SOURCE_TYPE_STANDARD): def _raise_not_found(): raise DataSourceConfigurationNotFoundError(_( 'The data source referenced by this report could not be found.' )) if data_source_type == DATA_SOURCE_TYPE_STANDARD: is_static = id_is_static(config_id) if is_static: config = StaticDataSourceConfiguration.by_id(config_id) if config.domain != domain: _raise_not_found() else: try: config = get_document_or_not_found(DataSourceConfiguration, domain, config_id) except DocumentNotFound: _raise_not_found() return config, is_static elif data_source_type == DATA_SOURCE_TYPE_AGGREGATE: from corehq.apps.aggregate_ucrs.models import AggregateTableDefinition try: config = AggregateTableDefinition.objects.get(id=int(config_id), domain=domain) return config, False except AggregateTableDefinition.DoesNotExist: _raise_not_found() else: raise InvalidDataSourceType('{} is not a valid data source type!'.format(data_source_type))
def __init__(self, domain, filters, report_id): report_config = ReportFactory.from_spec( get_document_or_not_found( ReportConfiguration, domain, report_id ) ) report_config.set_filter_values(filters) self.report_config = report_config
def _get_report_configuration(self, id_, domain): """ Fetch the required ReportConfiguration object :param id_: The id of the ReportConfiguration :param domain: The domain of the ReportConfiguration :return: A ReportConfiguration """ try: if report_config_id_is_static(id_): return StaticReportConfiguration.by_id(id_, domain=domain) else: return get_document_or_not_found(ReportConfiguration, domain, id_) except DocumentNotFound: raise NotFound
def _get_report_configuration(self, id_, domain): """ Fetch the required ReportConfiguration object :param id_: The id of the ReportConfiguration :param domain: The domain of the ReportConfiguration :return: A ReportConfiguration """ try: if report_config_id_is_static(id_): return StaticReportConfiguration.by_id(id_, domain=domain) else: return get_document_or_not_found(ReportConfiguration, domain, id_) except DocumentNotFound: raise NotFound
def get_report_config(config_id, domain): is_static = any( config_id.startswith(prefix) for prefix in [STATIC_PREFIX, CUSTOM_REPORT_PREFIX] ) if is_static: config = StaticReportConfiguration.by_id(config_id) if not config or config.domain != domain: raise ReportConfigurationNotFoundError else: try: config = get_document_or_not_found(ReportConfiguration, domain, config_id) except DocumentNotFound: raise ReportConfigurationNotFoundError return config, is_static
def compare_ucr_dbs(domain, report_config_id, filter_values, sort_column, sort_order, params): from corehq.apps.userreports.laboratory.experiment import UCRExperiment def _run_report(backend_to_use): data_source = ReportFactory.from_spec(spec, include_prefilters=True, backend=backend_to_use) data_source.set_filter_values(filter_values) if sort_column: data_source.set_order_by([ (data_source.top_level_columns[int(sort_column)].column_id, sort_order.upper()) ]) datatables_params = DatatablesParams.from_request_dict(params) page = list( data_source.get_data(start=datatables_params.start, limit=datatables_params.count)) total_records = data_source.get_total_records() json_response = { 'aaData': page, "iTotalRecords": total_records, } total_row = data_source.get_total_row( ) if data_source.has_total_row else None if total_row is not None: json_response["total_row"] = total_row return json_response spec = get_document_or_not_found(ReportConfiguration, domain, report_config_id) experiment_context = { "domain": domain, "report_config_id": report_config_id, "filter_values": filter_values, } experiment = UCRExperiment(name="UCR DB Experiment", context=experiment_context) with experiment.control() as c: c.record(_run_report(UCR_SQL_BACKEND)) with experiment.candidate() as c: c.record(_run_report(UCR_ES_BACKEND)) objects = experiment.run() return objects
def get_datasource_config(config_id, domain): def _raise_not_found(): raise DataSourceConfigurationNotFoundError( _('The data source referenced by this report could not be found.')) is_static = id_is_static(config_id) if is_static: config = StaticDataSourceConfiguration.by_id(config_id) if config.domain != domain: _raise_not_found() else: try: config = get_document_or_not_found(DataSourceConfiguration, domain, config_id) except DocumentNotFound: _raise_not_found() return config, is_static
def get_datasource_config(config_id, domain): def _raise_not_found(): raise DataSourceConfigurationNotFoundError(_( 'The data source referenced by this report could not be found.' )) is_static = config_id.startswith(StaticDataSourceConfiguration._datasource_id_prefix) if is_static: config = StaticDataSourceConfiguration.by_id(config_id) if not config or config.domain != domain: _raise_not_found() else: try: config = get_document_or_not_found(DataSourceConfiguration, domain, config_id) except DocumentNotFound: _raise_not_found() return config, is_static
def get_report_config(domain_name, ucr_id): report_config = get_document_or_not_found(ReportConfiguration, domain_name, ucr_id) return report_config
def spec(self): if self.is_static: return StaticReportConfiguration.by_id(self.report_config_id, domain=self.domain) else: return get_document_or_not_found(ReportConfiguration, self.domain, self.report_config_id)
def spec(self): if self.is_custom: return CustomReportConfiguration.by_id(self.report_config_id) else: return get_document_or_not_found(ReportConfiguration, self.domain, self.report_config_id)
def ucr(self) -> Optional[ReportConfiguration]: try: return get_document_or_not_found(ReportConfiguration, self.domain, self.ucr_id) except DocumentNotFound: return None
def get_report_config(domain_name, ucr_id): report_config = get_document_or_not_found(ReportConfiguration, domain_name, ucr_id) return report_config
def spec(self): return get_document_or_not_found( ReportConfiguration, self.domain, self.report_config_id)