def get_report_config_or_not_found(domain, config_id): from corehq.apps.userreports.models import ReportConfiguration try: doc = ReportConfiguration.get_db().get(config_id) config = wrap_report_config_by_type(doc) except (ResourceNotFound, KeyError, ReportConfigurationNotFoundError): raise DocumentNotFound() if config.domain != domain: raise DocumentNotFound() return config
def by_id(cls, config_id, domain=None): """ Returns a ReportConfiguration object, NOT StaticReportConfigurations. :param domain: Optionally specify domain name to validate access. Raises ``DocumentNotFound`` if domains don't match. """ mapping = cls.by_id_mapping() if config_id not in mapping: mapping = cls.by_id_mapping(rebuild=True) metadata = mapping.get(config_id, None) if not metadata: raise BadSpecError( _('The report configuration referenced by this report could ' 'not be found.')) config = cls._get_from_metadata(metadata) if domain and config.domain != domain: raise DocumentNotFound( "Document {} of class {} not in domain {}!".format( config_id, config.__class__.__name__, domain, )) return config
def report_class_by_domain_and_id(cls, domain, config_id): try: report_domain, wrapped = cls.by_id_mapping()[config_id] except KeyError: raise BadSpecError( _('The report configuration referenced by this report could not be found.') ) if report_domain != domain: raise DocumentNotFound("Document {} of class {} not in domain {}!".format( config_id, ReportConfiguration.__class__.__name__, domain, )) return wrapped.custom_configurable_report
def by_id(cls, config_id, domain): """Returns a ReportConfiguration object, NOT StaticReportConfigurations. """ try: report_domain, wrapped = cls.by_id_mapping()[config_id] except KeyError: raise BadSpecError(_('The report configuration referenced by this report could ' 'not be found: %(report_id)s') % {'report_id': config_id}) if domain and report_domain != domain: raise DocumentNotFound("Document {} of class {} not in domain {}!".format( config_id, ReportConfiguration.__class__.__name__, domain, )) return cls._get_report_config(wrapped, report_domain)