def handle(self, domains, **options): if not domains and not options['all']: raise CommandError('Specify specific domains or --all') all_domains = [domain.name for domain in get_call_center_domains() if domain.use_fixtures] if domains: for domain in domains: assert domain in all_domains, "Domain '{}' is not a Call Center domain".format(domain) else: domains = all_domains threshold = options['threshold'] domain_stats = get_call_center_data_source_stats(domains) for domain in domains: stats = domain_stats[domain] print('Checking domain:', domain) if stats.error: print('Error getting stats:\n', stats.error) continue for stat in stats.iter_data_source_stats(): diff = math.fabs(stat.ucr_percent - stat.es_percent) if diff > threshold: print("rebuilding data source '{}' in domain '{}': diff = {}".format( stat.name, domain, diff )) try: rebuild_indicators( StaticDataSourceConfiguration.get_doc_id(domain, TABLE_IDS[stat.name]) ) except Exception as e: sys.stderr.write("Error rebuilding data source '{}' in domain '{}':\n{}".format( stat.name, domain, e ))
def page_context(self): from corehq.apps.callcenter.data_source import get_call_center_domains from corehq.apps.callcenter.checks import get_call_center_data_source_stats if 'domain' not in self.request.GET: return {} domain = self.request.GET.get('domain', None) if domain: domains = [domain] else: domains = [dom.name for dom in get_call_center_domains() if dom.use_fixtures] domain_stats = get_call_center_data_source_stats(domains) context = { 'data': sorted(list(domain_stats.values()), key=lambda s: s.name), 'domain': domain } return context
def page_context(self): from corehq.apps.callcenter.data_source import get_call_center_domains from corehq.apps.callcenter.checks import get_call_center_data_source_stats if 'domain' not in self.request.GET: return {} domain = self.request.GET.get('domain', None) if domain: domains = [domain] else: domains = [dom.name for dom in get_call_center_domains() if dom.use_fixtures] domain_stats = get_call_center_data_source_stats(domains) context = { 'data': sorted(domain_stats.values(), key=lambda s: s.name), 'domain': domain } return context